北方工业大学微机原理汇编指令INT21功能大全

合集下载

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_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的值来设置其显示模式。

汇编语言指令功能总结

汇编语言指令功能总结

汇编语言指令功能总结汇编语言是一种低级语言,主要用于编写机器码指令的程序。

在计算机科学领域中,汇编语言是非常重要的,因为它可以直接操作计算机的硬件资源。

本文将对汇编语言中常用的指令功能进行总结。

1. 数据传输指令数据传输指令用于将数据从一个位置传送到另一个位置。

常用的数据传输指令包括MOV(将数据从一个位置复制到另一个位置)、XCHG(交换两个位置的数据)、PUSH(将数据压入堆栈)、POP (将数据从堆栈中弹出)等。

2. 算术运算指令算术运算指令用于执行各种算术运算,例如加法、减法、乘法和除法。

常用的算术运算指令包括ADD(将两个数相加)、SUB(将一个数减去另一个数)、MUL(将两个数相乘)、DIV(将一个数除以另一个数)等。

3. 逻辑运算指令逻辑运算指令用于执行各种逻辑运算,例如与、或、非和异或。

常用的逻辑运算指令包括AND(对两个数执行与运算)、OR(对两个数执行或运算)、NOT(对一个数执行非运算)、XOR(对两个数执行异或运算)等。

4. 控制转移指令控制转移指令用于实现程序的跳转和循环执行。

常用的控制转移指令包括JMP(无条件跳转到指定的地址)、JZ(如果前一个运算结果为零则跳转)、JC(如果前一个运算结果进位则跳转)等。

5. 位操作指令位操作指令用于对数据的位进行操作。

常用的位操作指令包括AND(将两个数的对应位执行与运算)、OR(将两个数的对应位执行或运算)、NOT(取反操作)等。

6. 字符串操作指令字符串操作指令用于对字符串进行操作。

常用的字符串操作指令包括MOVSB(将一个字节从源地址复制到目的地址)、LODSB(将一个字节从源地址加载到AL寄存器)、STOSB(将AL寄存器中的值存储到目的地址)等。

7. 输入输出指令输入输出指令用于与计算机的输入输出设备进行交互。

常用的输入输出指令包括IN(从指定的端口读取数据)、OUT(将数据发送到指定的端口)等。

总结:汇编语言中的指令功能丰富多样,可以实现各种复杂的操作。

北方工业大学微机原理第4讲 8086 8088汇编语言程序设计

北方工业大学微机原理第4讲 8086 8088汇编语言程序设计



汇编语言源程序
用助记符编写
源程序的编译程序 汇编程序 机器语言 目标程序
4
汇编程序
汇编语言 源程序
微机原理与接口技术——第4讲 汇编语言程序设计
4.0 汇编语言源程序——基础知识

为什么要用汇编语言? 程序短小,节省内存; 执行速度快; 用户可直接对硬件实施控制。 实时性要求很高的程序常常还采用汇编语言程序。
符号地址 定义变量类型
定义变量值 及区域大小
29
微机原理与接口技术——第4讲 汇编语言程序设计
1. 数据定义伪指令助记符

DB DW
定义的变量为字节型 定义的变量为字类型(双字节)


DD
DQ
定义的变量为双字型(4字节)
定义的变量为4字型(8字节)
DT
定义的变量为10字节型
30
微机原理与接口技术——第4讲 汇编语言程序设计
指示性语句中至 少有一个操作数
13
微机原理与接口技术——第4讲 汇编语言程序设计
3. 标号与名字

标号后有冒号,在指令性语句前; 名字后不加冒号,在指示性语句前。 英文字母、数字及专用字符组成,最大长度不能超过31 个,且不能由数字打头,不能用保留字(如寄存器名,指 令助记符,伪指令)。
14
2. 汇编语言语句格式
指令性语句:
[标号:] [前缀] 助记符 [操作数],[操作数] [ ;注释]
指令的符号地址 标号后要有冒号
操作码 注释前加分号
12
微机原理与接口技术——第4讲 汇编语言程序设计
指示性语句格式
[名字] 伪指令助记符 操作数 [,操作数,…] [ ;注释]

