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相关的操作,比如读写文件、显示字符和字符串等。

mov ah,4ch int 21h

mov ah,4ch int 21h

mov ah,4ch int 21h
Movah,4chint21h是计算机中常见的汇编语句,它也被称为“软中断”。

它是一种指令,它可以用于请求系统在完成当前任务之前,转移到另一个程序执行。

Mov ah,4ch int 21h的意思是,将参数值4ch(也就是76十进制)存储到ah寄存器中,然后当发出中断请求21h(也就是33十进制)时,系统就会运行预先定义好的软件程序,处理函数调用。

Mov ah,4ch int 21h这条指令可以用于调用系统函数,它是计算机程序设计和软件开发中比较常见的指令之一。

它可以用于执行一些系统函数,比如读写文件、定时时钟和设备管理等等。

它可以让程序更容易地完成指定任务。

Mov ah,4ch int 21h是由x86处理器的BIOS(基本输入输出系统)定义的,它是一种处理器的内部调用函数,它以更高的效率执行了一些操作系统任务,比如打开、关闭文件,这种函数的调用效率比调用操作系统的外部服务要高得多。

Mov ah,4ch int 21h也可以用于执行一些应用程序,比如执行一个应用程序,调用其自带的函数,以及在调用操作系统服务之前做一些准备工作。

Mov ah,4ch int 21h可以用于实现很多功能,比如文件操作,目录操作,编辑文本文件,复制文件,运行程序,打开文件等等。

它还可以用于创建、修改、删除文件,连接到网络,获取系统信息等等。

因此Mov ah,4ch int 21h是一条用于实现既可以完成系统功能,
又可以实现应用程序功能的指令,并且它的使用可以极大地提高程序的效率。

由于它的重要性,Mov ah,4ch int 21h被称为“软中断”,它是一般程序员必须懂得、使用的指令之一。

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个按键(包括回车)。

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=错误码。

int指令

int指令

功能描述:控制台(如:键盘、屏幕)输入/输出。如果输入/输出操作被重定向,那么,将无法判断文件是否已到文件尾,或磁盘已满
入口参数:AH=06H,DL=输入/输出功能选择
出口参数:若DL=00H-FEH,则此功能为输出,DL为待输出字符的ASCII码;
若DL=0FFH,则此功能为输入,此时:若ZF=1,则无字符可读,否则,AL=读入字符的ASCII码
(2)、功能0EH
功能描述:指定当前驱动器
入口参数:AH=0EH
DL=驱动器号(0=A,1=B,...)
出口参数:AL=系统中当前的驱动器号
(3)、功能19H
功能描述:取当前缺省驱动器号
入口参数:AH=19H
出口参数:AL=驱动器号(0=A,1=B,...)
(4)、功能1BH和1CH
入口参数:AH=3CH
DS:DX=指定文件名字符串的地址(以0为字符串的结束标志)
CX=文件属性(这些标志位可以组合) 位0=1——只读
位2=1——系统
位5=1——归档位1=1——隐含
位3=1——卷标号
其它位保留不用,并置为0
出口参数:CF=0——创建成功,AX=文件句柄,否则,AX=错误号(03H、04H或05H),其含义见错误代码表
入口参数:AH=47H
DL=驱动器号(0=缺省,1=A,…)
DS:SI=存放当前目录字符串的地址
出口参数:CF=0——读取成功,否则,AX=错误号(0FH),其含义见错误代码表
3、磁盘管理功能(Disk-Management Function)
0DH —磁盘复位
0EH —选择磁盘
Area)按下列方式填入数据: 字节00~14H保留

DOS系统功能调用

DOS系统功能调用

