汇编语言DOS系统功能调用表(INT 21H)

合集下载

int 21h汇编语言

int 21h汇编语言

int 21h汇编语言
int 21h 是8086汇编语言中的一条指令,用于调用DOS的功能服务。

其功能和参数由AH(高8位寄存器)和AL(低8位
寄存器)指定。

int 21h的使用方法如下:
```
mov ah, 功能代码
mov dl, 参数
int 21h
```
其中,功能代码(Function Code)是指要调用的DOS功能服
务的编号,根据不同的功能服务,有不同的功能代码。

参数(Argument)是指传递给DOS功能服务的附加参数。

示例:
```
; 用int 21h调用DOS功能服务来显示一个字符
mov ah, 02h ; 功能代码02h表示显示字符
mov dl, 'A' ; 要显示的字符是'A'
int 21h
```
上述示例中,mov ah, 02h表示要调用DOS的02h号功能服务,即显示字符。

mov dl, 'A'将要显示的字符'A'存放在dl寄存器中。

最后一句int 21h,则代表调用DOS功能服务来显示字符。

总之,int 21h是汇编语言中调用DOS功能服务的常用指令,通过它可以实现一系列与DOS相关的操作,比如读写文件、显示字符和字符串等。

int 21h 功能号一览表

int 21h 功能号一览表