int 21h汇编语言

int 21h汇编语言

int 21h汇编语言【实用版】目录1.汇编语言简介2.int 21h 的含义和作用3.int 21h 的典型用法4.int 21h 的实际应用案例5.int 21h 汇编语言的优缺点正文一、汇编语言简介汇编语言是一种低级编程语言,用于编写计算机程序。

它使用计算机处理器能够理解和执行的指令。

与高级编程语言相比,汇编语言更接近计算机硬件,执行速度更快。

但由于其语法较为复杂,编写难度较大。

汇编语言的一个显著特点是,它与特定的计算机架构密切相关,因此,针对不同的计算机体系结构,需要使用不同的汇编语言。

二、int 21h 的含义和作用int 21h 是汇编语言中一种特殊的指令,常用于 DOS(Disk Operating System)操作系统中。

它的含义是向 DOS 传递一个字节(8 位),以便操作系统能够根据该字节的值执行相应的操作。

int 21h 的主要作用是与DOS 进行交互,实现程序与操作系统之间的沟通。

三、int 21h 的典型用法int 21h 的用法相对简单。

在汇编代码中,只需要将需要传递给 DOS 的字节值放入寄存器,然后使用 int 21h 指令将该字节值传递给操作系统即可。

以下是一个典型的 int 21h 用法示例:```assume cs:codesegment, ds:datas datas segmentmsg db "Hello, DOS!", 0 datas endscodesegment segmentstart:; 初始化数据段寄存器mov ax, datasmov ds, ax; 显示字符串mov ah, 09hlea dx, msgint 21h; 退出程序mov ah, 4chint 21hcodesegment endsend start```四、int 21h 的实际应用案例int 21h 在 DOS 时代的程序开发中非常常见,特别是在编写系统调用、文件操作等底层程序时。

汇编指令简介

汇编指令简介

汇编指令简介1、MOV AH,09HINT 21H功能:输出字符串。

但是必须先把字符串的地址送到DX中,例如:LEA DX,INFONMOV AH,09HINT 21H2、MOV AH,10 或MOV AH,0AHINT 21H功能:从键盘输入字符串。

但是必须先把字符串将要存放的地址送到DX中,例如:LEA DX,BUFMOV AH,10INT 21HINT 21H 详解_字符功能调用类(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命令来改变入口参数:AH=05HDL=待输出字符的ASCII码出口参数:无(6)、功能06H功能描述:控制台(如:键盘、屏幕)输入/输出。

微机原理汇编常用指令

微机原理汇编常用指令

1) ADD 加法指令汇编格式:ADD 目的操作数,源操作数执行的操作:(目的操作数)←源操作数+目的操作数2) ADC 带进位加法指令汇编格式:ADC 目的操作数,源操作数执行的操作:(目的操作数)←源操作数+目的操作数+CF3) INC 增量指令汇编格式:INC 操作数执行的操作:(操作数)←操作数+1PS:以上三条指令都可作字或字节运算,除INC指令不影响CF标志位外,其他标志位都受指令操作结果的影响。

4) SUB 减法指令汇编格式:SUB 目的操作数,源操作数执行的操作:(目的操作数)←目的操作数-源操作数5) SBB 带借位减法指令汇编格式:SBB 目的操作数,源操作数执行的操作:(目的操作数)←目的操作数-源操作数-CF6) DEC 减量指令汇编格式:DEC 操作数执行的操作:(操作数)←操作数-17) NEG 求补指令汇编格式:NEG 操作数执行的操作:(操作数)←0-操作数8) CMP比较指令汇编格式:CMP 目的操作数,源操作数执行的操作:目的操作数-源操作数。

PS:以上五条指令都可作字或字节运算。