等待从键盘输入字符串,并存入设定的缓冲区内,同时回 显字符串,光标随着移动,回车符使光标回到行首。调用 方法如下: MOV INT AH,0AH 21H
缓冲区第一个字节存放它能保存的最大字符数(1~255,不能为‘0’!),该 值由用户程序自己事先设置。如果键如的字符数比此数大,那就会发出“嘟嘟” 声,而且光标不再向右移动。
DOS功能子程序的调用(续)
则输入串的指令如下: MOV AX,SEG MOV DS,AX MOV DX,OFFSET MOV AH,0AH INT 21H MAX_LEN MAX_LEN
4.字符显示(2号功能) 本功能子程序仅在屏幕上显示单个字符。要显示字符的ASCII码存 放在DL中。如果DL中存放退格键编码,在屏幕上便向左移一个字 符位置,并使该位置成为空格。移动后光标停留在那里。如要显 示字符‘A’,可用下列几条指令调用: MOV MOV INT DL,‘A’ AH,2 21H
DOS功能子程序的调用(续)
5.字符打印(5号功能) 5号功能子程序把DL中的字符(ASCII码)送入打印机接口,打印输出。 功能调用为: MOV MOV DL,‘A’ AH,5
INT
21H
6.字符串显示(9号功能) 9号功能子程序能在屏幕上显示多于一个的字符串。要显示的字符 串必须先放在内存一数据区中,且字符串以美元符号‘$’作为结束 标志。非显示字符,可以用它的ASCII码插入字符串中间。进行9号功 能调用时,先把待显示的字符串首地址的段基值和偏移量分别存入DS 和DX中。 在数据段中定义一个待显示符号串如: STRING DB “THIS IS A PROGRAM”,0AH,0DH,“$”
INT
MOV INT …… IRET
21H

dos中断INT+21H大全

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 —读取校验标志

INT 21H 详解

INT 21H 详解

INT 21H 详解_字符功能调用类(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功能描述:向标准的输出设备输出一个字符。

该缺省的输出设备为LPT1端口的打印机,除非用MODE命令来改变入口参数:AH=05HDL=待输出字符的ASCII码出口参数:无(6)、功能06H功能描述:控制台(如:键盘、屏幕)输入/输出。

如果输入/输出操作被重定向,那么,将无法判断文件是否已到文件尾,或磁盘已满入口参数:AH=06H,DL=输入/输出功能选择出口参数:若DL=00H-FEH,则此功能为输出,DL为待输出字符的ASCII码;若DL=0FFH,则此功能为输入,此时:若ZF=1,则无字符可读,否则,AL=读入字符的ASCII码(7)、功能09H功能描述:输出一个字符串到标准输出设备上。

常用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)=实际输入的字符

汇编语言程序设计教程(第二版)习题参考答案

汇编语言程序设计教程(第二版)习题参考答案

汇编语言程序设计教程(第二版)习题参考答案第1章计算机基础知识1.计算机的应用分哪几个方面,请举例说明书中未提到的领域的计算机应用。

科学计算、数据处理、计算机控制、计算机辅助设计、人工智能、企业管理、家用电器、网络应用。

书中未提及的如:远程教育、住宅小区控制、飞行系统控制与管理等。

2.简述计算机的发展过程,请查阅相关资料,列出微机的发展过程。

电子管、晶体管、集成电路、大规模集成电路以IBM为例,微机的发展:4004、8008、8080、8086/8088、80286、80386、80486、Pentium 系列3.计算机的字长是怎么定义的,试举例说明。

计算机能同时处理二进制信息的位宽定义为计算机的字长。

如8086能同时进行16位二进制数据的运算、存储和传输等操作,该机器的字长为16位。

4.汇编语言中的基本数据类型有哪些?数值型数据和非数值型数据。

非数值数据如字符、字符串、逻辑值等。

(1)7BCH=011110111100B=1980D(2)562Q=101110010B=370D(3)90D=01011010B=5AH(4)1110100.111B=164.7Q=74.EH30H~39H 41H~5AH 61H~7AH9.在汇编语言中,如何表示二进制、八进制、十进制和十六进制的数值?用相应进制的数值加上进制标记即可。

二进制用B,如10101010B八进制用Q,如437Q。

十进制用D或不用,如54D,或54。

十六进制用H,如27A8H10.完成下列二进制数的加减运算。

(1)10101010 + 11110000 (2)11001100 + 01010100=110011010 =100100000(3)11011010 - 01010010 (4)11101110 - 01001101=10001000 =1010000111.完成下列十六进制数的加减运算。

(1)0FEA9 - 8888=7621H (2)0FFFF - 1234=EDCBH(3)0EAC0 + 0028=EAE8H (4)3ABC + 1678=5134H12.完成下列BCD码的运算。

微机原理-第7章 汇编语言与汇编程序5 常用DOS系统功能调用及BIOS功能调用-文档资料

微机原理-第7章 汇编语言与汇编程序5 常用DOS系统功能调用及BIOS功能调用-文档资料

常用DOS系统功能调用
① ② ③ ④ ⑤ ⑥