INT21H功能调用一览表编号功能入口参数出口参数0程序终止CS=PSP段地址1带回显的字符输入AL=8位数据2字符输出DL=8位数据3辅助设备输入AL=8位数据4辅助设备输出DL=8位数据5打印输出DL=8位数据6直接控制台I/O DL=0FFH(输入请求)DL=0-OFEH(输出请求)AL=8位数据7无回显过滤的字符输入AL=8位数据8无回显的字符的输入AL=8位数据9显示字符串DS:DX=字符串OAH缓冲输入DS:DX=缓冲区段:位移OBH取输入状态AL=0(无字符)AL=1(有字符)OCH重置输入缓冲区后输入AL=功能号(1/6/7/8/OAH)DS:DX=缓冲区(功能OAH)AL=8位数据(功能1/6/7/8)ODH重启动磁盘OEH置缺省盘驱动器DL=驱动器码(0=A,1=B)AL=总的驱动器数OFH打开文件DS:DX=FCB AL=0:成功,-1:失败10H关闭文件DS:DX=FCB AL=0:成功,-1:失败11H查找第一匹配目录DS:DX=FCB AL=0:成功,-1:失败12H查找下一匹配目录DS:DX=FCB AL=0:成功,-1:失败13H删除文件DS:DX=FCB AL=0:成功,-1:失败14H顺序读DS:DX=FCB AL=返回码15H顺序写DS:DX=FCB AL=返回码16H创建文件DS:DX=FCB AL=0:成功,-1:失败17H重命名文件DS:DX=FCB AL=0:成功,-1:失败18H保留未用19H取缺省盘驱动器AL=驱动器码(0=A)1AH设置DTA DS:DX=DTA1BH取缺省驱动器的分配信息AL=每簇的扇区数CX=每扇区的字节数DX=文件区所占簇数DS:BX=介质描述字节1CH取指定驱动器的分配信息DL=驱动器码(0=缺省…)同上1DH保留未用1EH保留未用1FH取缺省驱动器的DPB DS:BX=DPB20F保留未用21F随机读一个记录DS:DX=FCB AL=返回码22F随机写一个记录DS:DX=FCB AL=返回码23F取文件大小DS:DX=未打开的FCB AL=0:成功,-1:失败24F设置随机记录号DS:DX=FCB25F置中断向量AL=中断号,DS:DX=入口26F创建程序段前缀DX=新程序段的段地址27H随机读若干记录CX=记录数DS:DX=FCBAL=返回码CX=实际记录数28H随机写若干记录29H分析文件名AL=控制分析标志DS:SI=正文串段:位移ES:DI=FCB段:位移AL=分析结果DS:SI=分析后的头一字符段的段:位移2AH取系统日期CX=年,AL=星期DH=月,DL=日2BH置系统日期CX=年,DH=月,DL=日AL=0:成功,-1:失败2CH取系统时间CH=时,CL=分DH=秒,DL=百分秒2DH置系统时间CX=时和分,DX=秒,百分秒AL=0:成功,-1:失败2EH置确认标志AL=0:关闭,1:打开2FH取DTA AL,AH=主,次版本30H取DOS版本号AL=0:成功,-1失败31H结束并驻留AL=返回码,DX=内存大小32H取指定驱动器的DPB DL=驱动器码(0=缺省…)DS:BX=DPB33H取或置Ctrl-Break标志AL=0(取标志)AL=1(置标志),DL=标志DL=标志状态(功能0)(0:关,1:开)34H取DOS中断标志ES:BX=DOS中断标志35H取中断向量AL=中断号ES:BX=中断程序入口36H取磁盘的自由空间DL=驱动器码(0=缺省…)驱动器无效:AX=-1有效:AX=每簇扇区数BX=自由簇数CX=每扇区字节数DX=文件区所占簇数37H取或置命令行开关符,取或置名字检查开关AL=0(取开关符)AL=1(置开关符)DL=(开关符)AL=2(取检查开关)AL=3(置检查开关)DL=开关值DL=开关符(功能0)DL=检查开关(功能2)38H取国家信息AL=0,DS:DX=缓冲区39H创建子目录DS:DX=路径说明串注13AH删除子目录DS:DX=路径说明串注13BH设置当前目录DS:DX=路径说明串注13CH创建文件DS:DX=文件说明,CX=属性注23DH打开文件DS:DX=文件说明,AL=模式注23EH关闭文件BX=文件号注13FH读文件或设备BX=文件号CX=字符数CX:DX=缓冲区成功:CF=0,DX:AX=新指针位置失败:CF=1,AX=错误码40H写文件或设备41H删除文件DS:DX=文件说明串注142H移文件指针AL=方式BX=文件号CX:DX=位移量成功:CF=0,DX:AX=新指针位置失败:CF=1,AX=错误码43H取或置文件属性AL=0(取属性)AL=1,CX=新属性(置属性)DS:DX=文件说明CX=属性(功能0)44H设备驱动控制AL=0(取设备信息)AL=1(置设备信息)AL=2(读设备控制通道)AL=3(写设备控制通道)AL=4(同功能2)AL=5(同功能3)AL=6(取输入状态)AL=7(取输出状态)BX=文件号(功能0-3,6-7)BL=驱动器码(功能4-5)CX=字节数(功能2-5)DS:DX=缓冲区(功能2-5)失败:CF=1,AX=错误码成功:DX=设备信息(功能0)AL=状态(功能6/7)0:未准备,1:准备AX=传送字节数(功能2-5)45H复制文件号BX=文件号成功:CF=0AX=新文件号失败:CF=1,AX=错误码46H强迫复制文件号BX=第1文件号CX=第2文件号注147H取当前目录DL=驱动器码DS:SI=缓冲区注148H分配内存BX=所需内存的节数成功:CF=0AX=分配块的段失败:CF=1,AX=错误码BX=最大可用块大小49H释放内存ES=释放块的段注14AH修改内存分配ES=修改块的段BX=新长度(以节计)成功:CF=0失败:CF=1,AX=错误码BX=最大可用块大小4BH加载程序执行程序AL=0(加载并执行)AL=1(获得执行信息)AL=3(加载覆盖)DS:DX=程序说明ES:BX=参数块注14CH带返回码结束AL=返回码4DH取返回码AH=类型码,AL=返回码4EH查找第一个匹配项CX=属性,DS:DX=文件说明注14FH查找下一个匹配项注150H设置PSP段地址BX=PSP段地址51H取PSP段地址BX=PSP段地址52H取DOS系统数据块ES:BX=DOS系统数据块53H为块设备建立DPB DS:SI=BPB,ES:BP=DPB54H取确认标志AL=标志值(0:关,1:开)55H创建PSP DX=PSP56H重命名文件DS:DX=旧名,ES:DI=新名注157H取或置文件日期和时间AL=0,BX=文件号(取)AL=1,BX=文件号,CX=时间,DX=日期(置)成功:CF=0,CX=时间DX=日期(取)失败:CF=1,AX=错误码58H取/置分配策略码AL=0取码=1置码(BX)BX=策略码成功:AX=策略码失败:AX=错误码59H取扩充错误码AX=扩充错误码BH=错误类型BL=建议的操作CH=错误场所5AH建立临时文件CX=文件属性DS:DX=ASCⅡZ串地址成功:AX=文件代号失败:AX=错误码5BH建立新文件CX=文件属性DS:DX=ASCⅡZ串地址成功:AX=文件代号失败:AX=错误码5CH控制文件存取AL=00封锁=01开启BX=文件代号CX:DX=文件位移SI:DI=文件长度失败:AX=错误码62H取程序段前缀地址BX=PSP地址注1:出口参数为:成功时,CF=0;失败时,CF=1,AX=错误码注2:出口参数为:成功时,CF=0,AX=文件号;失败时,CF=1,AX=错误码。