另外,除DEC指令不影响CF标志位外,其他指令都对标志位有影响。

9) MUL 无符号数乘法指令汇编格式:MUL 源操作数执行的操作:假设为字节操作(AX)←(AL)×源操作数假设为字操作(DX), (AX)←(AX)×源操作数10) IMUL 有符号数乘法指令汇编格式:IMUL 源操作数执行的操作:与MUL一样,只是处理的数据是有符号数,而MUL处理的数据是无符号数。

11) DIV 无符号数除法指令汇编格式:DIV 源操作数执行的操作:假设为字节操作:(AL)←(AX)/源操作数的商(AH)←(AX)/源操作数的余数假设为字操作:(AX)←(DX、AX)/源操作数的商(DX)←(DX、AX)/源操作数的余数商和余数均为无符号数。

12) IDIV 有符号数除法指令汇编格式:IDIV 源操作数执行的操作:与DIV一样,只是操作数是有符号数,商和余数均为有符号数,余数符号同被除数符号。

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 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. 数据传输指令(Data Transfer Instructions):用于将数据从一个位置传送到另一个位置。

- MOV(Move):将一个寄存器或内存的内容复制到另一个位置。

- XCHG(Exchange):交换两个操作数的值。

- PUSH(Push):将数据压入栈中。

- POP(Pop):从栈中弹出数据。

2. 运算指令(Arithmetic Instructions):用于执行一些基本的算术和逻辑运算。

- ADD(Addition):将两个操作数相加。

- SUB(Subtraction):将第一个操作数减去第二个操作数。

- MUL(Multiplication):将两个操作数相乘。

- DIV(Division):将第一个操作数除以第二个操作数。

- INC(Increment):将操作数加一- DEC(Decrement):将操作数减一3. 逻辑指令(Logical Instructions):用于执行一些逻辑运算。

- AND(And):对两个操作数进行逻辑与操作。

-OR(Or):对两个操作数进行逻辑或操作。

- XOR(Exclusive Or):对两个操作数进行异或操作。

- NOT(Not):对操作数进行逻辑非操作。

- SHR(Shift Right):对操作数进行右移操作。

- SHL(Shift Left):对操作数进行左移操作。

4. 跳转指令(Jump Instructions):用于控制程序的跳转。

- JMP(Jump):无条件跳转到指定的地址。

- JZ(Jump if Zero):如果上一个比较指令结果为零,则跳转到指定地址。

- JNZ(Jump if Not Zero):如果上一个比较指令结果不为零,则跳转到指定地址。

微机原理全部指令用法

微机原理全部指令用法

一.机械码,又称机器码.ultraedit打开,编辑exe文件时你会看到许许多多的由0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F组成的数码,这些数码就是机器码.修改程序时必须通过修改机器码来修改exe文件.二.需要熟练掌握的全部汇编知识(只有这么多)不大容易理解,可先强行背住,混个脸儿熟,以后慢慢的就理解了cmp a,b 比较a与bmov a,b 把b的值送给aret 返回主程序nop 无作用,英文“no operation”的简写,意思是“do nothing”(机器码90)***机器码的含义参看上面(解释:ultraedit打开编辑exe文件时你看到90,等同于汇编语句nop)call 调用子程序je 或jz 若相等则跳(机器码74 或0F84)jne或jnz 若不相等则跳(机器码75或0F85)jmp 无条件跳(机器码EB)jb 若小于则跳ja 若大于则跳jg 若大于则跳jge 若大于等于则跳jl 若小于则跳jle 若小于等于则跳pop 出栈push 压栈三.常见修改(机器码)74=>75 74=>90 74=>EB75=>74 75=>90 75=>EBjnz->nop75->90(相应的机器码修改)jnz -> jmp75 -> EB(相应的机器码修改)jnz -> jz75->74 (正常) 0F 85 -> 0F 84(特殊情况下,有时,相应的机器码修改)四.两种不同情况的不同修改方法1.修改为jmpje(jne,jz,jnz) =>jmp相应的机器码EB (出错信息向上找到的第一个跳转)jmp的作用是绝对跳,无条件跳,从而跳过下面的出错信息xxxxxxxxxxxx 出错信息,例如:注册码不对,sorry,未注册版不能…,”Function Not Avaible in Demo” 或”Command Not Avaible” 或”Can’t save in Shareware/Demo”等(我们希望把它跳过,不让它出现)。

