DOS功能调用一览表

合集下载

DOS功能调用

DOS功能调用
我们的DOS功能调用(01,02,09,0A,06(待定)),大家自己看一下吧,挺好理解的
1)9,0A的功能调用,具体的再问我
缓冲区里的东西在masm里看不到,到debug里用p查(具体怎么查不会的我明天给你们讲)
DATAS SEGMENT
STR1 DB "please enter your English name:$"
INT 21H
MOV AH,4CH
INT 21H
;此处输入代码段代码
CODES ENDS
END START
2)DATAS SEGMENT
;此处输入数据段代码
DATAS ENDS
STACKS SEGMENT
;此处输入堆栈段代码
assume cs:code
begin: mov ah,01
int 21h
cmp al,41h
jb l2
cmp al,5bh
jb l1
cmp al,61h
jb l2
MYNAME DB 10(字符的最大数),?(实际键入的字符数),10 DUP(?)(字符串的首地址)
;此处输入数据段代码
DATAS ENDS
STACKS SEGMENT
;此处输入堆栈段代码
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,DATAS
MOV DS,AX
MOV DL,'B'

dos功能调用演示

dos功能调用演示

功能:与1号功能相似。但不屏显。 3、不带显示的键盘字符输入(7号功能) 功能:与1号功能相似。但不屏显,且不响应CTRL+ C和TAB。 4、字符串输入(0AH号功能) 功能:可接受一串字符,用CTRL+C中断。
使用前,须在内存中建立一缓冲区,第一个字节存 放它保存的最大字符数(1~255,不能为0),该值由用 户程序事先设置;第2个字节存放实际调用的字符数(回 车除外),此数由DOS自动填入。用户输入的字符串从 第3个字节开始存放,直至回车结束(自动将回车符的 ASC码0DH加在末尾),如输入的字符超过缓冲区容量, 则多余字符不能存入。调用时须将DS、DX寄存器指向 缓冲区的段基址和偏移量。
补充: DOS功能子程序调用 DOS有许多功能子程序(84个),分为磁盘读写控 制、文件管理、目录管理、内存管理、基本输入/输出管 理等几类。 调用方法:
(1)送入口参数给指定寄存器
(2)AH←功能号
(3)INT 21H
1、带显示的键盘输入(1号功能) 功能:等待键盘输入一个字符,将其ASC码送AL,并 屏显。按CTRL+BREAK(CTRL+C)终止。 2、不带显示的键盘输入(8号功能)
2、组合型加法校正指令DAA
功能:在执行DAA前,已用过ADD或ADC指令,且加法 运算结果已在AL中,执行DAA即对AL中的数据进行校 正,校正结果仍在AL中,向高位的进位仅在CF中。
(1)若AL中低4位的数>9或AF=1,则AL=(AL)+6,AF←1 (2)若AL中高4位的数>9或CF=1,则AL=(AL)+60H,CF←1 3、非组合型减法校正指令AAS 功能:在执行AAS前,已用过SUB或SBB指令,且减法运 算结果已在AL中,执行AAS即对AL中的数据进行校正, 校正结果仍在AL中,向高位的借位放在AH和CF中。 若AL中低4位>9或AF=1,则AL=(AL)-6,AH =(AH)-1,且把AL中高4位清0,CF、AF置1。 4、组合型减法校正指令DAS 功能:在执行DAS前,已用过SUB或SBB指令,且减法运 算结果已在AL中,执行DAS即对AL中的数据进行校正, 校正结果仍在AL中,向高位的借位仅在CF中。 (1)若AL中低4位的数>9或AF=1,则AL=(AL)-6,AF←1 (2)若AL中高4位的数>9或CF=1,则AL=(AL)-60H,CF←1

DOS系统功能调用表

DOS系统功能调用表
(DS:DX+17)=新文件名
AL=00成功
AL=FF未成功
19
取当前缺省磁盘驱动器
AL=缺省的驱动器号0=A,1=B,2=C,...
1A
置DTA地址
DS:DX=DTA地址
1B
取缺省驱动器FAT信息
AL=每簇的扇区数
DS:BX=FAT标识字节
CX=物理扇区大小
DX=缺省驱动器的簇数
1C
取任一驱动器FAT信息
4B
装配/执行程序
DS:DX=ASCIIZ串地址
ES:BX=参数区首地址
AL=0装入执行
AL=3装入不执行
失败:AX=错误码
4C
带返回码结束
AL=返回码
4D
取返回代码
AX=返回代码
4E
查找第一个匹配文件
DS:DX=ASCII18)
4F
查找下一个匹配文件
DS:DX=ASCIIZ串地址
AL=00读成功
=01文件结束,记录中无数据
=02 DTA空间不够
=03文件结束,记录不完整
15
顺序写
DS:DX=FCB首地址
AL=00写成功
=01盘满
=02 DTA空间不够
16
建文件
DS:DX=FCB首地址
AL=00建立成功
=FF无磁盘空间
17
文件改名
DS:DX=FCB首地址
(DS:DX+1)=旧文件名
DL=字符(输出)
AL=输入字符
07
键盘输入(无回显)
AL=输入字符
08
键盘输入(无回显)
检测Ctrl-Break
AL=输入字符
09
显示字符串

计算机组成原理:DOS功能调用

计算机组成原理:DOS功能调用