DOS系统功能调用介绍

DOS系统功能调用介绍

DOS系统功能调用介绍系统功能调用——由DOS提供的一组实现特殊功能的子程序供程序员在程序中调用,以减轻编程工作量。

系统功能调用有两种,一种称为DOS功能调用,另一种称为BIOS功能调用。

用户程序在调用这些系统服务程序时,不是用CALL命令,而是采用软中断指令INT n来实现。

在DOS系统中,功能调用都是用软中断指令INT 21H来实现的。

I N T2l H功能大致可以分为四个方面:设备管理、目录管理、文件管理和其它。

D0S系统功能调用的使用方法如下:①A H←功能号;②设置该功能所要求的其他入口参数;③执行I N T21H指令;④分析出口参数。

以下介绍I N T21H的几个最常用的功能。

关于数据输入和输出我们这里只讨论键盘输入和显示输出,调用系统功能需要提供入口参数及所调用的功能号,调用结束返回结果。

DOS键盘功能调用(1) 从键盘输入一个字符(功能号=1)MOV AH,1INT 21H<AL中有键入的字符>例:程序中有时需要用户对提示做出应答。

GET_KEY: MOV AH,1 ;等待键入字符INT 21H ;结果在AL中CMP AL,’Y’ ;是’Y’?JZ YES ;是,转YESCMP AL,’N’ ;是’N’?JZ NO ;是,转NOJMP GET_KEY ;否则继续等待输入YES: ……NO: …(2) 输入字符串(功能号=0AH)此功能调用从键盘输入一串字符并把它存入用户指定的缓冲区中。

MOV AH, 0AHLEA DX, <字符串缓冲区首地址>INT 21H用户定义的输入字符串的缓冲区格式N1: 缓冲区长度(最大键入字符数)N2: 实际键入的字符数(不包括回车符)若用户键入的字符数(包括回车)≥定义的N1,本功能调用将不再接收新的键入,且光标不再向右移动。

例:设在数据段定义键盘缓冲区如下:STR1 DB 10,?,10 DUP(?)调用DOS功能的0AH号功能的程序段为:LEA DX,STR1MOV AH,0AHINT 21H此程序段最多从键盘接收10个按键(包括回车)。

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功能调用一览表

DOS功能调用一览表

DOS功能调用一览表一、DOS软中断DOS 2.10使用了20H - 27H, 其功能定义为:┌───┬─────────┬──────────┬────────┐│中断│功能│入口参数│出口参数│├───┼─────────┼──────────┼────────┤│INT 20│程序正常退出│CS=PSP段地址││├───┼─────────┼──────────┼────────┤│INT 21│系统功能调用│AH=功能号││├───┼─────────┼──────────┼────────┤│INT 22│程序结束处理│││├───┼─────────┼──────────┼────────┤│INT 23│Ctrl-Break处理│││├───┼─────────┼──────────┼────────┤││││AL=0(忽略) ││INT 24│严重错误处理││AL=1(重试) │││││AL=2(通过INT 23H│││││终止) │├───┼─────────┼──────────┼────────┤│││AL=驱动器号│Cy=1 出错││INT 25│绝对磁盘读│CX=读入扇区数│Cy=0 正确││││DX=起始逻辑扇区数│││││DS:BX=缓冲区地址││├───┼─────────┼──────────┼────────┤│││AL=驱动器号│││INT 26│绝对磁盘写│CX=写盘扇区数│││││DX=起始逻辑扇区数│││││DS:BX=缓冲区地址││├───┼─────────┼──────────┼────────┤│INT 27│驻留退出│CS=PSP段地址│││││DX=程序末地址+1 ││└───┴─────────┴──────────┴────────┘二、DOS功能调用功能号在AH中, 并设好其余的入口参数, 向DOS发出INT 21H命令, 最后获得出口参数。