单字符输入 ( 01H、07H、08H功能 ) 显示单字符 ( 02H、05H功能 ) 单字符输入或显示( 06H功能 ) 字符串输入 ( 0AH功能 ) 显示字符串 ( 09H功能 ) 检测键盘状态 ( 0BH功能 )
① 单字符输入 (01H、07H、08H功能)
max DB 11 DB ? DB 11 DUP(?)
SEGMENT ASSUME CS:code, DS:data MOV AX , data ;置缓冲区地址于DS:DX
ROM BASIC ROM BIOS ( a)
FFFFH
ROM BASIC ROM BIOS (b)
FFFFH
图 7.5-1 PC-DOS (a) DOS启动后 (b) 执行程序装入后
软件中断分类
DOS中断
中断类型号
20H~3FH 为用户程序和系统程序提供磁盘读写、程 序退出、系统功能调用等功能。
③ 单字符输入或显示 (06H功能)
入口参数:DL = 0FFH,表示从键盘输入字符
或 DL ≠ 0FFH,表示DL中是要显示字符的ASCII 码
功能号:
类型号:
AH = 06H
21H
出口参数:若ZF=0时,表示有键按下,将字符的ASCII码
送入寄存器AL, AL=输入字符。 若标志ZF=1时,表示无键按下,寄存器AL中不 是键入字符ASCII码, AL=0 。
② 显示单字符 (02H、05H功能)
(a)2号系统功能调用
入口参数:DL = 要显示字符的ASCII 码 功能号: AH = 02H 类型号: 21H 出口参数:无 实现功能:显示指定字符,光标右移。

设置和获取中断向量

设置和获取中断向量

2.获取中断向量 获取中断向量也有两种常用方法:直接读取法 和使用DOS功能调用法。
方法1:直接读取法 利用MOV指令直接读取中断向量。 例 利用直接读取法读取n号中断向量,并保存在双字 变量OLDVECTOR中: XOR AX,AX MOV ES,AX MOV AX,ES∶[n*4] MOV WORD PTR OLDVECTOR,AX MOV AX,ES∶[n*4+2] MOV WORD PTR OLDVECTOR+2,AX
CLI MOV WORD PTR[BX],OFFSET INTHAND MOV WORD PTR[BX+2],SEG INTHAND STI MOV AX,0 MOV DS,AX MOV BX,n*4
方法2:使用DOS功能调用法 使用25H号DOS功能调用 可以设置中断向量,出口参数如下: 预置:AH=25H
设置和获取中断向量 在系统程序或应用程序由于某种需要而提供新的 中断处理程序时,就要设置对应的中断向量,使其指向 方法:直接写入法和使用DOS 调用法。 方法1:直接写入法 用MOV指令将中断向量直接写入 中断向量表,下面是一个直接写入法的例子。 例 使用直接写入法设置中断向量。
MOV AH,35H MOV AL,n INT 21H MOV WORD PTR OLDVECTOR,ES MOV WORD PTR OLDVECTOR,BX
方法2:使用DOS功能调用法 利用35H号 DOS功能调用 可以取得指定中断号的中断向量,其出入口参数如下: 预置:AL=中断类型号 执行:INT 21H 功能:读取指定中断的中断向量,其中: ES=中断处理程序的段地址 BX=中断处理程序的偏移地址 例7-4 使用DOS功能调用取得n号中断的中断向量

宏及过程调用实验报告

宏及过程调用实验报告

子程序及宏的使用实验报告一、实验目的1、练习使用子程序和宏;2、练习使用功能调用(INT 21H)中关于字符输入及字符输出部分。

二、实验准备1、事先编写实验内容的汇编源程序2、用ORG确定数据在内存中的偏移地址三、实验内容1、从键盘输入10个一位或两位的十进制数,用压缩BCD码形式存入数据段1000H起的内存单元中,且每个数在屏幕上显示成一行,共10行2、编程从上面十个数中找出最大值,显示在屏幕上。