DOS功能调用清单
功能号 12H 13H 14H 15H 16H 17H 18H 19H 1AH 功能名 搜索下一个匹配文件 删除文件 顺序读文件 顺序写文件 建立文件 文件改名 保留 获取当前驱动器 设置磁盘缓冲区地址 功能号 功能名 1BH 获取当前驱动器的分配信息 1CH 获取指定驱动器的分配信息 1DH 保留 1EH 保留 1FH 保留 20H 保留 21H 随机读文件 22H 随机写文件 23H 确定文件长度
有关输入的功能调用
6、0AH:这是输入并缓存字符串的功能调用。此调用等待键盘 打入字符,读入并把它们放在缓冲区中,直至遇到字符CR(回车 键)。打入的字符被反馈至显示器,在输入过程中检查是否打入 Ctrl-C,并做相应处理。 7、 0BH:此调用检查输入缓冲区中是否已有字符打入,若有, AL=FFH。否则AL=0。若缓冲区中有Ctrl-C,则发出中断23H。 8、 0CH:此调用使键盘输入缓冲区变空,然后它的功能取决于 AL中的值。 若AL=1、6、7、8、0AH,则完成相应号的功能调用。 若AL=0,则没有进一步处理。
有关输入的功能调用
4、07H:此调用等待键盘打入一个字符,并把此字符 送至AL中,但不把字符反馈至显示器,也不检查是否打 入Ctrl-C。 5、 08H:此调用等待键盘打入一个字符,并把此字符 送至AL中,检查是否打入Ctrl-C,并做相应处理,但并不 把字符反馈至显示器。 功能调用07H、 08H,对于要求对打入的字符保密的 应用情况,例如打入口令字(pass word)的场合是合适 的。
有关输出的功能调用
1、02H:此调用显示DL中的字符。若打入Ctrl-C,则发出中断 23H。 2、 04H:此调用把在DL中的字符送至辅助输出设备;并不返回 状态或错误码。 3、 05H:此调用在标准的打印设备上打印DL中的字符。若控制 台已经打入了Ctrl-C,则发出中断23H。 4、09H:此调用输出在指定缓冲区中的字符串(必须以字符“$” 结尾)。 利用上述的有关I/O的功能调用就可以实现人—机对话;输入过 程所必需的参数;输出机器处理的结果。

第九讲_DOS功能调用

第九讲_DOS功能调用

中断向量分配表
类型号 00H 01H 02H 03H 04H 05H 06-07H 08H 09H 0AH 0BH 0CH 0DH 0EH 0FH 中断功能名称 除零错误 单步执行 非屏蔽中断 断点设置 溢出错误 屏幕打印 保留 定时器中断 键盘中断 保留 串行通信中断 保留 硬盘中断 软盘中断 打印机中断 BIOS BIOS BIOS BIOS BIOS BIOS BIOS BIOS 可屏蔽硬中断 可屏蔽硬中断 可屏蔽硬中断 可屏蔽硬中断 可屏蔽硬中断 可屏蔽硬中断 可屏蔽硬中断 可屏蔽硬中断 模 块 BIOS BIOS BIOS BIOS BIOS BIOS 中 断 源 CPU 内部操作 DEBUG 程序 非屏蔽硬中断 DEBUG 程序 CPU 内部操作 INT 指令
2. 中断类型分类 向量表中的中断类型分为七类: ① 处理CPU特殊操作( 除0、溢出 )的00H、04H类型。 ② 为DEBUG调试程序设置的单步( 01H )、断点( 03H )类型。 ③ 处理CPU的NMI引脚信号的02H类型。 非屏蔽硬中断子程 NMI 8088
④ 处理CPU的INTR引脚信号的08~0FH类型。 可屏蔽类型硬中断子程 ⑤ 用INT指令调用的中断子程 BIOS功能调用(如10~1AH) DOS功能调用 (如 21H)
在AH设置功能号m 执行中断指令INT N
分析、应用出口参数
例1
单字符显示功能调用 MOV DL, ‘A’ INT 21H ;设置入口参数 ;执行中断调用 MOV AH, 02H ;设置功能号
例2
单字符输入功能调用
MOV AH, 01H ;设置功能号 INT JZ 、、、 21H exit ;执行中断调用
ROM BIOS 基本I/O 向 MSDOS.SYS提供设备驱动服务。 系 统 硬

DOS系统功能调用 (21H类型中断调用)

DOS系统功能调用 (21H类型中断调用)
data SEGMENT ;定义显示的子符串
stri DB‘Tsinghua University’,‘$’
data ENDS
code SEGMENT
ASSUME CS:code, DS:data
start: MOV AX, data ;置缓冲区地址于DS:DX
MOV DS, AX
LEA DX, stri
129E:0003 8ED8 MOV DS , AX
129E:0005 8D160000 LEA DX , [0000]
129E:0009 B40A MOV AH , 0A
129E:000B CD21 INT 21
129E:000D B500 MOV CH , 00
129E:000F 8A0E0100 MOV CL , [0001]
129F:000B CD21 INT 21
129F:000D 8D160F00 LEA DX ,[000F]
129F:0011 B40A MOV AH , 0A
129F:0013 CD21 INT 21
129F:0015 B44C MOV AH , 4C
129F:0017 CD21 INT 21
-D 129D:0 L20 ;执行程序前查看data段内容
-G 000D ;执行程序
Hello ;从键盘输入字符串
Program terminated normally
-D 129D:0 L10 ;查看程序执行后缓冲区内容
129D:0000 0B 05 48 65 6C 6C 6F 0D-00 00 00 00 00 00 00 00 ..Hello.........
129D:0000 50 6C 65 61 73 65 20 49-6E 70 75 74 20 3A 24 0B Please Input :$.

DOS和BIOS 功能调用大全

DOS和BIOS 功能调用大全

鼠标INT 33H系统中断系统功能调用--鼠标INT33H是关于鼠标功能的系统中断。

功能号由 AX 给出(和其它功能调用略有不同, 使用时注意)。

功能码功能入口参数出口参数AX=0 鼠标复位及取状态AX=-1: 安装成功AX=0: 安装失败BX: 鼠标键数AX=1 显示鼠标光标AX=2 鼠标光标消隐AX=3 取按键状态及鼠标位置(CX,DX)为当前坐标BX最低三位表示按键信息bit 0 - 左键,按下时为1bit 1 - 右键,按下时为1bit 2 - 中键,按下时为1 AX=4 设置鼠标光标位置CX = 横坐标DX = 纵坐标AX=7 设置水平坐标范围CX = X的最小值DX = X的最大值AX=8 设置垂直坐标范围CX = Y的最小值DX = Y的最大值BIOS和DOS中断大全DOS中断:INT 21H1、字符功能调用类(Character-Oriented Function)01H、07H和08H —从标准输入设备输入字符02H —字符输出03H —辅助设备的输入04H —辅助设备的输出05H —打印输出06H —控制台输入/输出09H —显示字符串0AH —键盘缓冲输入0BH —检测输入状态0CH —清输入缓冲区的输入功能(1)、功能01H、07H和08H功能描述:从标准输入设备(如:键盘)读入一个字符。