INT21H功能一览表

INT21H功能一览表

INT 21H 功能一览表汇编语言 2008-10-28 00:27 阅读505 评论0字号:大中小INT 21H 功能调用一览表编号功能入口参数出口参数0 程序终止CS=PSP段地址1 带回显的字符输入AL=8位数据2 字符输出DL=8位数据3 辅助设备输入AL=8位数据4 辅助设备输出DL=8位数据5 打印输出DL=8位数据6 直接控制台I/O DL=0FFH(输入请求)DL=0-OFEH(输出请求)AL=8位数据7 无回显过滤的字符输入AL=8位数据8 无回显的字符的输入AL=8位数据9 显示字符串DS:DX=字符串OAH 缓冲输入DS:DX=缓冲区段:位移OBH 取输入状态AL=0(无字符)AL=1(有字符)OCH 重置输入缓冲区后输入AL=功能号(1/6/7/8/OAH)DS:DX=缓冲区(功能OAH)AL=8位数据(功能1/6/7/8)ODH 重启动磁盘OEH 置缺省盘驱动器DL=驱动器码(0=A,1=B)AL=总的驱动器数OFH 打开文件DS:DX=FCB AL=0:成功,-1:失败10H 关闭文件DS:DX=FCB AL=0:成功,-1:失败11H 查找第一匹配目录DS:DX=FCB AL=0:成功,-1:失败12H 查找下一匹配目录DS:DX=FCB AL=0:成功,-1:失败13H 删除文件DS:DX=FCB AL=0:成功,-1:失败14H 顺序读DS:DX=FCB AL=返回码15H 顺序写DS:DX=FCB AL=返回码16H 创建文件DS:DX=FCB AL=0:成功,-1:失败17H 重命名文件DS:DX=FCB AL=0:成功,-1:失败18H 保留未用19H 取缺省盘驱动器AL=驱动器码(0=A)1AH 设置DTA DS:DX=DTA1BH 取缺省驱动器的分配信息AL=每簇的扇区数CX=每扇区的字节数DX=文件区所占簇数DS:BX=介质描述字节1CH 取指定驱动器的分配信息DL=驱动器码(0=缺省…)同上1DH 保留未用1EH 保留未用1FH 取缺省驱动器的DPB DS:BX=DPB20F 保留未用21F 随机读一个记录DS:DX=FCB AL=返回码22F 随机写一个记录DS:DX=FCB AL=返回码23F 取文件大小DS:DX=未打开的FCB AL=0:成功,-1:失败24F 设置随机记录号DS:DX=FCB25F置中断向量AL=中断号,DS:DX=入口26F 创建程序段前缀DX=新程序段的段地址27H 随机读若干记录CX=记录数DS:DX=FCBAL=返回码CX=实际记录数28H 随机写若干记录29H 分析文件名AL=控制分析标志DS:SI=正文串段:位移ES:DI=FCB段:位移AL=分析结果DS:SI=分析后的头一字符段的段:位移2AH 取系统日期CX=年,AL=星期DH=月,DL=日2BH 置系统日期CX=年,DH=月,DL=日AL=0:成功,-1:失败2CH 取系统时间CH=时,CL=分DH=秒,DL=百分秒2DH 置系统时间CX=时和分,DX=秒,百分秒AL=0:成功,-1:失败2EH 置确认标志AL=0:关闭,1:打开2FH 取DTA AL,AH=主,次版本30H 取DOS版本号AL=0:成功,-1失败31H 结束并驻留AL=返回码,DX=内存大小32H 取指定驱动器的DPB DL=驱动器码(0=缺省…)DS:BX=DPB33H 取或置Ctrl-Break标志AL=0(取标志)AL=1(置标志),DL=标志DL=标志状态(功能0)(0:关,1:开)34H 取DOS中断标志ES:BX=DOS中断标志35H 取中断向量AL=中断号ES:BX=中断程序入口36H 取磁盘的自由空间DL=驱动器码(0=缺省…)驱动器无效:AX=-1 有效:AX=每簇扇区数BX=自由簇数CX=每扇区字节数DX=文件区所占簇数37H 取或置命令行开关符,取或置名字检查开关AL=0(取开关符)AL=1(置开关符)DL=(开关符)AL=2(取检查开关)AL=3(置检查开关)DL=开关值DL=开关符(功能0)DL=检查开关(功能2)38H 取国家信息AL=0,DS:DX=缓冲区39H 创建子目录DS:DX=路径说明串注13AH 删除子目录DS:DX=路径说明串注13BH 设置当前目录DS:DX=路径说明串注13CH 创建文件DS:DX=文件说明,CX=属性注23DH 打开文件DS:DX=文件说明,AL=模式注23EH 关闭文件BX=文件号注13FH 读文件或设备BX=文件号CX=字符数CX:DX=缓冲区成功:CF=0,DX:AX=新指针位置失败:CF=1,AX=错误码40H 写文件或设备41H 删除文件DS:DX=文件说明串注142H 移文件指针AL=方式BX=文件号CX:DX=位移量成功:CF=0,DX:AX=新指针位置失败:CF=1,AX=错误码43H取或置文件属性AL=0(取属性)AL=1,CX=新属性(置属性)DS:DX=文件说明CX=属性(功能0)44H 设备驱动控制AL=0(取设备信息)AL=1(置设备信息)AL=2(读设备控制通道)AL=3(写设备控制通道)AL=4(同功能2)AL=5(同功能3)AL=6(取输入状态)AL=7(取输出状态)BX=文件号(功能0-3,6-7)BL=驱动器码(功能4-5)CX=字节数(功能2-5)DS:DX=缓冲区(功能2-5)失败:CF=1,AX=错误码成功:DX=设备信息(功能0)AL=状态(功能6/7)0:未准备,1:准备AX=传送字节数(功能2-5)45H 复制文件号BX=文件号成功:CF=0 AX=新文件号失败:CF=1,AX=错误码46H 强迫复制文件号BX=第1文件号CX=第2文件号注147H 取当前目录DL=驱动器码DS:SI=缓冲区注148H 分配内存BX=所需内存的节数成功:CF=0 AX=分配块的段失败:CF=1,AX=错误码BX=最大可用块大小49H 释放内存ES=释放块的段注14AH 修改内存分配ES=修改块的段BX=新长度(以节计)成功:CF=0 失败:CF=1,AX=错误码BX=最大可用块大小4BH 加载程序执行程序AL=0(加载并执行)AL=1(获得执行信息)AL=3(加载覆盖)DS:DX=程序说明ES:BX=参数块注14CH 带返回码结束AL=返回码4DH 取返回码AH=类型码,AL=返回码4EH 查找第一个匹配项CX=属性,DS:DX=文件说明注14FH 查找下一个匹配项注150H 设置PSP段地址BX=PSP段地址51H 取PSP段地址BX=PSP段地址52H 取DOS系统数据块ES:BX=DOS系统数据块53H 为块设备建立DPB DS:SI=BPB,ES:BP=DPB54H 取确认标志AL=标志值(0:关,1:开)55H 创建PSP DX=PSP56H 重命名文件DS:DX=旧名,ES:DI=新名注157H 取或置文件日期和时间AL=0,BX=文件号(取)AL=1,BX=文件号,CX=时间,DX=日期(置)成功:CF=0,CX=时间DX=日期(取)失败:CF=1,AX=错误码58H 取/置分配策略码AL=0取码=1置码(BX)BX=策略码成功:AX=策略码失败:AX=错误码59H 取扩充错误码AX=扩充错误码BH=错误类型BL=建议的操作CH=错误场所5AH 建立临时文件CX=文件属性DS:DX=ASCⅡZ串地址成功:AX=文件代号失败:AX=错误码5BH 建立新文件CX=文件属性DS:DX=ASCⅡZ串地址成功:AX=文件代号失败:AX=错误码5CH 控制文件存取AL=00封锁=01开启BX=文件代号CX:DX=文件位移SI:DI=文件长度失败:AX=错误码62H 取程序段前缀地址BX=PSP地址注1:出口参数为:成功时,CF=0;失败时,CF=1,AX=错误码注2:出口参数为:成功时,CF =0,AX=文件号;失败时,CF=1,AX=错误码。

