汇编AH功能.docx

上传人:b****5 文档编号:8170909 上传时间:2023-01-29 格式:DOCX 页数:15 大小:21.88KB
下载 相关 举报
汇编AH功能.docx_第1页
第1页 / 共15页
汇编AH功能.docx_第2页
第2页 / 共15页
汇编AH功能.docx_第3页
第3页 / 共15页
汇编AH功能.docx_第4页
第4页 / 共15页
汇编AH功能.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

汇编AH功能.docx

《汇编AH功能.docx》由会员分享,可在线阅读,更多相关《汇编AH功能.docx(15页珍藏版)》请在冰豆网上搜索。

汇编AH功能.docx

汇编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

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 表格模板 > 合同协议

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1