微机原理全部指令用法

微机原理全部指令用法

一、机械码,又称机器码、ultraedit打开,编辑exe文件时您会瞧到许许多多得由0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F组成得数码,这些数码就就是机器码、修改程序时必须通过修改机器码来修改exe文件、二、需要熟练掌握得全部汇编知识(只有这么多)不大容易理解,可先强行背住,混个脸儿熟,以后慢慢得就理解了cmp a,b 比较a与bmov a,b 把b得值送给aret 返回主程序nop 无作用,英文“no operation”得简写,意思就是“do nothing”(机器码90)***机器码得含义参瞧上面(解释:ultraedit打开编辑exe文件时您瞧到90,等同于汇编语句nop)call 调用子程序je 或jz 若相等则跳(机器码74 或0F84)jne或jnz 若不相等则跳(机器码75或0F85)jmp 无条件跳(机器码EB)jb 若小于则跳ja 若大于则跳jg 若大于则跳jge 若大于等于则跳jl 若小于则跳jle 若小于等于则跳pop 出栈push 压栈三、常见修改(机器码)74=>75 74=>90 74=>EB75=>74 75=>90 75=>EBjnz>nop75>90(相应得机器码修改)jnz > jmp75 > EB(相应得机器码修改)jnz > jz75>74 (正常) 0F 85 > 0F 84(特殊情况下,有时,相应得机器码修改)四、两种不同情况得不同修改方法1、修改为jmpje(jne,jz,jnz) =>jmp相应得机器码EB (出错信息向上找到得第一个跳转)jmp得作用就是绝对跳,无条件跳,从而跳过下面得出错信息xxxxxxxxxxxx 出错信息,例如:注册码不对,sorry,未注册版不能…,”Function Not Avaible in Demo” 或”mand Not Avaible” 或”Can’t save in Shareware/Demo”等(我们希望把它跳过,不让它出现)。

微机原理指令大全

微机原理指令大全

微机原理指令大全1. add - 将两个数相加并将结果存储在目标寄存器中2. sub - 将第二个数从第一个数中减去并将结果存储在目标寄存器中3. mul - 将两个数相乘并将结果存储在目标寄存器中4. div - 将第一个数除以第二个数并将结果存储在目标寄存器中5. mov - 将一个数或值从源寄存器复制到目标寄存器6. cmp - 比较两个数的值,并根据比较结果设置条件码寄存器7. jmp - 无条件跳转到指定的内存地址8. je/jz - 如果两个数相等,则跳转到指定的内存地址9. jne/jnz - 如果两个数不相等,则跳转到指定的内存地址10. jl/jb - 如果第一个数小于第二个数,则跳转到指定的内存地址11. jg/ja - 如果第一个数大于第二个数,则跳转到指定的内存地址12. inc - 将指定寄存器的值加113. dec - 将指定寄存器的值减114. and - 将两个数进行按位与运算,并将结果存储在目标寄存器中15. or - 将两个数进行按位或运算,并将结果存储在目标寄存器中16. not - 对指定寄存器中的值进行按位取反操作17. xor - 将两个数进行按位异或运算,并将结果存储在目标寄存器中18. shl - 将指定寄存器的值向左移动指定的位数19. shr - 将指定寄存器的值向右移动指定的位数20. call - 保存当前指令地址,并跳转到指定的内存地址21. ret - 从子程序返回到调用者22. push - 将指定寄存器的值压入栈中23. pop - 从栈中弹出一个值,并存储到指定的寄存器中24. cmp - 比较两个数的值,并根据比较结果设置条件码寄存器25. test - 将两个数进行按位与运算,并根据结果设置条件码寄存器26. fld - 将浮点数加载到浮点寄存器中27. fadd - 将两个浮点数相加,并将结果存储在浮点寄存器中28. fsub - 将第二个浮点数从第一个浮点数中减去,并将结果存储在浮点寄存器中29. fmul - 将两个浮点数相乘,并将结果存储在浮点寄存器中30. fdiv - 将第一个浮点数除以第二个浮点数,并将结果存储在浮点寄存器中。