汇编 第七章DOS的功能调用


例: MOV DL,0FFH , MOV AH,6 , INT 2lH 把键盘输入的一个字符送入AL中 ;把键盘输入的一个字符送入 中 MOV DL,61H , 中的字符“ 送屏幕显示 MOV AH,6 , ;将DL中的字符“a”送屏幕显示 中的字符 INT 21H 注:与1号、2号系统功能调用不同之处在于不检查Ctrl+Break。 号系统功能调用不同之处在于不检查Ctrl+Break。 Ctrl+Break
例7.2:编程,在显示器上显示“WHO ARE YOUR?”, :编程,在显示器上显示“ ? 然后接收你的名字并输出在显示器上。 然后接收你的名字并输出在显示器上。 DATA SEGMENT BUF DB 'WHO ARE YOU?','$' NAM DB 4,0,5 DUP ('$') DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START:MOV AX,DATA MOV DS,AX MOV DX,OFFSET BUF MOV AH,9 INT 21H MOV DX,OFFSET NAM MOV AH,0AH INT 21H MOV DL,0AH MOV AH,2 ;换行 INT 21H 换行 MOV DX,OFFSET NAM+2 MOV AH,9 INT 21H MOV AH,4CH INT 21H CODE ENDS END START
二、2号系统功能调用——显示输出 号系统功能调用 显示输出
功能:向输出设备输出一个字符。 功能:向输出设备输出一个字符。 入口参数:DL=输出字符的ASCII码 入口参数:DL=输出字符的ASCII码。 ASCII 出口参数: 出口参数:无 例:MOV DL,′A′; “A”为要求输出字符的ASCII码 DL,′A′; 为要求输出字符的ASCII 为要求输出字符的ASCII码 AH, MOV AH,2 INT 21H