该中断在处理过程中将一直处于等待状态直到有字符可读为止。

该输入还可被重定向,如果这样做,则无法判断文件是否已到文件尾入口参数:AH=01H,过滤掉控制字符,并回显=07H,不过滤掉控制字符,不回显=08H,过滤掉控制字符,不回显出口参数:AL=输入字符的ASCII码(2)、功能02H功能描述:向标准输出设备(如:屏幕)输出一个字符。

该输出还可被重定向,如果这样做,则将无法判断磁盘是否满入口参数:AH=02HDL=待输出字符的ASCII码出口参数:无(3)、功能03H功能描述:从辅助设备读入一个字符,该辅助设备的缺省值为COM1入口参数:AH=03H出口参数:AL=读入字符的ASCII码(4)、功能04H功能描述:向辅助设备输出一个字符,该辅助设备的缺省值为COM1入口参数:AH=04HDL=待输出字符的ASCII码出口参数:无(5)、功能05H功能描述:向标准的输出设备输出一个字符。

计算机原理第A章:常用的DOS系统功能调用

计算机原理第A章:常用的DOS系统功能调用
1 常用DOS功能调用
1. 单字符输入(1号调用) 2. 单字符显示(2号调用) 3. 打印输出(5号调用) 4. 结束调用(4CH号调用) 5. 显示字符串(9号调用) 6. 字符串输入(10号调用)
2 常用DOS功能调用
1. 单字符输入(1号调用)
格式: MOV AH,1
INT
21H
功能:从键盘输入字符的ASCII码送入寄存 器AL中,并送显示器显示
说明:缓冲区的第一个字节保 存最大字符数,这个最大字符 数由用户程序给出。如果键入 的字符数比此数大,机器发出 嘟嘟声。第二个字节存放实际 输入的字节数,这个不是由用 户填入的而由功能A填入的。 在这两个字节之后,才是我们 输入的字符串。
4. 结束调用(4CH号调用)
格式:MOV AH,4CH
INT 21H
功能:终止当前程序并返回调用程序
4 常用DOS功能调用
5. 显示字符串(9号调用)
格式:LEA DX,待显示字符串首偏移地址 MOV AH,9 INT 21H
功能:将当前数据区中以‘$’结尾的字符串送显 示器显示
6. 字符串输入(10号调用)
格式:LEA DX,缓冲区首偏移地址 MOV AH,10 INT 21H
功能:从键盘上输入一字符串到用户定义的输入缓 冲区中,并送显示器显示
5 常用DOS功能调用
maxlen db 32 actlen db ? strinxlen mov ah,0ah int 21h
2. 单字符显示(2号调用)
格式:MOV DL,待显示字符的ASCII码
MOV AH,2
INT 21H
功能:将DL寄存器中的字符送显示器显示.
3 常用DOS功能调用
3. 打印输出(5号调用)

DOS功能调用一览表 2

DOS功能调用一览表 2
38H
返回国家代码
入口
AH=38H AL=00当前国家代码
BX=16位的国家代码
DS:DX=数据缓冲区地址
出口
AX=错误代码,如果进位位为1。
BX=国家代码
DS:DX=数据缓冲地址
39H
创建子目录
入口
AH=39H
DS:DX=ASCII-Z字符串子目录名的地址
出口
AX=错误代码,如果进位位为1。
注释
ASCII-Z字符串表示的子目录名是指一串以00H结尾,而不是以回车符或换行符结尾的ASCII码。
DS:DX=FCB地址
出口
AL=OOH成功
O1H磁盘满
O2H段环绕,DTA空间太小
CX=所写的记录数
29H
Q分析命令行(FCB)
入口
AH=29H AL=分析掩码
DS:SI=FCB的地址
DS:DI=命令行地址
出口
AL=OOH没有找到文件名字符串
AL=O1H找到文件名字符串
AL=OFFH表示驱动器指示符错
出口
如果CF=l,AX=出错代码
如果CF=O,AX=文件句柄
注释
访问码AL=OOH为只读访问,AL=O1H是只写访问,AL=O2H是读写访问。对于网络环境下共享文件,AL第4位等于1表示拒绝读写,AL第5位等于l表示拒绝写,AL第4位和第5位等于1表示拒绝读,AL第6位等于1表示无意义,AL第7位等于0使衍此文件被子进程继承,而AL第7位等于1表示文件被限制于当前进程。
注释
缺省情况下磁盘写校验是被禁止的
2FH
读磁盘传输区
入口
AH=2FH
出口
ES:BX=磁盘传输区(DTA)地址
30H

第3章汇编语言程序设计-3.4DOS系统功能调用

第3章汇编语言程序设计-3.4DOS系统功能调用

№ 13
3)打印输出类

MOV AH , 5 MOV DL , ’待打印字符’ INT 21H
№ 14
3.4.3 . BIOS调用 (P391 附录5)
和DOS功能调用类似:
也用 INT n 指令,但 n = 5~1FH 也有功能号,取入AH 有的也有入口参数,取入有关寄存器 有的也有出口参数 也有键盘、显示器、打印等管理 其中显示调用INT 10H功能丰富。
DS , (用户程序段基址址) 21H
INT
读出原矢量(DOS功能调用): 出口
MOV MOV INT
AH , 35H AL , (中断类型号) 21H
: BX=原矢量偏移地址 ES =原矢量段基址 再将读出的矢量存入安全的地方保护 。
№ 23
程序结束返回DOS 的非标准方法 在代码段结束之前(即CODE ENDS之前) 增加两句: MOV AH,4CH INT 21H ;4CH号的DOS系统功能调用
…… RET 名字 ENDP № 25