微机原理汇编指令集合

微机原理汇编指令集合

微机原理及接口技术常用编指令一.寄存器(用来存放存储单元的段地址或偏移地址、参与运算的数据、状态标志等)相关指令8086 CPU 中有14个16位的寄存器,这14个寄存器按照功能分为四类:通用寄存器、段寄存器组、指令指针、标志位寄存器FR。

1.通用寄存器(8个)㈠数据寄存器:①AX(accumulator):寄存器(累加器)它的由来来源于EAX寄存器(32位):EAX累加寄存器EAX分为高16位和低16位。

其中低16位又可单独访问,命名为AX,16位寄存器AX又可单独访问,可分为高、低分别为AH、AL字节个8位。

AX常用于运算;在乘法和除法中指定用来存放操作数,另外所有的I/O指令都使用这一个寄存器与外接设备传送数据。

②BX(base):基址寄存器,寄存器(基址寄存器)它的由来来源于EBX寄存器(32位):EB X累加寄存器EBX分为高16位和低16位。

其中低16位又可单独访问,命名为BX,16位寄存器BX又可单独访问,可分为高、低分别为BH、BL字节个8位。

BX常用于地址索引,查表和间接寻址时存放基地址。

③CX(count):计数寄存器,寄存器(计数寄存器)它的由来来源于ECX寄存器(32位):EC X累加寄存器ECX分为高16位和低16位。

其中低16位又可单独访问,命名为CX,16位寄存器CX又可单独访问,可分为高、低分别为CH、CL字节个8位。

常用于计数;常用于保存计算值,如在移位指令,循环(loop)和串处理指令中用作隐含的计数器.④DX(data):数据寄存器,寄存器(数据寄存器)它的由来来源于EDX寄存器(32位):ED X累加寄存器EDX分为高16位和低16位。

其中低16位又可单独访问,命名为DX,16位寄存器DX又可单独访问,可分为高、低分别为DH、DL字节个8位。

常用于数据传递。

㈡指针和变址寄存器这些寄存器存放的是段内的偏移量,用来形成操作数的存储地址。

SP(Stack Pointer):堆栈指针,与SS配合使用,可指向目前的堆栈位置,SP指向栈顶。

汇编几个简单指令解释和INT21H调用表

汇编几个简单指令解释和INT21H调用表