第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中断INT+21H大全

出口参数:CF=0——创建成功,否则,AX=错误号(03H或05H),其含义见错误代码表
(2)、功能3AH
功能描述:删除指定的驱动器和路径的目录
入口参数:AH=3AH
DS:DX=指定路径的字符串地址(以0为字符串的结束标志)
出口参数:CF=0——删除成功,否则,AX=错误号(03H或05H),其含义见错误代码表
5、若输入的字符数超过缓冲区的最大容量,则多出的部分被丢弃,系统并发出响铃,直到输入“回车”键才结束输入。
例如:
BUFF 80, ?, 80 DUP(?) ;最多接受80个字符
出口参数:无
(9)、功能0BH
功能描述:检查标准输入设备上是否有字符可读。该输入操作可被重定向
入口参数:AH=0BH
入口参数:AH=09H
DS:DX=待输出字符的地址
说明:待显示的字符串以’$’作为其结束标志
出口参数:无
(8)、功能0AH
功能描述:从标准输入设备上读入一个字节字符串,遇到“回车键”结束输入(输入的字符在标准的输出设备上有回显)。如果该输入操作被重定向,那么,将无法判断文件是否已到文件尾
(3)、功能03H
功能描述:从辅助设备读入一个字符,该辅助设备的缺省值为COM1
入口参数:AH=03H
出口参数:AL=读入字符的ASCII码
(4)、功能04H
功能描述:向辅助设备输出一个字符,该辅助设备的缺省值为COM1
入口参数:AH=04H
DL=待输出字符的ASCII码
出口参数:无
1BH, 1CH —读取驱动器数据
2EH —设置校验标志36H —读取驱动器分配信息54H —读取校验标志

常用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
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

