汇编AH功能.docx
- 文档编号:8170909
- 上传时间:2023-01-29
- 格式:DOCX
- 页数:15
- 大小:21.88KB
汇编AH功能.docx
《汇编AH功能.docx》由会员分享,可在线阅读,更多相关《汇编AH功能.docx(15页珍藏版)》请在冰豆网上搜索。
汇编AH功能
汇编AH功能
————————————————————————————————作者:
————————————————————————————————日期:
AH
功能
调用参数
返回参数
00
程序终止(同INT20H)
CS=程序段前缀
01
键盘输入并回显
AL=输入字符
02
显示输出
DL=输出字符
03
异步通迅输入
AL=输入数据
04
异步通迅输出
DL=输出数据
05
打印机输出
DL=输出字符
06
直接控制台I/O
DL=FF(输入)
DL=字符(输出)
AL=输入字符
07
键盘输入(无回显)
AL=输入字符
08
键盘输入(无回显)
检测Ctrl-Break
AL=输入字符
09
显示字符串
DS:
DX=串地址
'$'结束字符串
0A
键盘输入到缓冲区
DS:
DX=缓冲区首地址
(DS:
DX)=缓冲区最大字符数
(DS:
DX+1)=实际输入的字符数
0B
检验键盘状态
AL=00 有输入
AL=FF 无输入
0C
清除输入缓冲区并
请求指定的输入功能
AL=输入功能号
(1,6,7,8,A)
0D
磁盘复位
清除文件缓冲区
0E
指定当前缺省的磁盘驱动器
DL=驱动器号 0=A,1=B,...
AL=驱动器数
0F
打开文件
DS:
DX=FCB首地址
AL=00 文件找到
AL=FF 文件未找到
10
关闭文件
DS:
DX=FCB首地址
AL=00 目录修改成功
AL=FF 目录中未找到文件
11
查找第一个目录项
DS:
DX=FCB首地址
AL=00 找到
AL=FF 未找到
12
查找下一个目录项
DS:
DX=FCB首地址
(文件中带有*或?
)
AL=00 找到
AL=FF 未找到
13
删除文件
DS:
DX=FCB首地址
AL=00 删除成功
AL=FF 未找到
14
顺序读
DS:
DX=FCB首地址
AL=00 读成功
=01 文件结束,记录中无数据
=02DTA空间不够
=03 文件结束,记录不完整
15
顺序写
DS:
DX=FCB首地址
AL=00 写成功
=01 盘满
=02DTA空间不够
16
建文件
DS:
DX=FCB首地址
AL=00 建立成功
=FF 无磁盘空间
17
文件改名
DS:
DX=FCB首地址
(DS:
DX+1)=旧文件名
(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信息
DL=驱动器号
同上
21
随机读
DS:
DX=FCB首地址
AL=00 读成功
=01 文件结束
=02 缓冲区溢出
=03 缓冲区不满
22
随机写
DS:
DX=FCB首地址
AL=00 写成功
=01 盘满
=02 缓冲区溢出
23
测定文件大小
DS:
DX=FCB首地址
AL=00 成功(文件长度填入FCB)
AL=FF 未找到
24
设置随机记录号
DS:
DX=FCB首地址
25
设置中断向量
DS:
DX=中断向量
AL=中断类型号
26
建立程序段前缀
DX=新的程序段前缀
27
随机分块读
DS:
DX=FCB首地址
CX=记录数
AL=00 读成功
=01 文件结束
=02 缓冲区太小,传输结束
=03 缓冲区不满
28
随机分块写
DS:
DX=FCB首地址
CX=记录数
AL=00 写成功
=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秒
2D
设置时间
CH:
CL=时:
分
DH:
DL=秒:
1/100秒
AL=00 成功
=FF 无效
2E
置磁盘自动读写标志
AL=00 关闭标志
AL=01 打开标志
2F
取磁盘缓冲区的首址
ES:
BX=缓冲区首址
30
取DOS版本号
AH=发行号,AL=版本
31
结束并驻留
AL=返回码
DX=驻留区大小
33
Ctrl-Break检测
AL=00 取状态
=01 置状态(DL)
DL=00 关闭检测
=01 打开检测
DL=00 关闭Ctrl-Break检测
=01 打开Ctrl-Break检测
35
取中断向量
AL=中断类型
ES:
BX=中断向量
36
取空闲磁盘空间
DL=驱动器号
0=缺省,1=A,2=B,...
成功:
AX=每簇扇区数
BX=有效簇数
CX=每扇区字节数
DX=总簇数
失败:
AX=FFFF
38
置/取国家信息
DS:
DX=信息区首地址
BX=国家码(国际电话前缀码)
AX=错误码
39
建立子目录(MKDIR)
DS:
DX=ASCIIZ串地址
AX=错误码
3A
删除子目录(RMDIR)
DS:
DX=ASCIIZ串地址
AX=错误码
3B
改变当前目录(CHDIR)
DS:
DX=ASCIIZ串地址
AX=错误码
3C
建立文件
DS:
DX=ASCIIZ串地址
CX=文件属性
成功:
AX=文件代号
错误:
AX=错误码
3D
打开文件
DS:
DX=ASCIIZ串地址
AL=0 读
=1 写
=3 读/写
成功:
AX=文件代号
错误:
AX=错误码
3E
关闭文件
BX=文件代号
失败:
AX=错误码
3F
读文件或设备
DS:
DX=数据缓冲区地址
BX=文件代号
CX=读取的字节数
读成功:
AX=实际读入的字节数
AX=0 已到文件尾
读出错:
AX=错误码
40
写文件或设备
DS:
DX=数据缓冲区地址
BX=文件代号
CX=写入的字节数
写成功:
AX=实际写入的字节数
写出错:
AX=错误码
41
删除文件
DS:
DX=ASCIIZ串地址
成功:
AX=00
出错:
AX=错误码(2,5)
42
移动文件指针
BX=文件代号
CX:
DX=位移量
AL=移动方式(0:
从文件头绝对位移,1:
从当前位置相对移动,2:
从文件尾绝对位移)
成功:
DX:
AX=新文件指针位置
出错:
AX=错误码
43
置/取文件属性
DS:
DX=ASCIIZ串地址
AL=0 取文件属性
AL=1 置文件属性
CX=文件属性
成功:
CX=文件属性
失败:
CX=错误码
44
设备文件I/O控制
BX=文件代号
AL=0 取状态
=1 置状态DX
=2 读数据
=3 写数据
=6 取输入状态
=7 取输出状态
DX=设备信息
45
复制文件代号
BX=文件代号1
成功:
AX=文件代号2
失败:
AX=错误码
46
人工复制文件代号
BX=文件代号1
CX=文件代号2
失败:
AX=错误码
47
取当前目录路径名
DL=驱动器号
DS:
SI=ASCIIZ串地址
(DS:
SI)=ASCIIZ串
失败:
AX=出错码
48
分配内存空间
BX=申请内存容量
成功:
AX=分配内存首地
失败:
BX=最大可用内存
49
释放内容空间
ES=内存起始段地址
失败:
AX=错误码
4A
调整已分配的存储块
ES=原内存起始地址
BX=再申请的容量
失败:
BX=最大可用空间
AX=错误码
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串地址
(文件名中带有?
或*)
AX=出错代码(18)
54
取盘自动读写标志
AL=当前标志值
56
文件改名
DS:
DX=ASCIIZ串(旧)
ES:
DI=ASCIIZ串(新)
AX=出错码(03,05,17)
57
置/取文件日期和时间
BX=文件代号
AL=0 读取
AL=1 设置(DX:
CX)
DX:
CX=日期和时间
失败:
AX=错误码
58
取/置分配策略码
AL=0 取码
AL=1 置码(BX)
成功:
AX=策略码
失败:
AX=错误码
59
取扩充错误码
AX=扩充错误码
BH=错误类型
BL=建议的操作
CH=错误场所
5A
建立临时文件
CX=文件属性
DS:
DX=ASCIIZ串地址
成功:
AX=文件代号
失败:
AX=错误码
5B
建立新文件
CX=文件属性
DS:
DX=ASCIIZ串地址
成功:
AX=文件代号
失败:
AX=错误码
5C
控制文件存取
AL=00封锁
=01开启
BX=文件代号
CX:
DX=文件位移
SI:
DI=文件长度
失败:
AX=错误码
62
取程序段前缀
BX=PSP地址
常用的DOS功能调用:
1.键盘输入并显示(1号功能调用)
格式:
MOVAH,01H
INT21H
功能:
按下任何键,将其对应字符的ASCII码送入AL中,并在屏幕上显示该字符。
如果按下的是Ctrl+Break组合键,则终止程序执行。
1号功能调用无须入口参数,出口参数在AL中
2.键盘输入但不显示输入字符(8号功能调用)
格式:
MOVAH,08H
INT21H
功能:
同1号功能调用,但字符不在屏幕上显示。
3.屏幕显示一个字符(2号功能调用)
格式:
MOVDL,‘字符’
MOVAH,02H
INT21H
功能:
将置入DL寄存器中的字符在屏幕上显示输出。
4.打印输出(5号功能调用)
格式:
MOVDL,‘字符’
MOVAH,05H
INT21H
功能:
将置入DL寄存器中的字符送打印机接口,打印输出。
5.屏幕显示字符串(9号功能调用)
格式:
MOVDX,字符串的偏移地址
MOVAH,09H
INT21H
功能:
在屏幕上显示字符串。
在使用9号功能调用时,应当注意以下问题。
①待显示的字符串必须先放在内存一数据区(DS段)中,且以‘$’符号作为结束标志。
②应当将字符串首地址的段基址和偏移地址分别存入DS和DX寄存器中。
6.字符串输入功能调用(0AH号功能调用)
格式:
MOVDX,已定义缓冲区的偏移地址
MOVAH,0AH
INT21H
功能:
从键盘接收字符,并存放到内存缓冲区。
在使用0AH号功能调用时,应当注意以下问题。
①执行前先定义一个输入缓冲区,缓冲区内第一个字节定义为允许最多输入的字符个数,字符个数应包括回车符0DH在内,不能为“0”值。
第二个字节保留,在执行程序完毕后存入输入的实际字符个数。
从第三个字节开始存入从键盘上接收字符的ASCII码。
若实际输入的字符个数少于定义的最大字符个数,则缓冲区其他单元自动清0。
若实际输入的字符个数大于定义的字符个数,其后输入的字符丢弃不用,且响铃示警,一直到输入回车键为止。
整个缓冲区的长度等于最大字符个数再加2。
②应当将缓冲区首地址的段基址和偏移地址分别存入DS和DX寄存器中。
7.返回DOS操作系统(4CH号功能调用)
格式:
MOVAH,4CH
INT21H
功能:
终止当前程序的运行,并把控制权交给调用的程序,即返回DOS系统,屏幕出现DOS提示符,如“C:
\>”,等待DOS命令。
8.直接输入、输出单字符(6号功能调用)
格式:
MOVDL,输入/输出标志
MOVAH,06H
INT21H
功能:
执行键盘输入操作或屏幕显示输出操作,但不检查Ctrl+Break组合键是否按下。
执行这两种操作的选择由DL寄存器中的内容决定。
①当(DL)=0FFH时,执行键盘输入操作。
若标志ZF=0,AL中放入字符的ASCII码;若标志ZF=1,表示无键按下。
这种调用用来检测键盘是否有键按下,但不等待键盘输入。
②当(DL)≠0FFH时,表示将DL中内容送屏幕显示输出。
9.检查键盘的工作状态(0BH号功能调用)
格式:
MOVAH,0BH
INT21H
功能:
检查是否有键盘输入,若有键按下,则使AL=0FFH,若无键按下,则AL=00H。
对于利用键盘操作退出循环或使程序结束之类的操作来说,这种调用是很方便实用的。
10.设置系统日期(2BH号功能调用)
格式:
MOVCX,年号
MOVDH,月号
MOVDL,日期
MOVAH,2BH
INT21H
功能:
设置有效的年、月、日。
当AL=0时,设置成功;当AL=0FFH时,设置失败。
11.设置系统时间(2DH号功能调用)
格式:
MOVCH,小时
MOVCL,分
MOVDH,秒
MOVAH,2DH
INT21H
功能:
设置有效的时间。
当AL=0时,设置成功;当AL=0FFH时,设置失败。
//========================================================
13.1BIOS中断调用
BIOS中断调用是DOS功能调用的基础,DOS功能调用是BIOS的高层扩展,它概括了BIOS中的某些功能,摆脱了输入/输出的具体细节,使用起来更方便。
两者比较如下:
◆BIOS中断调用比DOS功能调用复杂,但运行速度快,功能强;
◆DOS功能调用只能在DOS环境下运行,而BIOS中断调用不受任何操作系
统的约束;
◆BIOS功能丰富,某些功能只有BIOS具有,但实现起来与具体I/O参数有关;
◆使用BIOS中断调用可直接控制和访问计算机的硬件。
13.2视频子系统
屏幕显示中断调用
屏幕显示中断处理功能较多,而且随着显示技术的发展而不断丰富,尤其是图形方式(它实际上在许多方面已取代了字符的文本显示方式)。
屏幕显示中断子程序是程序设计中使用频率最高的系统程序之一,其中断号为10H,功能号放在AH中,还有不少入口参数,调用指令为:
INT10H
● 设置显示方式
功能号:
AH=0
入口参数:
AL=显示方式号
显示方式号 显示方式
0 40列×25行黑白文本方式
140列×25行彩色文本方式
280列×25行黑白文本方式
380列×25行彩色文本方式
4320列×200行黑白图形方式
5320列×200行彩色图形方式
6640列×200行黑白图形方式
7单显80列×25行黑白文本方式
出口参数:
无
扩展显示方式请参考附录II。
例:
设置屏幕为80列×25行彩色文本显示方式:
MOVAH,0 MOV AL,3
INT 10H
● 设置光标大小
功能号:
AH=1
入口参数:
CH=光标起始行(范围:
0~11)
CL=光标终止行(范围:
1~12)
例:
将光标设置成一个闪烁方块——
MOV AH,1
MOV CX,000CH
INT10H
●设置光标位置
功能号:
AH=2
入口参数:
BH=页号,通常取0(页)或当前(页)
DH=行号,取值0~24
DL=列号,对于40列文本0~39,对于80列文本0~79
例:
将光标设置在第14行35列上——
MOV BH,0
MOV DX,0E23H
MOV AH,2
INT 10H
● 屏幕上滚
功能号:
AH=6
入口参数:
AL=上滚行数,当AL=0时,清除屏幕矩形方框
CH、CL=矩形方框左上角行号、列号
DH、DL=矩形方框右下角行号、列号
BH=上滚后空行区域填充字符属性
例:
将(5,5)到(10,10)矩形窗口上滚动4行,黑底白字属性——
MOV AX,604H
MOV CX,505H
MOV DX,0A0AH
MOV BH,07H
INT 10H
●屏幕下滚
功能号:
AH=7
其余同功能6调用。
●显示字符
功能号:
AH=0AH ;功能是在光标位置处写入(显示)字符
入口参数:
AL=显示的字符
CX=字符重复的次数
BH=显示页
13.3键盘
键盘I/O中断调用
键盘中断调用包括三个功能:
从键盘读字符、读键盘状态和读特殊键标志等,其中断号为16H,功能号放在AH寄存器中,调用指令:
INT16H。
● 功能号:
AH=0 ;功能:
从键盘读入字符送AL寄存器。
入口参数:
无
出口参数:
AL=键入字符的ASCII码。
AH=键入字符的扫描码或扩展码
● 功能号:
AH=1 ;功能:
判有无键按下
入口参数:
无
出口参数:
有键按下ZF=0,AL=键入字符的ASCII码;否则ZF=1
若按过任一键(即键盘缓冲区不空),置ZF=0,表示有键按下,读
入键盘第一个键入的字符并送AL寄存器,但读键盘缓冲区的指针不
移动,即下次读键盘仍读相同的键值;否则ZF=1,表示无键按下。
● 功能号:
AH=2 ;功能:
读取特殊功能键的状态。
出口参数:
AL=为各特殊功能键的状态,其含义如下:
13.4打印机
打印机I/O中断调用
打印机中断调用包括三个功能:
读取打印机状态、初始化打印机、字符输出打印。
其中断号为17H,功能号放在AH中,调用指令:
INT17H
BIOS最多允许连接三台打印机,用DX表示打印机号,若只有一台打印机,则打印机号一定为0。
● 功能号:
AH=0;功能:
把AL中的字符在打印机上打印出来。
入口参数:
AL=待打印字符的ASCII码,DX=打印机号
出口参数:
无
● 功能号:
AH=1;功能:
按AL中的命令对打印机初始化。
入口参数:
AL=对打印机的初始化命令,DX=打印机号
出口参数:
无。
对打印机初始化命令如下:
● 功能号:
AH=2 ;功能:
读取打印机的状态
入口参数:
DX=打印机号
出口参数:
AL=打印机状态信息,含义如下:
在缺省打印机上输出“F”字符:
MOVDX,0
MOVAL,’F’
MOVAH,0
INT17H
时间中断调用
时间中断调用有两个功能,功能号在AH中,中断号为1AH,调用指令:
INT 1AH。
● 功能号:
AH=0 ;功能:
读取时间计数器的当前值。
入口参数:
无
出口参数:
CX=计数值的高位字,DX=计数值的低位字
AL=0:
未计满24小时,AL=1:
已计满24小时
时间计数器约54.926ms计数一次,所以可按下列公式计算出当前的时间:
时:
时间计数器的值(CX:
DX)/65543
时的余数=时间计数器的值MOD65543
分:
时的余数/1092
分的余数=时的余数MOD1092
秒:
分的余数/18.21
● 功能号:
AH=1 ;功能:
设置时间计数器的当前值。
入口参数:
CX=时间计数器当前值高位字,DX=时间计数器当前值低位字。
一般可按下列公式来计算:
CX:
DX=(时×65543)+(分×1092)+(秒×18.21)
例:
将字符“AAA”在屏幕上显示5秒钟
┆
MOVA
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汇编 AH 功能