1、LC并联谐振选频网络DOS 系统功能调用与BIOS 中断调用 (转载)DOS 系统功能调用与BIOS 中断调用一、DOS 系统功能调用1、什么是DOS 系统功能调用系统功能调用是DOS 为用户提供的常用子程序(80多个),可在汇编语言程序中直接调用。这些子程序的主要功能包括:(1设备管理(如键盘、显示器、打印机、磁盘等的管理)(2文件管理和目录操作(3其他管理(如内存、时间、日期等管理)这些子程序给用户编程带来很大方便,用户不必了解有关的设备、电路、接口等方面的问题,只需直接调用即可。2、调用方法DOS 功能调用的子程序已按顺序编号功能号(00H 68H ),其调用方法是:(1 功能号AH(2
2、 入口参数指定寄存器(3 INT 21H用户只须给出以上三方面信息,DOS 就可根据所给信息自动转入相关子程序执行。3、常用的系统功能调用(1键盘输入1号调用从键盘输入单个字符调用格式: MOV AH,1INT 21H功能:等待从键盘输入一个字符并送入AL 。执行时系统将扫描键盘,等待有健按下,一旦有健按下,就将其字符的ASCII 码读入,先检查是否Ctrl-Break ,若是,退出命令执行;否则将ASCII 码送AL ,同时将该字符送显示器显示。10号调用从键盘输入字符串功能: 从键盘接收字符串送入内存的输入缓冲区,同时送显示器显示。调用前要求:先定义一个输入缓冲区MAXLEN DB 100
3、 ;第1个字节指出缓冲区能容纳的字符个数,即缓冲区长度,不能为0 ACLEN DB ? ;第2个字节保留,以存放实际输入的字符个数STRING DB 100 DUP(? ;第3个字节开始存放从键盘输入的字符串。 调用格式: LEA DX,MAXLEN(缓冲区首偏移地址)MOV AH,10INT 21H注意:调用时,要求DS :DX 指向输入缓冲区【例】DATA SEGMENTMAXLEN DB 100ACLEN DB ?STRING DB 100 DUP(?DATA ENDSCODE SEGMENT MOV AX,DATAMOV DS,AX LEA DX,MAXLENMOV AH,10INT
4、21H CODE ENDS运行程序时,若从键盘输入“YOU ARE SUCESSFUL!”(共计19个字符),则输入缓冲区MAXLEN 各单元内容如下图740this.width=740 border=undefined缓冲区MAXLEN 各存储单元内容(2显示输出2号调用在显示器上显示输出单个字符调用格式: MOV DL,待显示字符的ASCII 码MOV AH,2INT 21H功能:将DL 中的字符送显示器显示。【例】显示输出大写字母AMOV DL,41H ;或写为 MOV DL,AMOV AH,2INT 21H9号调用在显示器上显示输出字符串调用格式: LEA DX,字符串首偏移地址MOV
5、 AH,9INT 21H功能:将当前数据区中DS :DX 所指向的以$结尾的字符串送显示器显示。【例】在显示器上显示字符串“YOU ARE SUCESSFUL!”DATA SEGMENTSTRING DB YOU ARE SUCESSFUL! $ DATA ENDSCODE SEGMENT MOV AX,DATAMOV DS,AXLEA DX,STRINGMOV AH,9INT 21H CODE ENDS说明:若希望显示字符串后,光标可自动回车换行,可在定义字符串时作如下更改:STRING DB YOU ARE SUCESSFUL! ,0AH ,0DH , $ ;在字符串结束前加回车换行的AS
6、CII 码0AH ,0DHNextPage二、BIOS 中断调用1、什么是BIOSBIOS 的全称是ROM-BIOS ROM Basic I/O System(只读存储器基本输入输出系统)。它是一组固化到微机主板上一个ROM 芯片上的子程序,主要功能包括:(1驱动系统中所配置的常用外设(即驱动程序),如显示器、键盘、打印机、磁盘驱动器、通信接口等。(2开机自检,引导装入。(3提供时间、内存容量及设备配置情况等参数。使用BIOS 中断调用与DOS 系统功能调用类似,用户也无须了解相关设备的结构与组成细节,直接调用即可。三、综合举例:简单的人机对话的实现屏幕显示:What s your name?
7、 (使用9号DOS 功能调用)用户输入:LiPing (使用10号DOS 功能调用)屏幕再显示:Hello, LiPing! (使用9号DOS 功能调用)程序清单:DATA SEGMENTBUF DB 30ACTL DB ?STR DB 30 DUP(?MESS DB What s your name?,0DH,0AH, $DMESS DB 0DH,0AH, Hello,$DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATAMAIN PROC FARPUSH DSMOV AX,0PUSH AXMOV AX,DATAMOV DS,AXLEA DX,MESSMOV
8、 AH,9INT 21H ;显示 What s your name?LEA DX,BUFMOV AH,10INT 21H ;从键盘接收用户输入的信息MOV AL,ACTL ;取得键入字符串的实际长度CBWMOV SI,AXLEA BX,STRMOV BX+SI,BYTE PTR ! ;在键入的字符串后加! MOV BX+SI+1,BYTE PTR $ ;在! 后加$,以便显示LEA DX,DMESS ;显示Hello! MOV AH,9INT 21HLEA DX,STR ;显示键入的字符串MOV AH,9INT 21HRETMAIN ENDPCODE ENDSEND MAIN740this.w
9、idth=740 border=undefined从上图可见,两者相比较,BIOS 可更直接地控制外设,故能完成更复杂的输入/输出操作;而DOS 操作对硬件依赖性少,比相应的BIOS 操作简单,因此在二者能完成同样功能时,应尽量使用DOS 功能调用。2、调用方法用户在汇编语言程序中可使用软中断指令“INT n”调用BIOS 程序,其中n 是中断类型码。常用的BIOS 程序的功能与其中断类型码对应关系如下表:中断类型码 BIOS中断调用功能10H 显示器I/O中断调用(即显示器驱动程序)16H 键盘驱动程序17H 打印机驱动程序13H 磁盘驱动程序14H 通信驱动程序例如,用指令“INT 16H
10、”可调用键盘驱动程序。当某个BIOS 程序中具有多种不同功能时,用不同的编号功能号加以区分,并约定功能号存放在寄存器AH 中。其调用方法与DOS 功能调用类似:(1 功能号AH(2 入口参数指定寄存器(3 指令“INT n”实现对BIOS 子程序的调用下面以键盘I/O中断调用为例介绍BIOS 中断调用的方法。3、键盘I/O中断调用示例键盘I/O中断调用(INT 16H)有三个功能,功能号为02。(1 AH=0功能:从键盘读入字符送 AL。 出口参数:(AL)键入字符的 ASCII 码;(AH)键入字符的扫描码 【例】MOV INT AH,0 16H 调用结果:将键盘输入字符的 ASCII 码送 AL,扫描码送 AH。 (2 AH=1 功能:从键盘读入字符送 AL,并设置 ZF 标志,若按过任一健,则置 ZF=0,否则 ZF=1。 出口参数:ZF=0 ,键盘有输入,(AL)键入字符的 ASCII 码; ZF=1,键盘无输入 (3 AH=2 功能:读取特殊功能建的状态。 出口参数:AL 中是各特殊功能键的状态(如下图)。 740this.width=740 border=undefined AL 中某位为 1,表示对应键按下;为 0 则表示未按下
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1