址 48 分配内存空间 49 释放内容空间 4A 调整已分配的存储 块 4B 装配/执行程序 BX=申请内存容量 成功:AX=分配内存 首地 失败:BX=最大可用 内存 失败:AX=错误码 失败:BX=最大可用 空间 AX=错误码
4C 带返回码结束 4D 取返回代码 4E 查找第一个匹配文 件 4F 查找下一个匹配文 件 54 取盘自动读写标志 56 文件改名 置/取文件日期和 57 时间 58 取/置分配策略码 59 取扩充ቤተ መጻሕፍቲ ባይዱ误码
=02 缓冲区溢出 AL=00 标准文件 29 分析文件名 =01 多义文件 =02 非法盘符 CX=年 2A 取日期 DH:DL=月:日(二进 制) CX:DH:DL=年:月: AL=00 成功 2B 设置日期 日 =FF 无效 CH:CL=时:分 2C 取时间 DH:DL=秒:1/100秒 CH:CL=时:分 成功 2D 设置时间 DH:DL=秒:1/100 AL=00 =FF 无效 秒 置磁盘自动读写标 AL=00 关闭标志 2E 志 AL=01 打开标志 2F 取磁盘缓冲区的首 ES:BX=缓冲区首址 址 AH=发行号,AL=版 30 取DOS版本号 本 AL=返回码 31 结束并驻留 DX=驻留区大小 DL=00 关闭CtrlAL=00 取状态 33 Ctrl-Break检测 检测 =01 置状态(DL) Break 打开Ctrl-Break DL=00 关闭检测 =01 检测 =01 打开检测 35 取中断向量 36 取空闲磁盘空间 AL=中断类型 DL=驱动器号 0=缺 省,1=A,2=B,... ES:BX=中断向量 成功:AX=每簇扇区 数 BX=有效簇数 CX=每扇区字节数 DX=总簇数 失败:AX=FFFF 国家码(国际电 DS:DX=信息区首 BX= 话前缀码) 地址 AX=错误码 DS:DX=ASCIIZ串 AX=错误码 地址 DS:DX=ASCIIZ串 AX=错误码 地址 DS:DX=ASCIIZ串 AX=错误码 地址 DS:DX=ASCIIZ串 成功:AX=文件代号 地址
5A 建立临时文件 5B 建立新文件
ES=内存起始段地 址 ES=原内存起始地 址 BX=再申请的容量 DS:DX=ASCIIZ串 地址 失败:AX=错误码 ES:BX=参数区首地 址 AL=0 装入执行 AL=3 装入不执行 AL=返回码 AX=返回代码 DS:DX=ASCIIZ串 AX=出错代码 地址 (02,18) CX=属性 DS:DX=ASCIIZ串 地址 (文件名中带有?或 AX=出错代码(18) *) AL=当前标志值 DS:DX=ASCIIZ串 (旧) AX=出错码 ES:DI=ASCIIZ串 (03,05,17) (新) BX=文件代号 DX:CX=日期和时间 AL=0 读取 AL=1 设置(DX:CX) 失败:AX=错误码 AL=0 取码 成功:AX=策略码 AL=1 置码(BX) 失败:AX=错误码 AX=扩充错误码 BH=错误类型 BL=建议的操作 CH=错误场所 CX=文件属性 :AX=文件代号 DS:DX=ASCIIZ串 成功 失败 :AX=错误码 地址 CX=文件属性 :AX=文件代号 DS:DX=ASCIIZ串 成功 失败:AX=错误码 地址
=02 DTA空间不够 =03 文件结束,记录 不完整 写成功 15 顺序写 DS:DX=FCB首地址 AL=00 =01 盘满 =02 DTA空间不够 建立成功 16 建文件 DS:DX=FCB首地址 AL=00 =FF 无磁盘空间 DS:DX=FCB首地址 (DS:DX+1)=旧文 AL=00 成功 17 文件改名 件名 (DS:DX+17)=新文 AL=FF 未成功 件名 AL=缺省的驱动器 19 取当前缺省磁盘驱 动器 号 0=A,1=B,2=C,... 1A 置DTA地址 DS:DX=DTA地址 AL=每簇的扇区数 FAT DS:BX=FAT标识字 1B 取缺省驱动器 信息 节 CX=物理扇区大小 DX=缺省驱动器的 簇数 FAT DL=驱动器号 1C 取任一驱动器 同上 信息 21 随机读 DS:DX=FCB首地址 AL=00 读成功 =01 文件结束 =02 缓冲区溢出 =03 缓冲区不满 写成功 22 随机写 DS:DX=FCB首地址 AL=00 =01 盘满 =02 缓冲区溢出 AL=00 成功(文件长 23 测定文件大小 DS:DX=FCB首地址 度填入FCB) AL=FF 未找到 24 设置随机记录号 DS:DX=FCB首地址 DS:DX=中断向量 25 设置中断向量 AL=中断类型号 新的程序段前 26 建立程序段前缀 DX= 缀 AL=00 读成功 27 随机分块读 DS:DX=FCB首地址 =01 文件结束 =02 缓冲区太小,传 CX=记录数 输结束 =03 缓冲区不满 写成功 DS:DX=FCB首地址 AL=00 28 随机分块写 =01 盘满
CX=记录数 ES:DI=FCB首地址 DS:SI=ASCIIZ串 AL=控制分析标志
38 置/取国家信息 39 建立子目录 (MKDIR) 3A 删除子目录 (RMDIR) 3B 改变当前目录 (CHDIR) 3C 建立文件
3D
3E 3F
40
41 42
43
44
45 46 47
CX=文件属性 错误:AX=错误码 DS:DX=ASCIIZ串 打开文件 地址 成功:AX=文件代号 AL=0 读 错误:AX=错误码 =1 写 =3 读/写 关闭文件 BX=文件代号 失败:AX=错误码 : DS:DX=数据缓冲 读成功 读文件或设备 AX= 实际读入的字 区地址 节数 BX=文件代号 已到文件尾 CX=读取的字节数 AX=0 读出错:AX=错误码 DS:DX=数据缓冲 写成功: 区地址 AX=实际写入的字 写文件或设备 BX=文件代号 节数 CX=写入的字节数 写出错:AX=错误码 :AX=00 DS:DX=ASCIIZ串 成功 删除文件 出错 :AX=错误码 地址 (2,5) BX=文件代号 成功:DX:AX=新文 CX:DX=位移量 移动文件指针 AL=移动方式(0:从 件指针位置 文件头绝对位移,1: 出错:AX=错误码 从当前位置相对移 动,2:从文件尾绝对 位移) DS:DX=ASCIIZ串 置/取文件属性 地址 成功:CX=文件属性 AL=0 取文件属性 失败:CX=错误码 AL=1 置文件属性 CX=文件属性 设备文件I/O控制 BX=文件代号 DX=设备信息 AL=0 取状态 =1 置状态DX =2 读数据 =3 写数据 =6 取输入状态 =7 取输出状态 成功:AX=文件代号 复制文件代号 BX=文件代号1 2 失败:AX=错误码 文件代号1 人工复制文件代号 BX= 失败:AX=错误码 CX=文件代号2 DL=驱动器号 串 取当前目录路径名 DS:SI=ASCIIZ串地 (DS:SI)=ASCIIZ 失败:AX=出错码
5C 控制文件存取
62 取程序段前缀
AL=00封锁 失败:AX=错误码 =01开启 BX=文件代号 CX:DX=文件位移 SI:DI=文件长度 BX=PSP地址
功能 程序终止(同INT 20H) 键盘输入并回显 显示输出 异步通迅输入 异步通迅输出 打印机输出 直接控制台I/O 键盘输入(无回显) 键盘输入(无回显) 检测Ctrl-Break 09 显示字符串 AH 00 01 02 03 04 05 06 07 08
调用参数 返回参数 CS=程序段前缀 AL=输入字符 DL=输出字符 AL=输入数据 DL=输出数据 DL=输出字符 DL=FF(输入) AL=输入字符 DL=字符(输出) AL=输入字符 AL=输入字符 DS:DX=串地址 '$'结束字符串 DS:DX=缓冲区首 (DS:DX+1)=实际输 0A 键盘输入到缓冲区 地址 (DS:DX)=缓冲区最 入的字符数 大字符数 AL=00 有输入 0B 检验键盘状态 AL=FF 无输入 清除输入缓冲区并 输入功能号 0C 请求指定的输入功 AL= (1,6,7,8,A) 能 0D 磁盘复位 清除文件缓冲区 指定当前缺省的磁 DL= 驱动器号 0E 盘驱动器 AL=驱动器数 0=A,1=B,... 文件找到 0F 打开文件 DS:DX=FCB首地址 AL=00 AL=FF 文件未找到 AL=00 目录修改成 10 关闭文件 DS:DX=FCB首地址 功 AL=FF 目录中未找 到文件 找到 11 查找第一个目录项 DS:DX=FCB首地址 AL=00 AL=FF 未找到 首地址 AL=00 找到 12 查找下一个目录项 DS:DX=FCB (文件中带有*或?) AL=FF 未找到 删除成功 13 删除文件 DS:DX=FCB首地址 AL=00 AL=FF 未找到 AL=00 读成功 14 顺序读 DS:DX=FCB首地址 =01 文件结束,记录 中无数据
相关文档
最新文档