DOS系统功能调用
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
10
微机与接口技术
例:键入一字符串,把它存放内存中并在屏幕上显示。
DATA SEGMENT BUFSIZE DB 50 ACTCHAR DB ? CHARTEXT DB 50 DUP(20H) DB ‘ $’ DATA ENDS CODE SEGMENT MOV DX ,OFFSET BUFSIZE MOV AH,0AH INT 21H MOV DX, OFFSET CHARTEXT MOV AH,09H INT 21H
•由软盘或硬盘提供 •管理系统资源,例如设备管理、磁盘文件的管理。
2
微机与接口技术
4.3.2 DOS软中断和系统功能调用
INT n n=5~1F,BIOS调用; n=20~3F,DOS调用(INT 21H DOS 系统功能调用) 1.DOS软中断
设置 入口参数 执行 INT n 分析 出口参数
3
微机与接口技术
6
微机与接口技术
(2) 输入字符串(功能号=0AH) 此功能调用从键盘输入一串字符并把它存入用户指定的 缓冲区中。 MOV AH, 0AH LEA DX, <字符串缓冲区首地址> INT 21H 用户定义的输入字符串的缓冲区格式
N1 N2 (预留的N1个字节的存储单元) 0DH
N1: 缓冲区长度(最大键入字符数) N2: 实际键入的字符数(不包括回车符) 若用户键入的字符数(包括回车)≥定义的N1,本功能调用将不再 接收新的键入,且光标不再向右移动。
9
微机与接口技术
(2)显示字符串(功能号=9) MOV AH, 9 LEA DX, <字符串> INT 21H 注意:被显示的字符串必须以’$’结束。
例:在屏幕上显示:’HELLO,WORLD!’ ;在数据段定义字符串: DATA SEGMENT STR1 DB ‘HELLO,WORLD!$’ DATA ENDS ;在代码段中进行显示输出 MOV AH,9 LEA DX,STR1 INT 21H
MAIN PROC FAR CALL SUBR1;NEAR属性 RET MAIN ENDP ; SUBR1 PROC NEAR RET SUBR1 ENDP MAIN PROC FAR CALL SUBR1;NEAR属性
19
;------------------------------------------- 微机与接口技术 DATAREA SEGMENT PARA PUBLIC ‘ DATA’ OUTRANG DB ‘ERROR CODE IS NOT IN VALID RANGE(1~5)’, 0DH,0AH,‘ $’ ER1 DB ‘INVALID FUNCTION NUMBER’, 0DH,0AH,‘ $’ ER2 DB ‘FILE NOT FOUND’, 0DH,0AH,‘$’ ER3 DB ‘PATH NOT FOUND’, 0DH,0AH,‘ $’ ER4 DB ‘TOO MANY OPEN FILE’, 0DH,0AH,‘ $’ ER5 DB ‘ACCESS VIOLATION’, 0DH,0AH,‘ $’ EVEN ERTAB DW ER1,ER2,ER3,ER4,ER5 DATAREA ENDS ;------------------------------------------CODEREA SEGMENT PARA PUBLIC ‘ CODE’ ASSUME CS: CODEREA, DS:DATAREA TAB_ADDR: MOV BX,AX SHOW_ERR PROC FAR DEC BX START: … SHL BX,1 MOV SI, DATAREA MOV DX, ERTAB[BX] MOV DS, SI DISP_MSG: MOV AH,09 CMP AX,5 INT 21H JG OUTR RET CMP AX, 1 SHOW_ERR ENDP JGE TAB_ADDR CODEREA ENDS OUTR: LEA DX, OUTRANG ;-------------------------------JMP SHORT DISP_MSG END START
17
微机与接口技术
4.4.3 分支程序设计 1、分支程序结构
判定条件? 判定条件?
A
B
A
B
X
两路分支结构
多路分支结构
2、分支程序的设计方法
实现方法很多,最常用的方法有: •利用比较和条件转移指令实现分支; •利用逻辑尺控制分支; •利用地址跳转表实现分支。
18
微机与接口技术
例2.在调用DOS文件管理功能时,如出现错误(如使用了 非法的功能号),DOS则根据AX中的错误码,将相应的错 误信息显示出来。AX=1~5各表示一种错误,其错误信息 分别是ER1~ER5。AX除1~5之外的数码是无效的。 分析: 问题的关键是要找到AX的值与字符串地址ER1~ER5 的对应关系。因为每个字符串的长度是不一样的,所以 它们与AX的值没有直接的算术对应关系。 可构造一个地址跳转表,将目标地址ER1~ER5存放 在表中,此时,AX的值与跳转表中的各个字地址就建立 了对应关系:((AX)-1)×2,然后利用寄存器相对寻 址就能选择到具体字符串。
9、 INT 28H~3FH
4
微机与接口技术
2. DOS系统功能调用(INT 21H)
INT 21H 是一个具有近90个子功能的中断服务程序。这些子 功能的编号称为功能号。 INT 21H的功能: 设备管理:键盘输入、显示器输出、打印机输出等。 目录管理:查找目录项、查找文件、文件改名等。 文件管理:打开、关闭、读/写、删除文件等。 其它 使用方法: 置功能号AH 设置 入口参数 执行 INT n 分析 出口参数
13
微机与接口技术
4.4 汇编语言程序设计举例
4.4.1 概述
1.程序质量(自学) 2.汇编语言程序设计的步骤:
1-根据实际问题抽象出数学模型,确定算法 2-画出程序框图(流程图) 3-分配内存工作单元和寄存器 4-根据框图编写源程序,存成.ASM文件 5-对源程序汇编,生成.OBJ目标文件 6-把.OBJ文件连接成.EXE执行文件 7-运行、调试
1、 INT 20H 2、 INT 21H 3、 INT 22H 4、 INT 23H 5、 INT 24H 6、 INT 25H 7、 INT 26H 8、 INT 27H
程序结束,只适用于.COM文件,不适用于.EXE文件 系统功能调用。 结束退出,用户不能直接调用。 Ctrl-Break退出,用户不能直接调用。 出错退出,用户不能直接调用。 读盘。要求用户熟知磁盘结构。 写盘。要求用户熟知磁盘结构。 驻留退出。 DOS专用。
20
OUTRANG ER1
微机与接口技术
… …
ER2
… ……
ER3 ER4 ER5
ERTAB
…
ER1偏移地址 ER2偏移地址 ER3偏移地址 ER4偏移地址 ER5偏移地址
21
微机与接口技术
4.4.4 子程序(过程)设计
1.子程序设计方法 (1)过程定义为操作 procedure name PROC Attribute procedure name ENDP •调用程序和过程在同一代码段中,则使用NEAR属性; •调用程序和过程不在同一代码段中,则使用FAR属性; 例1.调用程序和过程在同一代码段中
5
微机与接口技术
1). DOS键盘功能调用 (1) 从键盘输入一个字符(功能号=1)
MOV AH,1 INT 21H <AL中有键入的字符> 例:程序中有时需要用户对提示做出应答。 GET_KEY: MOV AH,1 ;等待键入字符 INT 21H ;结果在AL中 CMP AL,’Y’ ;是’Y’? JZ YES ;是,转YES CMP AL,’N’ ;是’N’? JZ NO ;是,转NO JMP GET_KEY ;否则继续等待输入 YES: … … NO: …
开始 初始化循环计数值 BX循环左移四个数位 把最右面的4数位转换为ASCII码 是ASCII:A~F? 加上7
N
Y
显示一个字符
N
循环计数值=0?
Y
结束 16
PROGRAM SEGMENT 微机与接口技术 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 MAIN PROC FAR ASSUME CS:PROGRAM CF START: PUSH DS BX MOV AX,0 PUSH AX 第一次循环 ; 11 10 9 8 7 6 5 4 3 2 1 0 15 14 13 12 MOV CH,4 CF ROTATE: MOV CL,4 BX ROL BX,CL MOV AL,BL 第二次循环 7 6 5 4 3 2 1 0 15 14 13 12 11 10 9 8 AND AL, 0FH ADD AL,30H CF CMP AL,3AH BX JL PRINTIT 第三次循环 ADD AL,7H 3 2 1 0 15 14 13 12 11 10 9 8 7 6 5 4 PRINTIT: MOV DL,AL MOV AH,2 CF INT 21H BX DEC CH 第四次循环 JNZ ROTATE 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 RET CF MAIN ENDP PROGRAM ENDS BX END START
... ... ...
11
微机与接口技术
3) 打印机输出(功能号5) 入口参数:DL=被打印字符的ASCII码。 例如,将字符‘ ?’输出到打印机
MOV MOV INT AH, 5 DL,’?’ 21H
4) 磁盘文件管理 1)概述
DOS将磁盘化分为磁道、扇区。例如3.5寸,1.44MB盘有40磁 道,18扇区,512B/扇区 读写磁盘方式: BIOS:INT 13H DOS: INT 25H/26H; INT 21H
微机与接口技术
4.3 DOS和BIOS功能调用 4.3.1 概述
系统功能调用——由OS提供的一组实现特殊功能的子程 序供程序员在程序中调用,以减轻编程工作量。 系统功能调用有两种,一种称为DOS功能调用,另一种 称为BIOS功能调用。 用户程序在调用这些系统服务程序时,不是用CALL命 令,而是采用软中断指令INT n来实现。来自百度文库在DOS系统中,功能调用都是用软中断指令INT 21H来 实现的。
7
微机与接口技术
例:设在数据段定义键盘缓冲区如下: STR1 DB 10,?,10 DUP(?) 调用DOS功能的0AH号功能的程序段为: LEA DX,STR1 MOV AH,0AH INT 21H 此程序段最多从键盘接收10个按键(包括回车)。
8
微机与接口技术
2). DOS显示功能调用 (1) 在显示器上显示一个字符(功能号=2) MOV AH, 2 MOV DL, <要显示的字符> INT 21H 例:在显示器上显示一个字符‘A’ MOV AH, 2 MOV DL, ’A’ ;或MOV DL, 41H INT 21H
12
微机与接口技术
4.3.3 BIOS 调用 固化在ROM中的一组I/O服务程序。
调用过程 置功能号AH 设置 入口参数 执行 INT n 分析 出口参数
基本功能:(附表3.3)n=5~1FH
键盘输入(INT 16H) 打印机输出(INT 17H) 时间中断(INT 1AH) 伪中断(INT 1CH,INT 8H的扩展功能) 显示器输出(INT 10H)
3.源程序的基本结构:顺序、分支、循环、过程
14
微机与接口技术
4.4.2 循环程序设计 循环程序的结构形式
循环初始状态 循环初始状态 循环体 循环控制条件
Y
循环体 循环控制条件
N
N DO_WHILE
Y DO_UNTIL
15
微机与接口技术
例1.试编制一个程序把BX寄存器内的二进制数用十六进制数 的形式在屏幕上显示出来。(单重循环)
1
微机与接口技术
•BIOS(Basic Input and Output System) --IBM PC 及 PC/XT的基本I/O系统。
•固化在ROM中 •系统测试程序、初始化引导程序、中断矢量装入程序、外部设 备服务程序。
•DOS(Disk Operation System)-- IBM PC 及PC/XT的 磁盘操作系统。
微机与接口技术
例:键入一字符串,把它存放内存中并在屏幕上显示。
DATA SEGMENT BUFSIZE DB 50 ACTCHAR DB ? CHARTEXT DB 50 DUP(20H) DB ‘ $’ DATA ENDS CODE SEGMENT MOV DX ,OFFSET BUFSIZE MOV AH,0AH INT 21H MOV DX, OFFSET CHARTEXT MOV AH,09H INT 21H
•由软盘或硬盘提供 •管理系统资源,例如设备管理、磁盘文件的管理。
2
微机与接口技术
4.3.2 DOS软中断和系统功能调用
INT n n=5~1F,BIOS调用; n=20~3F,DOS调用(INT 21H DOS 系统功能调用) 1.DOS软中断
设置 入口参数 执行 INT n 分析 出口参数
3
微机与接口技术
6
微机与接口技术
(2) 输入字符串(功能号=0AH) 此功能调用从键盘输入一串字符并把它存入用户指定的 缓冲区中。 MOV AH, 0AH LEA DX, <字符串缓冲区首地址> INT 21H 用户定义的输入字符串的缓冲区格式
N1 N2 (预留的N1个字节的存储单元) 0DH
N1: 缓冲区长度(最大键入字符数) N2: 实际键入的字符数(不包括回车符) 若用户键入的字符数(包括回车)≥定义的N1,本功能调用将不再 接收新的键入,且光标不再向右移动。
9
微机与接口技术
(2)显示字符串(功能号=9) MOV AH, 9 LEA DX, <字符串> INT 21H 注意:被显示的字符串必须以’$’结束。
例:在屏幕上显示:’HELLO,WORLD!’ ;在数据段定义字符串: DATA SEGMENT STR1 DB ‘HELLO,WORLD!$’ DATA ENDS ;在代码段中进行显示输出 MOV AH,9 LEA DX,STR1 INT 21H
MAIN PROC FAR CALL SUBR1;NEAR属性 RET MAIN ENDP ; SUBR1 PROC NEAR RET SUBR1 ENDP MAIN PROC FAR CALL SUBR1;NEAR属性
19
;------------------------------------------- 微机与接口技术 DATAREA SEGMENT PARA PUBLIC ‘ DATA’ OUTRANG DB ‘ERROR CODE IS NOT IN VALID RANGE(1~5)’, 0DH,0AH,‘ $’ ER1 DB ‘INVALID FUNCTION NUMBER’, 0DH,0AH,‘ $’ ER2 DB ‘FILE NOT FOUND’, 0DH,0AH,‘$’ ER3 DB ‘PATH NOT FOUND’, 0DH,0AH,‘ $’ ER4 DB ‘TOO MANY OPEN FILE’, 0DH,0AH,‘ $’ ER5 DB ‘ACCESS VIOLATION’, 0DH,0AH,‘ $’ EVEN ERTAB DW ER1,ER2,ER3,ER4,ER5 DATAREA ENDS ;------------------------------------------CODEREA SEGMENT PARA PUBLIC ‘ CODE’ ASSUME CS: CODEREA, DS:DATAREA TAB_ADDR: MOV BX,AX SHOW_ERR PROC FAR DEC BX START: … SHL BX,1 MOV SI, DATAREA MOV DX, ERTAB[BX] MOV DS, SI DISP_MSG: MOV AH,09 CMP AX,5 INT 21H JG OUTR RET CMP AX, 1 SHOW_ERR ENDP JGE TAB_ADDR CODEREA ENDS OUTR: LEA DX, OUTRANG ;-------------------------------JMP SHORT DISP_MSG END START
17
微机与接口技术
4.4.3 分支程序设计 1、分支程序结构
判定条件? 判定条件?
A
B
A
B
X
两路分支结构
多路分支结构
2、分支程序的设计方法
实现方法很多,最常用的方法有: •利用比较和条件转移指令实现分支; •利用逻辑尺控制分支; •利用地址跳转表实现分支。
18
微机与接口技术
例2.在调用DOS文件管理功能时,如出现错误(如使用了 非法的功能号),DOS则根据AX中的错误码,将相应的错 误信息显示出来。AX=1~5各表示一种错误,其错误信息 分别是ER1~ER5。AX除1~5之外的数码是无效的。 分析: 问题的关键是要找到AX的值与字符串地址ER1~ER5 的对应关系。因为每个字符串的长度是不一样的,所以 它们与AX的值没有直接的算术对应关系。 可构造一个地址跳转表,将目标地址ER1~ER5存放 在表中,此时,AX的值与跳转表中的各个字地址就建立 了对应关系:((AX)-1)×2,然后利用寄存器相对寻 址就能选择到具体字符串。
9、 INT 28H~3FH
4
微机与接口技术
2. DOS系统功能调用(INT 21H)
INT 21H 是一个具有近90个子功能的中断服务程序。这些子 功能的编号称为功能号。 INT 21H的功能: 设备管理:键盘输入、显示器输出、打印机输出等。 目录管理:查找目录项、查找文件、文件改名等。 文件管理:打开、关闭、读/写、删除文件等。 其它 使用方法: 置功能号AH 设置 入口参数 执行 INT n 分析 出口参数
13
微机与接口技术
4.4 汇编语言程序设计举例
4.4.1 概述
1.程序质量(自学) 2.汇编语言程序设计的步骤:
1-根据实际问题抽象出数学模型,确定算法 2-画出程序框图(流程图) 3-分配内存工作单元和寄存器 4-根据框图编写源程序,存成.ASM文件 5-对源程序汇编,生成.OBJ目标文件 6-把.OBJ文件连接成.EXE执行文件 7-运行、调试
1、 INT 20H 2、 INT 21H 3、 INT 22H 4、 INT 23H 5、 INT 24H 6、 INT 25H 7、 INT 26H 8、 INT 27H
程序结束,只适用于.COM文件,不适用于.EXE文件 系统功能调用。 结束退出,用户不能直接调用。 Ctrl-Break退出,用户不能直接调用。 出错退出,用户不能直接调用。 读盘。要求用户熟知磁盘结构。 写盘。要求用户熟知磁盘结构。 驻留退出。 DOS专用。
20
OUTRANG ER1
微机与接口技术
… …
ER2
… ……
ER3 ER4 ER5
ERTAB
…
ER1偏移地址 ER2偏移地址 ER3偏移地址 ER4偏移地址 ER5偏移地址
21
微机与接口技术
4.4.4 子程序(过程)设计
1.子程序设计方法 (1)过程定义为操作 procedure name PROC Attribute procedure name ENDP •调用程序和过程在同一代码段中,则使用NEAR属性; •调用程序和过程不在同一代码段中,则使用FAR属性; 例1.调用程序和过程在同一代码段中
5
微机与接口技术
1). DOS键盘功能调用 (1) 从键盘输入一个字符(功能号=1)
MOV AH,1 INT 21H <AL中有键入的字符> 例:程序中有时需要用户对提示做出应答。 GET_KEY: MOV AH,1 ;等待键入字符 INT 21H ;结果在AL中 CMP AL,’Y’ ;是’Y’? JZ YES ;是,转YES CMP AL,’N’ ;是’N’? JZ NO ;是,转NO JMP GET_KEY ;否则继续等待输入 YES: … … NO: …
开始 初始化循环计数值 BX循环左移四个数位 把最右面的4数位转换为ASCII码 是ASCII:A~F? 加上7
N
Y
显示一个字符
N
循环计数值=0?
Y
结束 16
PROGRAM SEGMENT 微机与接口技术 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 MAIN PROC FAR ASSUME CS:PROGRAM CF START: PUSH DS BX MOV AX,0 PUSH AX 第一次循环 ; 11 10 9 8 7 6 5 4 3 2 1 0 15 14 13 12 MOV CH,4 CF ROTATE: MOV CL,4 BX ROL BX,CL MOV AL,BL 第二次循环 7 6 5 4 3 2 1 0 15 14 13 12 11 10 9 8 AND AL, 0FH ADD AL,30H CF CMP AL,3AH BX JL PRINTIT 第三次循环 ADD AL,7H 3 2 1 0 15 14 13 12 11 10 9 8 7 6 5 4 PRINTIT: MOV DL,AL MOV AH,2 CF INT 21H BX DEC CH 第四次循环 JNZ ROTATE 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 RET CF MAIN ENDP PROGRAM ENDS BX END START
... ... ...
11
微机与接口技术
3) 打印机输出(功能号5) 入口参数:DL=被打印字符的ASCII码。 例如,将字符‘ ?’输出到打印机
MOV MOV INT AH, 5 DL,’?’ 21H
4) 磁盘文件管理 1)概述
DOS将磁盘化分为磁道、扇区。例如3.5寸,1.44MB盘有40磁 道,18扇区,512B/扇区 读写磁盘方式: BIOS:INT 13H DOS: INT 25H/26H; INT 21H
微机与接口技术
4.3 DOS和BIOS功能调用 4.3.1 概述
系统功能调用——由OS提供的一组实现特殊功能的子程 序供程序员在程序中调用,以减轻编程工作量。 系统功能调用有两种,一种称为DOS功能调用,另一种 称为BIOS功能调用。 用户程序在调用这些系统服务程序时,不是用CALL命 令,而是采用软中断指令INT n来实现。来自百度文库在DOS系统中,功能调用都是用软中断指令INT 21H来 实现的。
7
微机与接口技术
例:设在数据段定义键盘缓冲区如下: STR1 DB 10,?,10 DUP(?) 调用DOS功能的0AH号功能的程序段为: LEA DX,STR1 MOV AH,0AH INT 21H 此程序段最多从键盘接收10个按键(包括回车)。
8
微机与接口技术
2). DOS显示功能调用 (1) 在显示器上显示一个字符(功能号=2) MOV AH, 2 MOV DL, <要显示的字符> INT 21H 例:在显示器上显示一个字符‘A’ MOV AH, 2 MOV DL, ’A’ ;或MOV DL, 41H INT 21H
12
微机与接口技术
4.3.3 BIOS 调用 固化在ROM中的一组I/O服务程序。
调用过程 置功能号AH 设置 入口参数 执行 INT n 分析 出口参数
基本功能:(附表3.3)n=5~1FH
键盘输入(INT 16H) 打印机输出(INT 17H) 时间中断(INT 1AH) 伪中断(INT 1CH,INT 8H的扩展功能) 显示器输出(INT 10H)
3.源程序的基本结构:顺序、分支、循环、过程
14
微机与接口技术
4.4.2 循环程序设计 循环程序的结构形式
循环初始状态 循环初始状态 循环体 循环控制条件
Y
循环体 循环控制条件
N
N DO_WHILE
Y DO_UNTIL
15
微机与接口技术
例1.试编制一个程序把BX寄存器内的二进制数用十六进制数 的形式在屏幕上显示出来。(单重循环)
1
微机与接口技术
•BIOS(Basic Input and Output System) --IBM PC 及 PC/XT的基本I/O系统。
•固化在ROM中 •系统测试程序、初始化引导程序、中断矢量装入程序、外部设 备服务程序。
•DOS(Disk Operation System)-- IBM PC 及PC/XT的 磁盘操作系统。