ASSUM‎E CS:CODE,DS:DA TA,SS:STACK‎1 ASSUM‎E是伪指令‎,本身不产生‎代码,所以必要的‎初始化还是‎要的,比如DA T ‎A→DS,CODE→CS,STACK‎→SS2 ASSUM‎E的作用是‎告诉编译器‎到哪个se‎g去找哪个‎变量(传说中可以‎节约时间)3 ASSUM‎E后面的各‎种预定传说‎是可以省略‎的,只有CS:CODE不‎可省略,否则会报错‎4 CODE、DATA、STACK‎是自己定义‎的段名,而CS、DS、SS是实际‎的寄存器地‎址MOV SP,OFFSE‎T TOP = LEA SP,TOP (OFFSE‎T是偏移地‎址的意思)'$'是INT 21H指令‎中显示字符‎串指令的结‎束符INT是中‎断调用指令‎,I NT 21H;21H是中‎断入口,根据芯片不‎同含义不同‎,功能是调用‎D OS函数‎(根据AH值‎判断调用D‎OS执行何‎种操作)START‎END START‎END是关‎键词,START‎是标示符,所以可修改‎,E ND xxx表示‎x x x程序‎结束DOS系统‎功能调用表‎(I NT 21H)AH 功能调用参数返回参数00 程序终止(同INT 20H) CS=程序段前缀‎01 键盘输入并‎回显AL=输入字符02 显示输出DL=输出字符03 异步通迅输‎入AL=输入数据04 异步通迅输‎出DL=输出数据05 打印机输出‎DL=输出字符06 直接控制台‎I/ODL=FF(输入)DL=字符(输出)AL=输入字符07 键盘输入(无回显) AL=输入字符08 键盘输入(无回显)检测Ctr‎l-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=ASCII‎Z串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关闭C‎t rl-Break‎检测=01打开C‎t rl-Break‎检测35 取中断向量‎AL=中断类型ES:BX=中断向量36 取空闲磁盘‎空间DL=驱动器号0=缺省,1=A,2=B,... 成功:AX=每簇扇区数‎BX=有效簇数CX=每扇区字节‎数DX=总簇数失败:AX=FFFF38 置/取国家信息‎DS:DX=信息区首地‎址BX=国家码(国际电话前‎缀码)AX=错误码39 建立子目录‎(MKDIR‎)DS:DX=ASCII‎Z串地址AX=错误码3A 删除子目录‎(RMDIR‎) DS:DX=ASCII‎Z串地址AX=错误码3B 改变当前目‎录(CHDIR‎) DS:DX=ASCII‎Z串地址AX=错误码3C 建立文件DS:DX=ASCII‎Z串地址CX=文件属性成功:AX=文件代号错误:AX=错误码3D 打开文件DS:DX=ASCII‎Z串地址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=ASCII‎Z串地址成功:AX=00出错:AX=错误码(2,5)42 移动文件指‎针BX=文件代号CX:DX=位移量AL=移动方式(0:从文件头绝‎对位移,1:从当前位置‎相对移动,2:从文件尾绝‎对位移)成功:DX:AX=新文件指针‎位置出错:AX=错误码43 置/取文件属性‎DS:DX=ASCII‎Z串地址AL=0取文件属‎性AL=1置文件属‎性CX=文件属性成功:CX=文件属性失败:CX=错误码44 设备文件I‎/O控制BX=文件代号AL=0取状态=1置状态D‎X=2读数据=3写数据=6取输入状‎态=7取输出状‎态DX=设备信息45 复制文件代‎号BX=文件代号1‎成功:AX=文件代号2‎失败:AX=错误码46 人工复制文‎件代号BX=文件代号1‎CX=文件代号2‎失败:AX=错误码47 取当前目录‎路径名DL=驱动器号DS:SI=ASCII‎Z串地址(DS:SI)=ASCII‎Z串失败:AX=出错码48 分配内存空‎间BX=申请内存容‎量成功:AX=分配内存首‎地失败:BX=最大可用内‎存49 释放内容空‎间ES=内存起始段‎地址失败:AX=错误码4A 调整已分配‎的存储块ES=原内存起始‎地址BX=再申请的容‎量失败:BX=最大可用空‎间AX=错误码4B 装配/执行程序DS:DX=ASCII‎Z串地址ES:BX=参数区首地‎址AL=0装入执行‎AL=3装入不执‎行失败:AX=错误码4C 带返回码结‎束AL=返回码4D 取返回代码‎AX=返回代码4E 查找第一个‎匹配文件DS:DX=ASCII‎Z串地址CX=属性AX=出错代码(02,18)4F 查找下一个‎匹配文件DS:DX=ASCII‎Z串地址(文件名中带‎有?或*)AX=出错代码(18)54 取盘自动读‎写标志AL=当前标志值‎56 文件改名DS:DX=ASCII‎Z串(旧)ES:DI=ASCII‎Z串(新)AX=出错码(03,05,17)57 置/取文件日期‎和时间BX=文件代号DX:CX=日期和时间‎AL=0读取AL=1设置(DX:CX)失败:AX=错误码58 取/置分配策略‎码AL=0取码AL=1置码(BX)成功:AX=策略码失败:AX=错误码59 取扩充错误‎码AX=扩充错误码‎BH=错误类型BL=建议的操作‎CH=错误场所5A 建立临时文‎件CX=文件属性DS:DX=ASCII‎Z串地址成功:AX=文件代号失败:AX=错误码5B 建立新文件‎CX=文件属性DS:DX=ASCII‎Z串地址成功:AX=文件代号失败:AX=错误码5C 控制文件存‎取AL=00封锁=01开启BX=文件代号CX:DX=文件位移SI:DI=文件长度失败:AX=错误码62 取程序段前‎缀BX=PSP地址‎。

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