№ 15
P17图1.8 IBM PC 及 PC/XT 系统板功能结构图
№ 16
时间中断

1. 系统时钟构成
(8253芯片)
INT 8 中断服务程序 0046CH~0046FH
加 1 计数(32位) 低16位计满为216 = 1小时
IRQ0信号 55ms定时 18.2次/秒
故0046DH : 0046CH以55mS为单位计数
0AH功能注意事项: ◢ 输入的字符均带回显,且光标随字符移动。当输入回车符结束 时,光标回到了行首。 ◢ 回车符0DH作为一个输入的字符存放在字符串尾,但不计数。 实际最多能输入的字符数 = 限制的最多数-1 (回车符占1个) ◢ 执行完0AH功能后,DS和DX的值不变,仍指向缓冲区首地址。 ◢ 整个缓冲区的大小应为:限制的最多数 +2 №9

DOS系统功能调用表

DOS系统功能调用表

3D 3E
3F
读文件或设 备
DS:DX=数据 缓冲区地址 写成功: BX=文件代 号 AX=实际写 入的字节数
40
写文件或设 备
CX=写入的 字节数
写出错:AX= 错误码
41
42
43
成功:AX=00 DS:DX=ASC 出错:AX=错 IIZ串地址 删除文件 误码(2,5) 成 功:DX:AX= BX=文件代 新文件指针 号 位置 CX:DX=位移 出错:AX=错 量 误码 AL=移动方 式(0:从文件 头绝对位 移,1:从当前 位置相对移 移动文件指 动,2:从文件 针 尾绝对位移) DS:DX=ASC 成功:CX=文 件属性 IIZ串地址 AL=0 取文 失败:CX=错 件属性 误码 AL=1 置文 件属性 置/取文件属 CX=文件属 性 性 BX=文件代 号 AL=0 取状 态 =1 置状态 DX =2 读数据 =3 写数据 =6 取输入 状态 设备文件I/O =7 取输出 DX=设备信 控制 息 状态 成功:AX=文 件代号2 复制文件代 BX=文件代 失败:AX=错 号1 号 误码 BX=文件代 号1 人工复制文 CX=文件代 失败:AX=错 件代号 误码 号2 DL=驱动器 (DS:SI)=AS 号 CIIZ串 取当前目录 DS:SI=ASCI 失败:AX=出 路径名 IZ串地址 错码 成功:AX=分 配内存首地 分配内存空 BX=申请内 失败:BX=最 间 存容量 大可用内存 释放内容空 ES=内存起 失败:AX=错 间 始段地址 误码 ES=原内存 失败:BX=最 起始地址 大可用空间
44
45
46
47
48 49
4A
调整已分配 的存储块
4B 4C 4D
BX=再申请 AX=错误 的容量 码 DS:DX=ASC IIZ串地址 ES:BX=参数 区首地址 AL=0 装入 执行 装配/执行程 AL=3 装入 失败:AX=错 序 误码 不执行 带返回码结 束 AL=返回码 AX=返回代 码 取返回代码 DS:DX=ASC AX=出错代 查找第一个 IIZ串地址 码(02,18) CX=属性 DS:DX=ASC IIZ串地址 查找下一个 (文件名中带 AX=出错代 码(18) 匹配文件 有?或*) AL=当前标 取盘自动读 写标志 志值 DS:DX=ASC IIZ串(旧) ES:DI=ASCI AX=出错码 (03,05,17) 文件改名 IZ串(新) BX=文件代 DX:CX=日期 号 和时间 失败:AX=错 AL=0 读取 误码 置/取文件日 AL=1 设置 期和时间 (DX:CX) 成功:AX=策 AL=0 取码 略码 取/置分配策 AL=1 置码 失败:AX=错 略码 (BX) 误码 AX=扩充错 误码 BH=错误类 型 BL=建议的 操作 取扩充错误 CH=错误场 码 所 CX=文件属 成功:AX=文 性 件代号 建立临时文 DS:DX=ASC 失败:AX=错 件 IIZ串地址 误码 CX=文件属 成功:AX=文 性 件代号 DS:DX=ASC 失败:AX=错 建立新文件 IIZ串地址 误码 匹配文件 AL=00封锁 =01开启 BX=文件代 号 CX:DX=文件 位移 :AX=

DOS功能调用

DOS功能调用
取系统日期
CX=年(1980-2099)
DH:DL=月:日
AL=星期(0=星期日)
2BH
置系统日期
CX:DH:DL=年:月:日
AL=00H成功
AL=0FFH失败
2CH
取系统时间
CH=时(0-23)
CL=分
DH=秒
DL=百分之几秒
2DH
置系统时间
CH=时(0-23)
CL=分
DH=秒
DL=百分之几秒
AL=00H成功
AL=0取状态
AL=1置状态
AL=2读数据
AL=3写数据
AL=6取输入状态
AL=7取输出状态
DX=设备信息
45H
复制文件代号
BX=文件代号1
CF=0成功,AX=新文件代号
CF=1失败,AX=错误码
46H
强行复制文件代号
BX=文件代号1
CX=文件代号2
CF=0成功
CF=1失败,AX=错误码
47H
取当前目录路径名
BX=文件代号
CX:DX=位移量
AL=移动方式(0,1,2)
CF=0成功,DX:AX=新的文件指针
CF=1失败,AX=错误码
43H
取/置文件属性
DS:DX=路径字符串地址
AL=0取文件属性
AL=1置文件属性
CX=文件属性
CF=0成功,CX=文件属性
CF=1失败,AX=错误码
44H
设备输入/输出控制
BX=文件代号
取缺省驱动器的DPB
DS:BX=DPB首址
*20H
保留未用
21H
随机读
DS:DX= FCB首地址
AL=00H成功

DOS功能调用一览表 3