3、选作内容:将十个数按从大到小的顺序排列在数据区中程序设计如下:NAME EXP ;程序名称DATA SEGMENT ;数据段MESS DB 'INPUT 10 DECIMAL NUMBER:', 0DH,0AH,'$' ;提示输入10个十进制数字ERROR1 DB 0DH,0AH,'NOT DECIMAL NUMBER!',0DH,0AH,'$' ;错误提示一:输入的不是数字ERROR2 DB 0DH,0AH,'TOO LARGE DECIMAL NUMBER!',0DH,0AH,'$' ;错误提示二:输入的数字太大(三位数)MESS1 DB 0DH,0AH,'INPUTED NUMBER:',0DH,0AH,'$' ;输出提示一:输出输入的十个数字MESS2 DB 'THE LARGEST NUMBER:',0DH,0AH,'$' ;输出提示二:输出最大数字MESS3 DB 0DH,0AH,'SORTED NUMBER:',0DH,0AH,'$' ;输出提示三:输出排序后的十个数字ORG 1000H ;将十个数字的开始偏移地址设为1000HNUBLIST DB 10 DUP(?) ;数字列表LARGEST DB ? ;存储最大数字DATA ENDSSTACK SEGMENT STACK ;堆栈段DB 1000 DUP(?)STACK ENDSCODE SEGMENT ;代码段ASSUME DS:DATA,CS:CODE,SS:STACK,ES:DATAEXP PROC FAR ;将程序定义成远过程START: PUSH DSMOV AX,0PUSH AXMOV AX,DATAMOV DS,AXMOV ES,AXLEA SI,NUBLISTCALL MS ;显示输入提示MOV CL,10NEXT: XOR AX,AXCALL INP ;调用接收字符子程序JNZ NEXTMOV AH,9MOV DX,OFFSET MESS1 ;输出提示一:顺序输出输入的十个数字INT 21HLEA SI,NUBLISTMOV CH,10LOK: CALL LOOK ;输出一个数字INC SIDEC CHJNZ LOKMOV AH,9MOV DX,OFFSET MESS2 ;输出提示二:输出最大数字INT 21HCALL MAXMOV AH,9MOV DX,OFFSET MESS3 ;输出提示三:输出排序后的十个数字INT 21HCALL SORT ;进行排序LEA SI,NUBLISTMOV CH,10LOK1: CALL LOOK ;输出INC SIDEC CHJNZ LOK1MOV AH,4CH ;退出程序功能调用INT 21HMS PROC ;显示输入提示MOV AH,9MOV DX,OFFSET MESS ;输出输入提示INT 21HRETMS ENDPINP PROCHC: MOV AH,1 ;接收第一个字符INT 21HCMP AL,0DH ;检查是否直接回车JZ HCCMP AL,39H ;检查是否在数字范围内JA ER1CMP AL,30HJB ER1PUSH AXMOV AH,1 ;接收第二个字符INT 21HCMP AL,0DH ;检查是否回车JZ DEAL1 ;如果是,则进行一位数处理CMP AL,39H ;检查是否在数字范围内JA ER2CMP AL,30HJB ER2PUSH AXMOV AH,1 ;接收第三个字符INT 21HCMP AL,0DH ;检查是否回车JZ DEAL2 ;如果是,则进行两位数处理MOV AH,9 ;否则为三位数,输出错误提示二MOV DX,OFFSET ERROR2INT 21HPOP DXPOP DXJMP HCDEAL1: POP AX ;一位数处理SUB AL,30H ;将ASCII码转换成十进制数MOV [SI],AL ;移入数字列表中INC SIMOV AH,2H ;输出数字MOV DL,0AHINT 21HDEC CLJMP REDEAL2: POP AX ;两位数处理SUB AL,30H ;将个位ASCII码转换成十进制数POP BXSUB BL,30H ;将十位ASCII码转换成十进制数SHL BL,4 ;将十位左移四位ADD AL,BL ;将十位和个位相加MOV [SI],AL ;移入数字列表中INC SIMOV AH,2H ;输出数字MOV DL,0AHINT 21HDEC CLJMP REER1: CALL ERR1JMP HCER2: CALL ERR2JMP HCRE: RETINP ENDPERR1 PROC ;错误提示一:输入不是数字MOV AH,9MOV DX,OFFSET ERROR1INT 21HRETERR1 ENDPERR2 PROC ;错误提示二:输入数字太大MOV AH,9MOV DX,OFFSET ERROR1INT 21HPOP DXRETERR2 ENDPLOOK PROC ;输出一个数字MOV AL,[SI]MOV CL,4SHR AL,CLCALL DSP ;输出十位MOV AL,[SI]AND AL,0FHCALL DSP ;输出个位MOV DL,0DH ;回车MOV AH,2INT 21HMOV DL,0AH ;换行MOV AH,2INT 21HRETLOOK ENDPMAX PROC ;查找最大数字LEA SI,NUBLISTMOV CL,9HMOV AL,[SI] ;将当前最大数字存在AL中COMP: INC SIMOV BL,[SI] ;每次取一个数字,放入BL中CMP AL,BL ;将它和当前最大数字进行比较JA NCHX ;如果它较小,则不交换MOV AL,BL ;否则将它放入AL中成为新的最大数字NCHX: DEC CLJNZ COMPMOV LARGEST,AL ;存入最大数字单元中CALL OUTP ;输出最大数字RETMAX ENDPOUTP PROC ;输出最大数字MOV AL,LARGESTMOV CL,4SHR AL,CLCALL DSP ;输出十位MOV AL,LARGESTAND AL,0FHCALL DSP ;输出个位RETOUTP ENDPDSP PROC ;将十进制转换成ASCII码,以便输出ADD AL,30HMOV DL,ALMOV AH,2INT 21HRETDSP ENDPSORT PROC ;冒泡法排序LEA SI,NUBLISTMOV CL,9 ;总共进行九次大循环,每一次将最小的放到最后CSH: MOV CH,CLGSH: MOV AL,[SI] ;取相邻的两个数MOV BL,[SI+1]CMP AL,BL ;进行比较JA NCH ;如果前一个大,则不交换顺序MOV DL,BL ;否则交换两者的顺序MOV BL,ALMOV AL,DLMOV [SI],AL ;送回内存中MOV [SI+1],BLNCH: INC SIDEC CHJNZ GSHMOV AL,CLXOR AH,AHSUB SI,AX ;第二次大循环要从头开始比较DEC CLJNZ CSHRETSORT ENDPEXP ENDPCODE ENDSEND START反汇编结果(前几行),可以看到输入的十个数据存放的地址为0C28:1000H。

