汇编基础(2) 21H中断

本文深入探讨了INT21H中断指令集的功能、调用参数与返回参数,覆盖了从程序终止到文件改名在内的多种操作,提供了一个全面的中断处理指南。
部署运行你感兴趣的模型镜像

 

  • INT 21H 中断

    AH

    功能

    调用参数

    返回参数

    00

    程序终止(同INT 20H)

    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 文件结束,记录中无数据

    =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)=旧文件名

    (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地址

     

    源文档 <http://hi.baidu.com/qq765218805/blog/item/0e22b33fbdf5c1e655e7234d.html>

     

您可能感兴趣的与本文相关的镜像

LobeChat

LobeChat

AI应用

LobeChat 是一个开源、高性能的聊天机器人框架。支持语音合成、多模态和可扩展插件系统。支持一键式免费部署私人ChatGPT/LLM 网络应用程序。

《单片机原理及接口技术》 一、单项选择题 1、十进制数(79.43)10的二进制数为( )。 A、1001111.0110 B、1111001.0110 C、1111001.1001 D、1001111.1001 2、某存储器芯片有11根地址线,8根数据线,该芯片有( )个存储单元。 A、1KB B、8KB C、2KB D、4KB 3、单片机复位时,堆栈指针(SP)的值是( )。 A、00H B、07H C、05H D、30H 4、PC的值是( )。 A、当前指令前一条指令的地址 B、当前正在执行指令的地址 C、下一条指令的地址 D、控制器中指令寄存器的地址 5、下列指令或指令序列中,能将外部数据存储器3355H单元的内容传送给A的是( )。 A、MOVX A,3355H B、MOV DPTR,#3355H MOVX A,@DPTR C、MOV P0,#33H MOV R0,#55H MOVX A,@R0 D、MOV P2,#33H MOV R2,#55H MOVX A,@R2 6、80C51单片机要用传送指令访问片内程序存储器,它的指令操作码助记符是以下( )。 A、MOV B、MOVX C、MOVC D、MUL 7、假定设置堆栈指针SP的值为37H,在进行子程序调用时把断点地址进栈保护后,SP的值为( )。 A、36H B、37H C、38H D、39H 8、在80C51中,可使用的堆栈最大深度为( )。 A、80个单元 B、32个单元 C、128个单元 D、8个单元 9、下列条件中,不是中断响应必要条件的是( )。 A、TCON或SCON寄存器中相关的中断标志位置1 B、IE寄存器中相关的中断允许位置1 C、IP寄存器中相关位置1 D、中断请求发生在指令周期的最后一个机器周期 10、执行中断返回指令,要从堆栈弹出断点地址,以便去执行被中断了的主程序。从堆栈弹出的断点地址送给( )。 A、A B、CY C、PC D、DPTR 11、下列叙述中,不属于单片机存储器系统特点的是( )。 A、程序和数据两种类型的存储器同时存在。 B、芯片内外存储器同时存在 C、扩展数据存储器与片内数据存储器存储空间重叠 D、扩展程序存储器与片内程序存储器存储空间重叠 12、PSW=18H,当前的工作寄存器是( ) A、0组 B、1组 C、2组 D、3组 13、MCS-51的中断允许寄存器内容为8AH,CPU可以响应的中断请求是( )。 A、T1 B、T0,T1 C、T1,串行接口 D、T0 14、指令AJMP的跳转范围是( )。 A、64KB B、2KB C、256B D、128B 15、下列指令中正确的是( )。 A、MOV P2.1,A B、JBC TF0,L1 C、MOVX B,@DPTR D、MOV A,R3 二、填空题。 1、一个机器周期包括 个状态周期,一个状态周期包含 个时钟周期。 2、执行如下指令序列: MOV C,P1.0 ANL C,P1.1 ANL C,/P1.2 MOV P3.0,C 后,所实现的逻辑运算式为P3.0 = 。 3、假定(A)=0C3H,R0=0AAH,CY=1。执行指令:ADDC A,R0后,累加器A的内容为 ,CY的内容为 。 4、设执行指令DIV AB前,(A)=0A3H,(B)=20H,则执行指令后(A)= , (B)= 。 5、MCS-51单片机PC的长度为 位,SP的长度为 。 6、若系统晶振频率为6MHz,则机器周期为 μS,最长的指令周期为 μS。 7、在80C51单片机系统中,为解决内外程序存储器衔接问题所使用的信是 。 8、在变址寻址方式中,以 作为变址寄存器,以PC或 作为基址寄存器。 9、8051有 个中断源,可编程为 个优先级。 10、CPU的核心部件ALU承担了 运算和 运算功能。 三、判断题 1、内部寄存器Rn(n=0~7)作为间接寻址寄存器。 ( ) 2、MOV A,30H这条指令执行后的结果是(A)=30H。 ( ) 3、SP称之为堆栈指针,堆栈是单片机内部的一个特殊区域,与RAM无关。( ) 4、中断响应最快响应时间为三个机器周期。 ( ) 5、波特率反应了CPU的运算速率。 ( ) 6、MCS-51的特殊功能寄存器分布在60H~80H地址范围内。 ( ) 7、TMOD中为计数器/定时器功能选择位。 ( ) 8、PC存放的是当前执行的指令。 ( ) 9、CPU在响应串行口中断时,串行口中断标志由硬件自动清除。 ( ) 10、EPROM的地址线为10条时,能访问的存储空间有4K。 ( )
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值