DOS功能调用一览表 3
入口
AH=4AH BX=新请求块的大小
ES=要修改块的段地址
出口
若CF=0,则BX=最大可用的内存字节数
4BH
装载或运行一个程序
入口
AH=4BH AL=功能号
ES:BX=参数块地址
DS:DX=ASCII-Z串命令地址
出口
若CF=l,指示错误
注释
功能块的含义:AL=00H装入并执行程序;AL=0lH装入程序,但不执行;AL=03H装入程序覆盖;AL=05H进入EXEC状态。图A-6显示了此功能所用的参数块的情况
0034H=网络上的名字重复
0035H=网络名未找到
0036H=网络忙
0037H=设备在网上已不存在
0038H=超出NetBIOS命令限制
0039H=网络适配器硬件中的错误
003AH=从网络来的响应不正确
003BH=未预料的网络错误
003CH=远程适配器不相容
003DH=打印机队列满
003EH=没有足够的地方打印文件
种类:OOH=未知,OlH=COM口,O2H=CON,O5H=LPT口功能:
CL=45H:设置重复计数
CL=4AH:选择代码页
CL=4CH:起动代码页准备
CL=4DH:结束代码页准备
CL=5FH:设置显示信息
CL=65H:得到重复次数
CL=6AH查询被选代码页
CL=6BH:查询准备清单
CL=7FH:得到显示信息
CX=属性字(可参看3CH功能的介绍)
DS:DX=ASCII-Z串文件名地址
出口
若CF=1 AX=出错代码
若CF=0 AX=属性字
44H
I/0设备控制(IOTCL)
入口
AH=44H

DOS功能调用大全

DOS功能调用大全

一、21H号中断类型(INT 21H)的各功能详解。

00H号功能——程序终止入口参数:AH=0;功能号CS已指定返回值:无。

01H号功能——键盘输入并回显。

[检测break(Ctrl+C)]入口参数:AH=01H;功能号返回值:AL=输入的字符。

02H号功能——显示输出。

[检测break(Ctrl+C)]入口参数:AH=02H;功能号DL=要显示的字符返回:光标移动。

03H号功能——异步通讯输入。

入口参数:AH=03H;功能号返回值:AL=输入的数值04H号功能——异步通讯输出。

入口参数:AH=04H;功能号DL=要输出的数值返回值:无05H号功能——打印机输出。

[自动检测打印机]入口参数:AH=05H;功能号DL=要输出的数值返回值:无06H号功能——直接控制台I/O(输入/输出)。

[[不检测break(Ctrl+C)]] 入口参数1:AH=06H;功能号DL=要输出的字符(DL<0FFH)功能1:输出返回1:光标移动入口参数2:AH=06H ;功能号DL=0FFH功能2:输入返回2:AL=输入的字符07H号功能——键盘输入但不回显。

入口参数:AH=07H;功能号返回值:AL=输入的字符。

08H号功能——键盘输入但不回显。

[检测break(Ctrl+C)]入口参数:AH=08H;功能号返回值:AL=输入的字符。

说明:如果返回AL=0,则是扩展ASC码,要再次调用才能取得扩展ASC码。

例:mov ah,8int 21hcmp al,0jnz ----- 是ASC码,去处理ASC码。

mov ah,8int 21h ;这次AL返回扩展ASC码。

09H号功能——显示字符串。

入口参数:AH=09H;功能号DS:DX=串地址。

串必须以'$'字符结尾。

返回:光标移动。

0AH号功能——键盘输入字串到缓冲区。

入口参数:AH=0AH;功能号DS:DX=缓冲区地址。

缓冲区首字节=缓冲区字节数。

常用的DOS功能

常用的DOS功能

常用的DOS功能调用:1.键盘输入并显示(1号功能调用)格式:MOV AH, 01HINT 21H功能:按下任何键,将其对应字符的ASCII码送入AL中,并在屏幕上显示该字符。

如果按下的是Ctrl+Break组合键,则终止程序执行。

1号功能调用无须入口参数,出口参数在AL中2.键盘输入但不显示输入字符(8号功能调用)格式:MOV AH, 08HINT 21H功能:同1号功能调用,但字符不在屏幕上显示。

3.屏幕显示一个字符(2号功能调用)格式:MOV DL, ‘字符’MOV AH, 02HINT 21H功能:将置入DL寄存器中的字符在屏幕上显示输出。

4.打印输出(5号功能调用)格式:MOV DL, ‘字符’MOV AH, 05HINT 21H功能:将置入DL寄存器中的字符送打印机接口,打印输出。

5.屏幕显示字符串(9号功能调用)格式:MOV DX, 字符串的偏移地址MOV AH, 09HINT 21H功能:在屏幕上显示字符串。

在使用9号功能调用时,应当注意以下问题。

① 待显示的字符串必须先放在内存一数据区(DS段)中,且以‘$’符号作为结束标志。

② 应当将字符串首地址的段基址和偏移地址分别存入DS和DX寄存器中。

6.字符串输入功能调用(0AH号功能调用)格式:MOV DX, 已定义缓冲区的偏移地址MOV AH, 0AHINT 21H功能:从键盘接收字符,并存放到内存缓冲区。

在使用0AH号功能调用时,应当注意以下问题。

① 执行前先定义一个输入缓冲区,缓冲区内第一个字节定义为允许最多输入的字符个数,字符个数应包括回车符0DH在内,不能为“0”值。

第二个字节保留,在执行程序完毕后存入输入的实际字符个数。

从第三个字节开始存入从键盘上接收字符的ASCII码。

若实际输入的字符个数少于定义的最大字符个数,则缓冲区其他单元自动清0。

若实际输入的字符个数大于定义的字符个数,其后输入的字符丢弃不用,且响铃示警,一直到输入回车键为止。

常用DOS(INT 21H)功能调用表