int 21h和int 16h调用详解

int 21h和int 16h调用详解

INT 10H 是由BIOS 对屏幕及显示器所提供的服务程序,而后倚天公司针对倚天中文提供了许多服务程序,这些服务程序也加挂在INT 10H 内。

使用INT 10H 中断服务程序时,先指定AH 寄存器为下表编号其中之一,该编号表示欲调用的功用,而其他寄存器的详细说明,参考表后文字,当一切设定好之后再调用INT 10H。

底下是它们的说明:BIOS中断:1、显示服务(Video Service——INT 10H)00H —设置显示器模式01H —设置光标形状02H —设置光标位置03H —读取光标信息04H —读取光笔位置05H —设置显示页06H、07H —初始化或滚屏08H —读光标处的字符及其属性09H —在光标处按指定属性显示字符0AH —在当前光标处显示字符0BH —设置调色板、背景色或边框0CH —写图形象素0DH —读图形象素0EH —在Teletype模式下显示字符0FH —读取显示器模式10H —颜色11H —字体12H —显示器的配置13H —在Teletype模式下显示字符串1AH —读取/设置显示组合编码1BH —读取功能/状态信息1CH —保存/恢复显示器状态(1)、功能00H功能描述:设置显示器模式入口参数:AH=00HAL=显示器模式,见下表所示出口参数:无可用的显示模式如下所列:00H:40×25 16色文本01H:40×25 16色文本02H:80×25 16色文本03H: 80×25 16色文本04H:320×200 4色05H:320×200 4色06H:640×200 2色07H:80×25 2色文本08H:160×200 16色09H:320×200 16色0AH:640×200 4色0BH:保留0CH:保留0DH:320×200 16色0EH:640×200 16色0FH:640×350 2(单色)10H:640×350 4色10H:640×350 16色11H:640×480 2色12H:640×480 16色13H:640×480 256色对于超级VGA显示卡,我们可用AX=4F02H和下列BX的值来设置其显示模式。

编译语言int 21h

编译语言int 21h

编译语言int 21hINT 21h是一个非常常见的指令,在基于x86架构的计算机上,它用于进行DOS系统功能调用。

这个指令非常重要,不仅因为它在早期的计算机上被广泛使用,而且因为它仍然在一些特定的环境中使用。

INT 21h的作用是向DOS系统请求一些操作,例如文件读写、键盘输入输出等等。

