ImageVerifierCode 换一换
格式:DOCX , 页数:16 ,大小:24.65KB ,
资源ID:7567893      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/7567893.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(80868088汇编指令手册.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

80868088汇编指令手册.docx

1、80868088汇编指令手册8086 8088 汇编指令手册通用寄存器(1)数据寄存器数据寄存器共有4个寄存器AX、BX、CX、DX,用来保存操作数或运算结果等信息。AX寄存器称为累加器。使用频度最高,用于算术、逻辑运算以及与外设传送信息等。BX寄存器称为基址寄存器。常用于存放存储器地址。CX寄存器称为计数器。一般作为循环或串操作等指令中的隐含计数器。DX寄存器称为数据寄存器。常用来存放双字数据的高16位,或存放外设端口地址。(2)变址和指针寄存器变址和指针寄存器包括SI、DI、SP、BP4个16位寄存器,主要用于存放某个存储单元的偏移地址。SI是源变址寄存器。DI是目的变址寄存器,在字符串操

2、作中,SI和DI都具有自动增量或减量的功能。SP为堆栈指针寄存器,用于存放当前堆栈段中栈顶的偏移地址。BP为基址指针寄存器,用于存放堆栈段中某一存储单元的偏移地址。2段寄存器8086CPU的4个16位的段寄存器分别称为代码段寄存器CS,数据段寄存器DS,堆栈段寄存器SS,附加数据段寄存器ES。段寄存器用来确定该段在内存中的起始地址。代码段用来存放程序的指令序列。CS存放代码段的段首址,指令指针寄存器IP指示代码段中指令的偏移地址。3指令指针8086CPU中的指令指针IP,它总是保存下一次将要从主存中取出指令的偏移地址,偏移地址的值为该指令到所在段段首址的字节距离。在目标程序运行时,IP的内容由

3、微处理器硬件自动设置,程序不能直接访问IP,但一些指令却可改变IP的值,如转移指令、子程序调用指令等。3.1标志寄存器8086CPU中有一个很重要的16位标志寄存器,它包含9个标志位,主要用于保存一条指令执行后,CPU所处状态信息及运算结果的特征。条件标志(1)进位标志CF(2)零标志ZF(3)符号标志SF(4)溢出标志OF(5)奇偶标志PF(6)辅助进位标志AF状态控制标志(1)方向标志DF(2)中断允许标志IF(3)追踪标志TF运算结果标志位1、进位标志CF(Carry Flag)进位标志CF主要用来反映运算是否产生进位或借位。如果运算结果的最高位产生了一个进位或借位,那么,其值为1,否则

4、其值为0。使用该标志位的情况有:多字(字节)数的加减运算,无符号数的大小比较运算,移位操作,字(字节)之间移位,专门改变CF值的指令等。2、奇偶标志PF(Parity Flag)奇偶标志PF用于反映运算结果中“1”的个数的奇偶性。如果“1”的个数为偶数,则PF的值为1,否则其值为0。利用PF可进行奇偶校验检查,或产生奇偶校验位。在数据传送过程中,为了提供传送的可靠性,如果采用奇偶校验的方法,就可使用该标志位 。3、辅助进位标志AF(Auxiliary Carry Flag)在发生下列情况时,辅助进位标志AF的值被置为1,否则其值为0:(1)在字操作时,发生低字节向高字节进位或借位时;(2)在字

5、节操作时,发生低4位向高4位进位或借位时。对以上6个运算结果标志位,在一般编程情况下,标志位CF、ZF、SF和OF的使用频率较高,而标志位PF和AF的使用频率较低。4、零标志ZF(Zero Flag)零标志ZF用来反映运算结果是否为0。如果运算结果为0,则其值为1,否则其值为0。在判断运算结果是否为0时,可使用此标志位。5、符号标志SF(Sign Flag)符号标志SF用来反映运算结果的符号位,它与运算结果的最高位相同。在微机系统中,有符号数采用码表示法,所以,SF也就反映运算结果的 正负号。运算结果为正数时,SF的值为0,否则其值为1。6、溢出标志OF(Overflow Flag)溢出标志O

6、F用于反映有符号数加减运算所得结果是否溢出。如果运算结果超过当前运算位数所能表示的范围,则称为溢出,OF的值被置为1,否 则,OF的值被清为0。常用指令 通用数据传送指令. MOV 传送字或字节MOV OPRD1,OPRD2 功能: 本指令将一个源操作数送到目的操作数中,即OPRD1-OPRD21. OPRD1 为目的操作数,可以是寄存器、存储器、累加器. OPRD2 为源操作数,可以是寄存器、存储器、累加器和立即数. 2. MOV 指令以分为以下四种情况: 寄存器与寄存器之间的数据传送指令 立即数到通用寄存器数据传送指令 寄存器与存储器之间的数据传送指令 立即数到存储器的数据传送 3. 本指

7、令不影响状态标志位PUSH 把字压入堆栈PUSH OPRD 功能: 实现压入操作的指令是PUSH指令;1. OPRD为16位(字)操作数,可以是寄存器或存储器操作数. 2. PUSH的操作过程是: (SP)-(SP)-2,(sp)-OPRD 即先修改堆栈指针SP(压入时为自动减2),然后,将指定的操作数送入新的栈顶位置. 此处的(SP)-OPRD,也可以理解为: (SS)*16+(SP)-OPRD 或 SS:SP-OPRDPOP 把字弹出堆栈POP OPRD 实现弹出操作的指令是POP指令1. OPRD为16位(字)操作数,可以是寄存器或存储器操作数. 2. POP指令的操作过程是: POP

8、OPRD:OPRD-(SP),(SP)-(SP)+2 它与压入操作相反,是先弹出栈顶的数顶,然后再修改指针SP的内容. 3. 示例: POP AX POP DS POP DATA1 POP ALFABXDI 4. PUSH和POP指令对状态标志位没有影响XCHG 交换字或字节XCHG OPRD1,OPRD2 其中的OPRD1为目的操作数,OPRD2为源操作数 功能: 将两个操作数相互交换位置,该指令把源操作数OPRD2与目的操数OPRD1交换.至少有一个操作数为寄存器,段寄存器不可作为操作数1. OPRD1及OPRD2可为通用寄存器或存储器,但是两个存储器之间是不能用XCHG指令实现的. 2.

9、 段寄存器内容不能用XCHG指令来交换. 3. 若要实现两个存储器操作数DATA1及DATA2的交换,可用以下指令实现: 示例: PUSH DATA1 PUSH DATA2 POP DATA1 POP DATA2 4. 本指令不影响状态标志位输入输出端口传送指令. IN I/O端口输入IN AL,n ;(AL)-(n) IN AX,n ;(AX)-(n+1),(n) IN AL,DX ;(AL)-(DX) IN AX,DX ;(AX)-(DX)+1,(DX) 功能: 输入指令1. 其中n为8位的端口地址,当字节输入时,将端口地址n+1的内容送至AH中,端口地址n的内容送AL中. 2. 端口地址

10、也可以是16位的,但必须将16位的端口地址送入DX中.当字节寻址时,由DX内容作端口地址的内容送至AL中; 当输入数据字时,(DX)+1送AH,(DX)送AL中,用符号:(AX)-(DX)+1,(DX)表示OUT I/O端口输出OUT n,AL ;(n)-(AL) 功能: 输出指令1. OUT n,AX ;(n+1),(n)-(AX) OUT DX,AL ;(DX)-(AL) OUT DX,AX ;(DX)+1,(DX)-(AX) 2. 输入指令及输出指令对标志位都不影响.输入输出端口由立即方式指定时, 其范围是 0-255; 由寄存器 DX 指定时,其范围是 0-65535. 目的地址传送指

11、令. LEA 装入有效地址. 例: LEA DX,string ;把偏移地址存到DX. LDS 传送目标指针,把指针内容装入DS. 例: LDS SI,string ;把段地址:偏移地址存到DS:SI. LES 传送目标指针,把指针内容装入ES. 例: LES DI,string ;把段地址:偏移地址存到ESDI. LFS 传送目标指针,把指针内容装入FS. 例: LFS DI,string ;把段地址:偏移地址存到FSD. LGS 传送目标指针,把指针内容装入GS. 例: LGS DI,string ;把段地址:偏移地址存到GSDI. LSS 传送目标指针,把指针内容装入SS. 例: LSS

12、 DI,string ;把段地址:偏移地址存到SSDI. 算术运算指令 ADD 加法ADD OPRD1,OPRD2 功能: OPRD1-OPRD1 + OPRD2CF、SF、OF、PF、ZF、AF1.两个操作数类型匹配 2. OPRD1和OPRD2均为寄存器是允许的,一个为寄存器而另一个为存储器也是允许的, 但不允许两个都是存储器操作数. ADC 带进位加法ADC OPRD1,OPRD2 功能: OPRD1-OPRD1 + OPRD2 + CF该语句在ADD语句后才会有意义INC 加 1INC OPRD 功能: OPRD-OPRD+1影响AF、OF、PF、SF、ZF标志位,但不影响CF标志位1

13、. OPRD 为寄存器或存储器操作数.2. 3. 示例: INC SI;(SI)-(SI)+1 INC WORD PTRBX INC BYTE PTRBX+DI INC CL;(CL)9 或 AF=1, 则(AL)-(AL)+6,(AH)9 或 AF=1,则(AL)-(AL)+6,AF9 或 CF=1,则(AL)-(AL)+60H,CF-1. (3)如果以上两点都不成立,清除AF、CF2. 示例: (AL)=18H,(BL)=06H ADD AL,BL ; (AL)-(AL)+(BL) ; (AL)=1EH DAA ; (AL)SUB 减法.SUB OPRD1,OPRD2 功能: 两个操作数的

14、相减,即从OPRD1中减去OPRD2,其结果放在OPDR1中CF、SF、OF、PF、ZF、AFSBB 带借位减法. SBB OPRD1,OPRD2 功能: 是进行两个操作数的相减再减去CF进位标志位,即从OPRD1-OPRD1-OPRD2-CF,其结果放在OPDR1中.CF、SF、OF、PF、ZF、AFDEC 减 1DEC OPRD 功能: OPRD 9 或 AF=1 则(AL)-(AL)-6,(AH) 9 或 AF=1,则(AL)9或 CF=1,则(AL)-(AL)-60h,CF=1如果以上都不成立,清除AF、CFMUL 无符号乘法MUL OPRD 功能: 乘法操作结果回送AH和AL(字节运

15、算),或DX和AX(字运算)1. OPRD为通用寄存器或存储器操作数. 2. OPRD为源操作数,即作乘数.目的操作数是隐含的,即被乘数总是指定为累加器AX或AL的内容. 3. 16位乘法时,AX中为被乘数.8位乘法时,AL为被乘数.当16位乘法时,32位的乘积存于DX及AX中;8位乘法的16位乘积存于AX中. 4. 操作过程: 字节相乘:(AX)-(AL)*OPRD,当结果的高位字节(AH)不等于0时,则CF1、OF1IMUL 整数乘法 IMUL OPRD 功能: 完成两个带符号数的相乘结果回送AH和AL(字节运算),或DX和AX(字运算)1. 其中OPRD为任一通用寄存器或存储器操作数.

16、2. MUL指令对带符号相乘时,不能得到正确的结果. 例如: (AL)=255 (CL)=255 MUL CL (AX)=65025 注意: 这对无符号数讲,结果是正确的,但对带符号数讲,相当于(-1)*(-1)结果应为+1,而65025对应的带符号数为-511,显然是不正确的.AAM 乘法的ASCII码调整AAM 功能: 调整AL值,该值由两个BCD码用无符号乘法指令MUL所得。PF、SF、ZF(其他无定义)(AH)-(AL)/10 (AL)9或AF=1,AH-AH-1,AL-AL-6,AF=1,CF=1;否则,AF=0,CF=0DIV 无符号除法DIV OPRD 功能: 实现两个无符号二进

17、制数除法运算.商回送AL,余数回送AH, (字节运算); 或 商回送AX,余数回送DX, (字运算)被除数必须是除数长度的两倍IDIV 整数除法DIV OPRD 功能: 这实现两个带符号数的二进制除法运算.商回送AL,余数回送AH, (字节运算); 或 商回送AX,余数回送DX, (字运算)1. 其中OPRD为任一通用寄存器或存储器操作数. 2. 理由与IMUL相同,只有IDIV指令,才能得到符号数相除的正确结果. 3. 被除数必须是除数长度的两倍AAD 除法的ASCII码调整格式: AAD 功能: 在作除法前用于调整AH、AL的值,把两个寄存器中单BCD码组成一个十进制数值PF、SF、ZF(

18、其他无定义)AL-(AH)10+(AL),AH=0CBW 字节转换为字. CBW 功能: 将字节扩展为字,即把AL寄存器的符号位扩展到AH中.1. 两个字节相除时,先使用本指令形成一个双字节长的被除数. 2. 本指令不影响标志位.CWD 字转换为双字CWD 功能: 将字扩展为双字长,即把AX寄存器的符号位扩展到DX中1. 两个字或字节相除时,先用本指令形成一个双字长的的被除数. 2. 本指令不影响标志位. NEG 求反(以 0 减之)NEG OPRD 功能: 对操作数OPRD进行取补操作,然后将结果送回OPRD.取补操作也叫作求补操作,就是求一个数的相反数的补码1. OPRD为任意通用寄存器或

19、存储器操作数. 2. 示例: (AL)=44H,取补,(AL)=0BCH(-44H). 3. 本指令影响标志位CF、OF、SF、PF、ZF及AF 逻辑运算指令 AND 与运算AND OPRD1,OPRD2 功能: 对两个操作数实现按位逻辑与运算,结果送至目的操作数.本指令可以进行字节或字的与运算1. 目的操作数OPRD1为任一通用寄存器或存储器操作数.源操作数OPRD2为立即数,任一通用寄存器或存储器操作数. 2. 示例: AND AL,0FH ;(AL)-(AL) AND 0FH OR 或运算 OR OPRD1,OPRD2 功能: OR指令完成对两个操作数按位的或运算,结果送至目的操作数中,

20、本指令可以进行字节或字的或运算. OPRD1-OPRD1 OR OPRD21. 其中OPRD1,OPRD2含义与AND指令相同,对标志位的影响也与AND指令相同. 2. 两数相或,有一个数为真则值为真.CF、OF、PF、ZF、SF(AF无定义)NOT 取反NOT OPRD 功能: 完成对操作数按位求反运算(即0变1,1变0),结果关回原操作数1. 其中OPRD可为任一通用寄存器或存储器操作数. 2. 本指令可以进行字或字节非运算. 3. 本指令不影响标志位.XOR 异或运算XOR OPRD1,OPRD2 功能: 实现两个操作数按位异或运算,结果送至目的操作数中. OPRD11次时, 则由寄存器CL给出移位次数. 如 MOV CL,04 SHL AX,CL 串指令 MOVS 串传送MOVS OPRD1,OPRD2 MOVSB MOVSW 功能: OPRD1 则转移CF=0&ZF=0JAE、JNB=则转移CF=0JB、JNE则转移CF=1

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

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