常用DOS(INT 21H)功能调用表
移动文件指针
BX=文件代号
CX:DX=位移量
AL=移动方式(0:从文件头绝对位移,1:从当前位置相对移动,2:从文件尾绝对位移)
成功:DX:AX=新文件指针位置
出错:AX=错误码
43
置/取文件属性
DS:DX=ASCIIZ串地址
AL=0取文件属性
AL=1置文件属性
CX=文件属性
成功:CX=文件属性
失败:CX=错误码
4B
装配/执行程序
DS:DX=ASCIIZ串地址
ES:BX=参数区首地址
AL=0装入执行
AL=3装入不执行
失败:AX=错误码
4C
带返回码结束
AL=返回码
4D
取返回代码
AX=返回代码
4E
查找第一个匹配文件
DS:DX=ASCIIZ串地址
CX=属性
AX=出错代码(02,18)
4F
查找下一个匹配文件
DS:DX=ASCIIZ串地址
=01盘满
=02缓冲区溢出
29
分析文件名
ES:DI=FCB首地址
DS:SI=ASCIIZ串
AL=控制分析标志
AL=00标准文件
=01多义文件
=02非法盘符
2A
取日期
CX=年
DH:DL=月:日(二进制)
2B
设置日期
CX:DH:DL=年:月:日
AL=00成功
=FF无效
2C
取时间
CH:CL=时:分
DH:DL=秒:1/100秒
(文件名中带有?或*)
Aቤተ መጻሕፍቲ ባይዱ=出错代码(18)
54
取盘自动读写标志
AL=当前标志值
56

常用DOS(INT 21H)功能调用表(AH功能调用号)

常用DOS(INT 21H)功能调用表(AH功能调用号)
失败:AX=错误码 读成功:
AX=实际读入的字节数 AX=0 已到文件尾 读出错:AX=错误码 写成功: AX=实际写入的字节数 写出错:AX=错误码 成功:AX=00 出错:AX=错误码(2,5)
42 移动文件指针 43 置/取文件属性
44 设备文件I/O控制 45 复制文件代号 46 人工复制文件代号
AX=出错代码(18)
(文件名中带有?或*)
54 取盘自动读写标志
AL=当前标志值
DS:DX=ASCIIZ串
56 文件改名
(旧) ES:DI=ASCIIZ串
AX=出错码(03,05,17)
(新)
BX=文件代号
DX:CX=日期和时间
57
置/取文件日期和时 间
AL=0 读取
失败:AX=错误码
58 取/置分配策略码 59 取扩充错误码 5A 建立临时文件 5B 建立新文件
AL=FF 无输入
0C
清除输入缓冲区并 请求指定的输入功能
AL=输入功能号 (1,6,7,8,A)
0D 0E
磁指盘定复当位 前缺省的磁盘驱动 器
0F 打开文件
DL=驱动器号 0=A,1=B,... DS:DX=FCB首地址
清除文件缓冲区 AL=驱动器数 AL=00 文件找到 AL=FF 文件未找到
10 关闭文件
AL=输入字符
7 键盘输入(无回显)
AL=输入字符
8
键盘输入(无回显) 检测Ctrl-Break
9 显示字符串
0A 键盘输入到缓冲区
0B 检验键盘状态
AL=输入字符
DS:DX=串地址
'$'结束字符串
DS:DX=缓冲区首地址
(DS:DX+1)=实际输入的字符

DOS功能调用

DOS功能调用

附录D DOS系统功能调用表(INT 21H)功能号(AH)功能描述 入口参数 出口参数00H 程序终止(同INT 20H) CS=程序段前缀PSP —01H 键盘输入并回显单字符 — AL=读入字符的 ASCII 02H 单字符显示输出 DL=输出字符 —03H COM1输入— AL=输入字符04H COM1输出 DL=输出字符—05H 打印单字符 DL=输出字符 —06H 直接控制台 I/O DL=FF(输入)DL=字符(输出)AL=输入字符07H 键盘输入无回显 — AL=输入字符08H 键盘输入无回显处理 Ctrl–Break或Ctrl–C— AL=输入字符09H 显示字符串 DS:DX=待输出串起始逻辑地址字符串以‘$’结束—0AH字符串输入到缓冲区 DS:DX=输入缓冲区逻辑地址首字节为最大允许按键数缓冲区次字节为实际输入字符数(串长)然后是输入串0BH检查键盘状态 — AL=0,有按键AL=FF,键盘缓冲区已空0CH 清除键盘缓冲区并执行 AL指定的功能AL=子功能号(1,6,7,8,0A)—0DH 磁盘复位—清除文件缓冲区0EH 指定当前默认的磁盘驱动器DL=驱动器号(0=A,1=B,…)AL=系统中驱动器数25H 设置中断向量 DS:DX=中断向量AL=中断号—26H 建立程序段前缀PSP DX=新PSP段地址—2AH 取系统日期 — CX=年 (1980~2099) DH/DL=月/日附录D DOS 系统功能调用表(INT 21H)·423· ·423·(续)功能号(AH) 功能描述 入口参数出口参数2BH 置系统日期 CX=年 (1980~2099) DH/DL=月/日 AL=00H ,成功 AL=FFH ,日期无效 2CH 取系统时间 —CH/CL=时/分 DH/DL=秒/百分秒 2DH 置系统时间 CH/CL=时/分 DH/DL=秒/百分秒 AL=00H ,成功 AL=FFH ,时间无效 2EH 设置磁盘检验标志 AL=00H ,关闭检验 AL=FFH ,打开检验—2FH 取DTA 地址 — ES :BX=DTA 逻辑地址 30H 取DOS 版本号 — AH =发行号 AL =版号 31H 结束并驻留AL=返回码 DX=驻留区长度—32H 取驱动器参数块 DL=驱动器号 AL=FFH 驱动器无效 DS :BX=驱动器参数块地址 33H Ctrl–Break 检测 AL=00H 取标志状态 DL=00H 关闭检测 DL=01H 开放检测 35H取中断向量 AL=中断号ES :BX=中断向量 36H 取空闲磁盘空间DL=驱动器号 0=默认,1=A ,2=BAX=每簇扇区数BX=剩余簇数 CX=每扇区字节数 DX=总簇数39H 建立子目录(MD) DS :DX=子目录串首地址 AX=错误码 3AH 删除子目录(RD) DS :DX=子目录串首地址 AX=错误码 3BH 改变当前目录(CD) DS :DX=子目录串首地址 AX=错误码 3CH 建立文件 DS :DX=子目录串首地址 CX=文件属性成功:AX=文件代号 失败:AX=错误码 3DH 打开文件DS :DX=子目录说明串首地址 AL=打开方式成功:AX=文件代号 失败:AX=错误码 3EH 关闭文件 BX=文件代号 失败:AX=错误码3FH读文件或设备DS :DX=数据缓冲区地址 BX=文件代号成功:AX=实际读入的字节数 失败:AX=错误码微机原理及接口技术 ·424··424·(续)功能号(AH)功能描述 入口参数 出口参数40H写文件或设备 DS:DX=缓冲区首地址BX=文件代号CX=待写入的字节数成功:AX=实际读入字节数失败:AX=错误码41H删除文件 DS:DX=缓冲区首地址 成功:AX=00失败:AX=错误码42H移动文件指针 BX=文件代号CX:DX=移动量AL=移动方式成功:DX:AX=新指针位置失败:AX=错误码43H置/取文件属性 DS:DX=缓冲区首地址AL=0,取文件属性AL=1,置文件属性CX=文件属性成功:CX=文件属性失败:AX=错误码47H取当前目录路径名 DL=驱动器号DS:SI=缓冲区首地址填充缓冲区失败:AX=错误码4CH带返回码结束 AL=结束码4EH查找第一个匹配文件 DS:DX=说明符号串首地址CX=文件属性失败:AX=错误码4FH查找下一个匹配文件 DS:DX=说明符号串首地址CX=文件属性失败:AX=错误码56H文件改名 DS:DX=原文件名符号串首地址 ES:DI=新文件名符号串首地址失败:AX=错误码57H 置/取文件时期和时间 BX=文件代号AL=0,读AL=1,置DX:CX=日期和时间注:DOS系统功能调用的功能号排列为从00H~6CH,此表中所列的为常用功能。