INT21中断功能大全

INT21中断功能大全

1、字符功能调用类(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功能描述:输出一个字符串到标准输出设备上。

微机原理指令汇总

微机原理指令汇总

微机原理指令汇总我现将指令系统中各种助记符的英文全名写出来,各种助记符的记忆就会变得很简单o(∩_∩)o...在这之前,先说一下寄存器:数据寄存器分为:AH&AL=AX(accumulator):累加寄存器,常用于运算;在乘除等指令中指定用来存放操作数,另外,所有的I/O指令都使用这一寄存器与外界设备传送数据.BH&BL=BX(base):基址寄存器,常用于地址索引;CH&CL=CX(count):计数寄存器,常用于计数;常用于保存计算值,如在移位指令,循环(loop)和串处理指令中用作隐含的计数器.DH&DL=DX(data):数据寄存器,常用于数据传递。

他们的特点是,这4个16位的寄存器可以分为高8位: AH, BH, CH, DH.以及低八位:AL,BL,CL,DL。

这2组8位寄存器可以分别寻址,并单独使用。

另一组是指针寄存器和变址寄存器,包括:SP(Stack Pointer):堆栈指针,与SS配合使用,可指向目前的堆栈位置;BP(Base Pointer):基址指针寄存器,可用作SS的一个相对基址位置;SI(Source Index):源变址寄存器可用来存放相对于DS段之源变址指针;DI(Destination Index):目的变址寄存器,可用来存放相对于ES 段之目的变址指针。

指令指针IP(Instruction Pointer)标志寄存器FR(Flag Register)OF(overflow flag)DF(direction flag)CF(carrier flag)PF(parity flag)AF(auxiliary flag)ZF(zero flag)SF(sign flag)IF(interrupt flag)TF(trap flag)(Segment Register)段寄存器.为了运用所有的内存空间,8086设定了四个段寄存器,专门用来保存段地址:CS(Code Segment):代码段寄存器;DS(Data Segment):数据段寄存器;堆栈段寄存器;(Stack Segment):SSES(Extra Segment):附加段寄存器。

微机原理全部指令用法

微机原理全部指令用法

一.机械码,又称机器码.ultraedit打开,编辑exe文件时你会看到许许多多的由0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F组成的数码,这些数码就是机器码.修改程序时必须通过修改机器码来修改exe文件.二.需要熟练掌握的全部汇编知识(只有这么多)不大容易理解,可先强行背住,混个脸儿熟,以后慢慢的就理解了cmp a,b 比较a与bmov a,b 把b的值送给aret 返回主程序nop 无作用,英文“no operation”的简写,意思是“do nothing”(机器码90)***机器码的含义参看上面(解释:ultraedit打开编辑exe文件时你看到90,等同于汇编语句nop)call 调用子程序je 或jz 若相等则跳(机器码74 或0F84)jne或jnz 若不相等则跳(机器码75或0F85)jmp 无条件跳(机器码EB)jb 若小于则跳ja 若大于则跳jg 若大于则跳jge 若大于等于则跳jl 若小于则跳jle 若小于等于则跳pop 出栈push 压栈三.常见修改(机器码)74=>75 74=>90 74=>EB75=>74 75=>90 75=>EBjnz->nop75->90(相应的机器码修改)jnz -> jmp75 -> EB(相应的机器码修改)jnz -> jz75->74 (正常) 0F 85 -> 0F 84(特殊情况下,有时,相应的机器码修改)四.两种不同情况的不同修改方法1.修改为jmpje(jne,jz,jnz) =>jmp相应的机器码EB (出错信息向上找到的第一个跳转)jmp的作用是绝对跳,无条件跳,从而跳过下面的出错信息xxxxxxxxxxxx 出错信息,例如:注册码不对,sorry,未注册版不能…,”Function Not Avaible in Demo” 或”Command Not Avaible” 或”Can’t save in Shareware/Demo”等(我们希望把它跳过,不让它出现)。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
失败:AX=FFFF
38
置/取国家信息
DS:DX=信息区首地址
BX=国家码(国际电话前缀码)
AX=错误码
39
建立子目录(MKDIR)
DS:DX=ASCIIZ串地址
AX=错误码
3A
删除子目录(RMDIR)
DS:DX=ASCIIZ串地址
AX=错误码
3B
改变当前目录(CHDIR)
DS:DX=ASCIIZ串地址
AL=输入字符
07
键盘输入(无回显)
AL=输入字符
08
键盘输入(无回显)
检测Ctrl-Break
AL=输入字符
09
显示字符串
DS:DX=串地址
'$'结束字符串
0A
键盘输入到缓冲区
DS:DX=缓冲区首地址
(DS:DX)=缓冲区最大字符数
(DS:DX+1)=实际输入的字符数
0B
检验键盘状态
AL=00有输入
data ends
code segment ;代码段
assume cs: code, ds:data;设定cs为代码段,ds为数据段
start: mov ax, data
mov ds,ax;设置DS段寄存器起始地址为data(段号)
mov dx,offset hello;hello的地址偏移量送dx
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秒
mov ah,9;显示DS:DX=串地址开始,'$'结束字符串
int 21h;调用int 21h
mov dl, 0dh ;0dh回车
mov ah,2;显示输出dl中字符
int 21h
mov dl, 0ah ;0ah换行
mov ah,2;同上
int 21h
mov ah, 4ch ;返回dos
int 21h
code ends
end start
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地址
例:汇编语言显示hello world
data segment ;数据段
hello db 'hello world!$'
CX=读取的字节数
读成功:
AX=实际读入的字节数
AX=0已到文件尾
读出错:AX=错误码
40
写文件或设备
DS:DX=数据缓冲区地址
BX=文件代号
CX=写入的字节数
写成功:
AX=实际写入的字节数
写出错:AX=错误码
41
删除文件
DS:DX=ASCIIZ串地址
成功:AX=00
出错:AX=错误码(2,5)
42
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
设置随机记录号
DOS功能调用
作者:来源:互联网
AH
功能
调用参数
返回参数
00
程序终止(同INT 20H)
CS=程序段前缀
01
键盘输入并回显
AL=输入字符
02
显示输出
DL=输出字符
03
异步通迅输入
AL=输入数据
04
异步通迅输出
DL=输出数据
05
打印机输出
DL=输出字符
06
直接控制台I/O
DL=FF(输入)
DL=字符(输出)
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首地址
移动文件指针
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串地址
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=文件代号
=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=总簇数
DS:SI=ASCIIZ串地址
(DS:SI)=ASCIIZ串
失败:AX=出错码
48
分配内存空间
BX=申请内存容量
成功:AX=分配内存首地
失败:BX=最大可用内存
49
释放内容空间
ES=内存A
调整已分配的存储块
ES=原内存起始地址
BX=再申请的容量
失败:BX=最大可用空间
AX=错误码
(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信息
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首地址
相关文档
最新文档