在这篇文章中,我们将从不同角度来深入探讨INT 21h的使用和工作原理。

首先我们来看一下INT 21h的具体用法。

INT 21h指令的格式如下:```INT 21h```这条指令的作用是将程序控制权交给DOS系统,并执行由寄存器AH中的值来确定的DOS功能。

之后DOS根据开发者的调用,执行相应的操作,并将结果存储在寄存器中,供程序进一步处理。

现在我们来看一下,INT 21h可以完成哪些功能。

DOS系统中提供了许多不同的功能,它们都可以通过INT 21h来访问。

其中一些常见的功能包括:1.文件读写:INT 21h提供了一系列的功能,用于对文件进行读写操作。

通过设置寄存器中的不同的参数,我们可以实现文件的打开、读取、写入、关闭等操作。

这使得开发者可以通过INT 21h来实现对文件的操作,从而简化了编程的过程。

2.键盘输入输出:INT 21h还提供了键盘输入输出的功能。

通过调用相应的函数,我们可以从键盘上读取输入,或者将数据输出到屏幕上。

这使得我们可以轻松地与用户交互,获取输入并显示输出。

3.系统调用:INT 21h还提供了一些系统调用的功能。

例如,我们可以通过INT 21h获取系统的时间和日期,设置DOS的中断向量等等。

这些系统调用提供了一些有用的功能,使得我们能够更好地控制和管理系统。

以上只是INT 21h功能的一部分,实际上,INT 21h提供了很多其他的功能。

通过设置不同的参数和调用不同的函数,我们可以访问到更多的功能。

接下来我们来看一下INT 21h的工作原理。

当我们执行INT 21h 指令时,处理器会将程序的控制权交给DOS系统。

汇编指令INT21功能大全

汇编指令INT21功能大全
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=驱动器号
DOS功能调用
作者:来源:互联网
AH
功能
调用参数
返回参数
00
程序终止(同INT 20H)
CS=程序段前缀
01
键盘输入并回显
AL=输入字符
02
显示输出
DL=输出字符
03
异步通迅输入
AL=输入数据
04
异步通迅输出
DL=输出数据
05
打印机输出
DL=输出字符
06
直接控制台I/O
DL=FF(输入)
DL=字符(输出)
移动文件指针
BX=文件代号
CX:DX=位移量
AL=移动方式(0:从文件头绝对位移,1:从当前位置相对移动,2:从文件尾绝对位移)
成功:DX:AX=新文件指针位置
出错:AX=错误码
43
置/取文件属性
DS:DX=ASCIIZ串地址
AL=0取文件属性
AL=1置文件属性
CX=文件属性
成功:CX=文件属性
失败:CX=错误码
AL=00读成功
=01文件结束,记录中无数据
=02 DTA空间不够
=03文件结束,记录不完整
15

int21H中断大全

int21H中断大全

中断INT 21H :1、字符功能调用类(Character-OrientedFunction)********************************************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功能描述:向标准的输出设备输出一个字符。

该缺省的输出设备为LPT1端口的打印机,除非用MODE命令来改变DL=待输出字符的ASCII码出口参数:无(6)、功能06H功能描述:控制台(如:键盘、屏幕)输入/输出。

如果输入/输出操作被重定向,那么,将无法判断文件是否已到文件尾,或磁盘已满入口参数:AH=06H,DL=输入/输出功能选择出口参数:若DL=00H-FEH,则此功能为输出,DL为待输出字符的ASCII码;若DL=0FFH,则此功能为输入,此时:若ZF=1,则无字符可读,否则,AL=读入字符的ASCII码(7)、功能09H功能描述:输出一个字符串到标准输出设备上。

汇编常用的INT21H系统调用

汇编常用的INT21H系统调用

汇编常用的INT21H系统调用系统功能调用——由DOS提供的一组实现特殊功能的子程序供程序员在编写自己的程序时调用,以减轻编程的工作量。

分两种,DOS系统功能调用和BIOS终端调用。

汇编语言中DOS系统功能调用有很多,涉及屏幕显示、文件管理、I/O管理等等,每个子程序都有一个功能号,所有的功能调用的格式都是一致的。

调用的步骤大致如下:(1)系统功能号送到寄存器AH中;(2)入口参数送到指定的寄存器中;(3)用INT 21H指令执行功能调用;(4)根据出口参数分析功能调用执行情况。