DOS系统功能调用

DOS系统功能调用

no:
yes: exit:

在中断向量表中查找从键盘输入的字符, 在中断向量表中查找从键盘输入的字符, 查找从键盘输入的字符 并将其个数用二进制形式显示出来。 并将其个数用二进制形式显示出来。( scanskey.asm)
code SEGMENT ;代码段开始 代码段开始 ASSUME CS:code
0AH功能注意事项: 功能注意事项: 功能注意事项 输入的字符均带回显,且光标随字符移动。 ◢ 输入的字符均带回显,且光标随字符移动。 当输入回车符结束时,也回显回车符。 当输入回车符结束时,也回显回车符。 表现为功能调用结束后,光标回到了行首。 表现为功能调用结束后,光标回到了行首。 回车符0DH作为一个输入的字符存放在字符串尾, 作为一个输入的字符存放在字符串尾, ◢ 回车符 作为一个输入的字符存放在字符串尾 但计数输入个数时,不包括回车键。 但计数输入个数时,不包括回车键。 限制的最多数实际最多能输入的字符数 = 限制的最多数-1 回车符占一个) (回车符占一个) 执行完0AH功能后,DS和DX的值不变, 功能后, 和 的值不变 的值不变, ◢ 执行完 功能后 DS:DX仍指向缓冲区的首地址。 仍指向缓冲区的首地址。 仍指向缓冲区的首地址 整个缓冲区的大小应为:限制的最多数 ◢ 整个缓冲区的大小应为 限制的最多数 +2 max DB 11, ? , 11 dup (?)
begin: MOV AX, 0000H ;设置查找首地址 设置查找首地址 MOV DS, AX MOV SI,0000H MOV CX,0400H ;设置查找长度 设置查找长度 MOV BX,0 ;计算值初值 计算值初值
MOV AH,01H , INT 21H MOV DL,AL ,
next: LODSB CMP AL, DL JNZ point INC BX point: LOOP next CALL display MOV AH,4CH INT 21H
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
CX=属性1-只读2-隐蔽
4-系统
CF=0成功,AX=文件号
CF=1失败,AX=错误码
3DH
打开文件
DS:DX=带路径的文件名
AL=方式0-读1-写2-读

CF=0成功,AX=文件号
CF=1失败,AX=错误码
3EH
关闭文件
BX=文件号
CF=0成功
CF=1失败,AX=错误码
3FH
读文件或设备
BX=文件号
件指针
CF=1失败,AX=错误码
43H
取/置文件属性
AL=0:取1:置,CX=新属性
DS:DX=带路径的文件名
CX=属性(功能0)1-只读
2-隐蔽4-系统20H-归档
44H
设备输入/输出控制:
设置/取得与打开设备
的句柄相关联信息,或
发送/接收控制字符串
Байду номын сангаас至设备句柄
AL=0/1取/置设备信息
2/3读/写设备控制通道
CX=已写的块数
29H
分析文件名
AL=分析控制标记
DS:SI=要分析的字符串
ES:DI=未打开的FCB首址
AL=00未通配符
01有通配符
0FFH驱动器字母无效
ES:DI=未打开的FCB
2AH
取系统日期
CX=年(1980-2099)
DH=月,DL=日,AL=星期
(0=星期日)
2BH
置系统日期
CX=年,DH=月,DL=日
式信息
DL=驱动器号(0=缺省,
1=A..)
AL=每簇的扇区数
CX=每扇区的字节数
DX=数据区总簇数-1
DS:BX=介质描述字节
*1DH
保留未用
*1EH
保留未用
*1FH
取缺省驱动器的DPB
DS:BX=DPB首址
*20H
保留未用
21H
随机读一个记录
DS:DX=打开的FCB首址
AL=00成功,01文件结束
错误码
错误类型
错误码
错误类型
01H
无效的功能号
0AH
不正确的环境
02H
文件未找到
0BH
不正确的格式
03H
路径未找到
0CH
无效的存取代码
04H
打开的文件太多
0DH
无效的数据
05H
拒绝存取
0EH
保留
06H
非法的文件号
0FH
指定的驱动器无效
07H
内存控制块破坏
10H
试图删除当前目录
08H
没有足够的内存空间
AL=00成功,0FFH失败
14H
顺序读
DS:DX=打开的FCB首址
AL=00成功,01文件结束
02缓冲区太小
03缓冲区不满
15H
顺序写
DS:DX=打开的FCB首址
AL=00成功,01盘满
02缓冲区太小
16H
创建文件
DS:DX=未打开的FCB首址
AL=00成功
0FFH目录区满
17H
文件换名
DS:DX=被修改的FCB首址
11H
非同一设备
09H
无效的内存块地址
12H
没有更多的文件
DS:DX=新的PSP段地址
27H
随机读若干记录
DS:DX=打开的FCB首址
CX=要读入的记录数
AL=00成功,01文件结束
AL=02缓冲区太小
AL=03缓冲区不满
CX=读入的块数
28H
随机写若干记录
DS:DX=打开的FCB首址
CX=要写入的记录数
AL=00成功,01盘满
AL=02缓冲区太小
AL=03缓冲区不满
36H
取磁盘的自由空间
DL=驱动器号(0=缺省,1=A
AX=FF驱动器无效
其它每簇扇区数
BX=自由簇数
CX=每扇区字节数
BX=文件区所占簇数
*37H
取/置参数分隔符
取/置设备名许可标记
AL=0:取分隔符,1:置分隔
符,DL=分隔符
2:取许可标记
3:置许可标记,DL=许
可标记
DL=分隔符(功能0)
DL=许可标记(功能2)
02缓冲区太小
03缓冲区不满
22H
随机写一个记录
DS:DX=打开的FCB首址
AL=00成功,01盘满
02缓冲区太小
23H
取文件大小
DS:DX=未打开的FCB首址
AL=00成功,0FFH失败
24H
设置随机记录号
DS:DX=打开的FCB首址
25H
设置中断向量
AL=中断号
DS:DX=中断程序入口
*26H
创建新的PSP
4/5同功能2/3
6/7取输入/输出状态
BX=句柄(功能0-3,6-7)
BL=驱动器号(功能4-5)
CX=字节数(功能2-5)
DS:DX=缓冲区(功能2-5)
CF=0成功
DX=设备信息(功能0)
AL=状态(功能6/7)
0未准备,1准备
AX=传送的字节数(功能2-
5)
45H
复制文件号(对于一个
打开的文件返回一个新
ES:BX=装载用的参数块
CF=1失败,AX=错误码
4CH
带返回码的结束
AL=进程返回码
4DH
取由31H/4CH带回的返
回码
AL=进程返回码
AH=类型码,0-正常结束
1-由Ctrl-Break结束
2-由严重设备错误而结束
3-由调用31H而结束
4EH
查找第一个匹配项
DS:DX=带路径的文件名
CX=属性
的文件号)
BX=文件号
CF=0成功,AX=新文件号
CF=1失败,AX=错误码
46H
强行复制文件号
BX=现存的文件号,CX=第2
文件号
CF=0成功,1失败
AX=错误码
47H
取当前目录
DL=驱动器号
DS:SI=缓冲区首址
CF=0成功,1失败
AX=错误码
48H
分配内存
BX=所需的内存节数
CF=0成功,AX=分配的段
06H
直接控制台I/O
DL=0FFH(输入请求)
DL=字符(输出请求)
AL=输入的字符
07H
直接控制台I/O
(不显示输入)
AL=输入的字符
08H
键盘输入字符(无回显)
AL=输入的字符
09H
显示字符串
DS:DX=缓冲区首址
0AH
输入字符串
DS:DX=缓冲区首址
0BH
检查标准输入状态
AL=00无按键
AL=0FFH有按键
AL=2(通过INT 23H终止)
Cy=1出错
INT25
绝对磁盘读
CX=读入扇区数
DX=起始逻辑扇区数
DS:BX=缓冲区地址
AL=驱动器号
Cy=0正确
INT26
绝对磁盘写
CX=写盘扇区数
DX=起始逻辑扇区数
DS:BX=缓冲区地址
INT27
驻留退出
CS=PSP段地址
DX=程序末地址+1
二、DOS功能调用
AL=00成功,0FFH失败
2CH
取系统时间
CH=时(0-23),CL=分,DH=
秒,DL=百分之几秒
2DH
置系统时间
CX=时,分DX=秒,百分秒
AL=00成功,0FFH失败
2EH
设置/复位校验开关
AL=0关闭,1打开
2FH
取磁盘传输地址DTA
ES:BX=DTA首地址
30H
取DOS版本
AL,AH=DOS主、次版本
38H
取国家信息
AL=0,DS:DX=缓冲区首址
39H
创建子目录
DS:DX=路径字符串
CF=0成功,1失败,AX=错
误码
3AH
删除子目录
DS:DX=路径字符串
CF=0成功,1失败,AX=错
误码
3BH
设置子目录
DS:DX=路径字符串
CF=0成功,1失败,AX=错
误码
3CH
创建文件
DS:DX=带路径的文件名
数,CF=1失败,AX=错误码
BX=最大可用块大小
49H
释放内存
ES=释放块的段值
CF=1失败,AX=错误码
4AH
修改分配内存
ES=修改块的段值
BX=新长度(以节为单位)
CF=1失败,AX=错误码
BX=最大可用块大小
4BH
装载程序
运行程序
AL=0装载并运行
1获得执行信息
3装载但不运行
DS:DX=带路径的文件名
DOS功能调用一览表
一、DOS软中断
DOS2.10使用了20H-27H,其功能定义为:
中断
功能
入口参数
出口参数
INT20
程序正常退出
CS=PSP段地址
INT21
系统功能调用
AH=功能号
INT22
程序结束处理
INT23
Ctrl-Break处理
AL=0(忽略)
INT24
严重错误处理
AL=驱动器号
AL=1(重试)
AL=00成功,0FFH失败
10H
关闭文件
DS:DX=打开的FCB首址
AL=00成功,0FFH失败
11H
查找第一匹配目录
DS:DX=未打开的FCB首址
相关文档
最新文档