下面归纳5个在汇编中常用的INT 21H系统功能调用。

功能:返回DOS入口参数:无调用方法MOV AH,4CHINT 21H通过4CH功能调用能够结束当前正在执行的程序,返回DOS系功能:从键盘输入一个字符到AL中,AL中为该字符的ASCII码。

入口参数:无调用方法MOV AH,1INT 21H执行完上面的系统调用后,出现提示输入光标,从键盘输入一个字符并保存其ASIIC码到AL寄存器中。

<例子>:交互式程序中用户按下数字键1,2,3,程序转入相应的服务子程序,若按下其他键则会继续等待。

代码:[plain] view plain copyprint?1.KEY: MOV AH,12.INT 21H ;系统等待输入一个字符3.CMP AL,'1'4.JE ONE ;如果输入字符为1则跳到标识符ONE处执行5.CMP AL,'2'6.JE TWO ;如上解析7.CMP AL,'3'8.JE THREE9.JMP KEY ;如果不是1、2、3则继续输入字符10.ONE: ......11.TWO: ......12.THREE: ......3、输出显示一个字符(AH=2)功能:输出DL寄存器中的字符到显示器。

入口参数:被输出显示的字符或者字符ASCII码送到DL寄存器中调用方法MOV DL,字符码MOV AH,2INT 21H执行完上面的调用后,显示器显示出DL中的字符。

汇编INT 21H的作用

汇编INT 21H的作用

汇编语言\INT 21H - 以现在的努力程度之低,谈狗屁
的未来,屎的梦想!!! - 博客频道 .html
每一个功能都有一个编号其中在显示器显示输出这个功能的编号是09movah09h这个就表示把09这个编号放入ahint21h表示代码运行到这里需要dos系统工作了做什么工作呢
指令自动转入中断子程序的入口
以8086 CPU的汇编为例,输出一个字符串,就要使用
如下指令: MOV AH,09H INT 21ቤተ መጻሕፍቲ ባይዱ 假如要在显示器显示输入一个字符串,实际上就是要 调用DOS系统的功能来实现。 当然,DOS是包括多种功能,如接受用户输入,显示 输出,输出到打印机打印等...... 每一个功能,都有一个编号,其中,在“显示器显示 输出”这个功能的编号是09
MOV AH,09H
这个就表示把09这个编号放入AH

INT 21H 表示 代码运行到这里,需要DOS系统工作了,
做什么工作呢?DOS系统会查找AH里面是什么,上例 是09, DOS系统就知道要做什么工作了。
所以,可以这样理解,INT 21H是命令系统工作的意思,
至于做什么工作,就看你往AH里面放了什么代码。
ASSUME CS:CODES,DS:DATAS
DATAS SEGMENT STRING DB 'Hello World!','$' DATAS ENDS CODES SEGMENT BEGIN: MOV AX,DATAS MOV DS,AX LEA DX,STRING MOV AH,09H INT 21H MOV AH,4CH ; 4CH编号表示结束DOS的功能,再返回本程序 INT 21H CODES ENDS END BEGIN
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
AL=3(置检查开关)
DL=开关值
DL=开关符(功能0)
DL=检查开关(功能2)
38H
取国家信息
AL=0,DS:DX=缓冲区
39H
创建子目录
DS:DX=路径说明串
注1
3AH
删除子目录
DS:DX=路径说明串
注1
3BH
设置当前目录
DS:DX=路径说明串
注1
3CH
创建文件
DS:DX=文件说明,CX=属性
注2
注2:出口参数为:成功时,CF=0,AX=文件号;失败时,CF=1,AX=错误码
伦惠峰
关注- 0
粉丝- 0
关注博主
0
0
0
(请您对文章做出评价)
BX=最大可用块大小
49H
释放内存
ES=释放块的段
注1
4AH
修改内存分配
ES=修改块的段
BX=新长度(以节计)
成功:CF=0
失败:CF=1,AX=错误码
BX=最大可用块大小
4BH
加载程序
执行程序
AL=0(加载并执行)
AL=1(获得执行信息)
AL=3(加载覆盖)
DS:DX=程序说明
ES:BX=参数块
注1
AX=传送字节数(功能2-5)
45H
复制文件号
BX=文件号
成功:CF=0
AX=新文件号
失败:CF=1,AX=错误码
46H
强迫复制文件号
BX=第1文件号
CX=第2文件号
注1
47H
取当前目录
DL=驱动器码
DS:SI=缓冲区
注1
48H
分配内存
BX=所需内存的节数
成功:CF=0
AX=分配块的段
失败:CF=1,AX=错误码
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
35H
取中断向量
AL=中断号
ES:BX=中断程序入口
36H
取磁盘的自由空间
DL=驱动器码(0=缺省…)
驱动器无效:AX=-1
有效:AX=每簇扇区数
BX=自由簇数
CX=每扇区字节数
DX=文件区所占簇数
37H
取或置命令行开关符,
取或置名字检查开关
AL=0(取开关符)
AL=1(置开关符)
DL=(开关符)
AL=2(取检查开关)
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=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:准备
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(写设备控制通道)
26F
创建程序段前缀
DX=新程序段的段地址
27H
随机读若干记录
CX=记录数
DS:DX=FCB
AL=返回码
CX=实际记录数
28H
随机写若干记录
29H
分析文件名
AL=控制分析标志
DS:SI=正文串段:位移
ES:DI=FCB段:位移
AL=分析结果
DS:SI=分析后的头一字符段的段:位移
2AH
取系统日期
CX=年,AL=星期
AL=0:成功,-1失败
31H
结束并驻留
AL=返回码,DX=内存大小
32H
取指定驱动器的DPB
DL=驱动器码(0=缺省…)
DS:BX=DPB
33H
取或置Ctrl-Break标志
AL=0(取标志)
AL=1(置标志),DL=标志
DL=标志状态(功能0)
(0:关,1:开)
34H
取DOS中断标志
ES:BX=DOS中断标志
AL=0:成功,-1:失败
18H
保留未用
19H
取缺省盘驱动器
AL=驱动器码(0=A)
1AH
设置DTA
DS:DX=DTA
1BH
取缺省驱动器的分配信息
AL=每簇的扇区数
CX=每扇区的字节数
DX=文件区所占簇数
DS:BX=介质描述字节
1CH
取指定驱动器的分配信息
DL=驱动器码(0=缺省…)
同上
1DH
保留未用
3DH
打开文件
DS:DX=文件说明,AL=模式
注2
3EH
关闭文件
BX=文件号
注1
3FH
读文件或设备
BX=文件号
CX=字符数
CX:DX=缓冲区
成功:CF=0,DX:AX=新指针位置
失败:CF=1,AX=错误码
40H
写文件或设备
41H
删除文件
DS:DX=文件说明串
注1
42H
移文件指针
AL=方式
BX=文件号
INT 21H功能调用一览表
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(输出请求)
失败:CF=1,AX=错误码
58H
取/置分配策略码
AL=0取码
=1置码(BX)
BX=策略码
成功:AX=策略码
失败:AX=错误码
59H
取扩充错误码
AX=扩充错误码
BH=错误类型
BL=建议的操作
CH=错误场所
5AH
建立临时文件
CX=文件属性
DS:DX=ASCⅡZ串地址
成功:AX=文件代号
失败:AX=错误码
DS:SI=BPB,ES:BP=DPB
54H
取确认标志
AL=标志值(0:关,1:开)
55H
创建PSP
DX=PSP
56H
重命名文件
DS:DX=旧名,ES:DI=新名
注1
57H
取或置文件日期和时间
AL=0,BX=文件号(取)
AL=1,BX=文件号,
CX=时间,DX=日期(置)
成功:CF=0,CX=时间
DX=日期(取)
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)
1EH
保留未用
1FH
取缺省驱动器的DPB
DS:BX=DPB
20F
保留未用
21F
随机读一个记录
DS:DX=FCB
AL=返回码
22F
随机写一个记录
DS:DX=FCB
AL=返回码
23F
取文件大小
DS:DX=未打开的FCB
AL=0:成功,-1:失败
24F
设置随机记录号
DS:DX=FCB
25F
置中断向量
AL=中断号,DS:DX=入口
4CH
带返回码结束
AL=返回码
4DH
取返回码
AH=类型码,AL=返回码
4EH
查找第一个匹配项
CX=属性,DS:DX=文件说明
注1
4FH
查找下一个匹配项
注1
50H
设置PSP段地址
BX=PSP段地址
51H
取PSP段地址
BX=PSP段地址
52H
取DOS系统数据块
ES:BX=DOS系统数据块
相关文档
最新文档