第六 8086指令系统(续).doc_第1页
第六 8086指令系统(续).doc_第2页
第六 8086指令系统(续).doc_第3页
第六 8086指令系统(续).doc_第4页
第六 8086指令系统(续).doc_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

8086指令系统(2)一、 算术运算指令数据类型:无符号二进制整数,带符号二进制整数,无符号压缩十进制整数,无符号非压缩十进制整数。长度为8位或16位, 带符号数用补码表示 压缩十进制数:一个字节存放两个BCD码,各占4位 非压缩十进制数:一个字节高4位全零,低四位为BCD码二进制码十六进制无符号二进制带符号二进制非压缩十进制压缩十进制0000 1001099+99091001 011197151-105无效971110 1010EA234-22无效无效算术逻辑运算指令:加法ADD加法ADC带进位的加法INC增量(加一)AAA加法的ASCII调整DAA加法的十进制调整减法SUB减法SBB带借位的减法DEC减量(减一)NEG取负CMP比较AAS减法的ASCII调整DAS减法的十进制调整乘法MUL无符号数乘法IMUL整数乘法AAM乘法的ASCII调整除法DIV无符号数除法IDIV整数除法AAD除法的ASCII调整CBW字节转换成字CWD字转换成双字1 加法指令ADD DES, SOC DES = DES + SOC 有符号和无符号整数 ADC DES, SOC DES = DES + SOC + CF注意:DES&SOC不能同为存储单元,长度要匹配,DES不能为立即数。所有可用的寻址方式参考P65 表3-2。运算结果影响CF, OF, PF, SF, ZF, AF。对于OF, 若两个符号相同的数想加结果符号想法,则判定为溢出。符号相异呢?INC DES DES = DES + 1 or DES+主要用于循环,操作数可以在寄存器或者内存中。INC BYTE PTRBX or INC WORD PTRBXPTR为类型说明符AAA ASCII调整指令 主要针对非压缩十进制数或ASCII码表示的十进制数的加法调整。 IF AL低4位 9, or AF = 1 THEN AL = AL+6; AL 高4位清零; AF =1, CF=1, AH=AH+1; (AH保留了结果的一部分) ELSE AL高4位清零。DAA 十进制调整指令 将两个压缩BCD数相加后的结果调整为正确的BCD数。结果在AL中。 IF AL低4位9 or AF=1 THEN IF (AL = AL +6) and (AL 高4位9 or CF=1) THEN AL= AL + 60H, CF=1 (CF成为结果的一部分) ELSE CF=02 减法指令SUB DES, SOC DES= DES SOCSBB DES, SOC DES=DES SOC CF 主要用于多字节减法DEC DES DES=DES 1NEG DES DES= 0 DESCMP DES, SOC DES SOC -PSW注意:DES不能为立即数,两个操作数不能同为存储器操作数,存储器操作数必须说明类型AAS ASCII调整指令在对非压缩十进制数做SUB或SBB后,对AL中的结果调整。IF AL低4位9或AF=1THEN AL=AL 6, AF=1; AL高4位清零; AH=AH 1, CF=1 DAS 十进制调整指令 两个压缩十进制数用SUB或SBB相减后,对AL中的结果进行调整。 IF AL低4位9或AF=1 THEN AL=AL 6, AF=1 IF AL高4位9或CF=1 (WHY?) THEN AL=AL 60H, CF=1 3 乘法指令MUL SOC 隐含使用累加器AX作为目的操作数 无符号数的乘法运算AX = AL * DES(DX, AX) = AX * DES IMUL SOC 隐含使用累加器AX 带符号数的乘法,类似于MULIMUL执行完后,AF,PF,SF,ZF不定,注意对CF与OF的影响。 AAM ASCII调整指令对AL中的两个非压缩十进制数乘积进行调整。使得AX中得到正确的非压缩十进制数乘积。AL内容除以10,商在AH中,余数在AL中4 除法指令DIV SOC 无符号数除法, 累加器AX作为隐含目的操作数AL = AX/ SOC 商 AH = AX/ SOC 余数被除数只有8位,则必须放在AL中,AH清零。AX = (DX, AX) / SOC 商 DX=(DX, AX) / SOC 余数被除数只有16位,则必须放在AX中, DX清零。IDIV SOC 有符号数除法,且规定余数符号与被除数相同。 注意除法操作的允许的数值范围和溢出的判断。CBW and CBD 转换成字或双字 实际是完成符号位的扩充。AL的符号为扩充到AH全部,AX的符号位扩充到DX的全部。这两个指令的执行不影响标志位。AAD 在做除法前,把BCD码转换成二进制数。 注意,除法的ASCII调整在执行除法运算之前。 AL= AH * 10 + AL, AH = 00H二、 逻辑运算与移位指令主要针对字或字节进行位操作,注意一些特殊用法和技巧。逻辑运算NOT取反AND与OR或XOR异或,按位加TEST测试算术逻辑移位SHL逻辑左移SAL算术左移SHR逻辑右移SAR算术右移循环移位ROL循环左移ROR循环右移RCL包含进位的循环左移RCR包含进位的循环右移1 逻辑运算指令NOT DES DES = DES运算结果对标志位无影响。对存储器操作数要指明数据类型。AND DES, SOC DES=DES SOC 常用于清零操作或截取操作OR DES, SOC DES=DES SOC 常用于置1操作XOR DES, SOC DES = DES SOC 常用于对某些位保留或清除TEST DES, SOC DES SOC 操作数不变,修改标志位。2 算术逻辑移位指令SAL/SHL DES, COUNT 左移指令。功能完全相同。左移相当于乘2操作,移出的最高位存放在CF中,最低位上补0。移位次数在CL中设定。SHR DES, COUNT 逻辑右移。逻辑右移最低位存放入CF, 最高位上补0。移位次数在CL中设定。相当于除以2的操作,但不保留余数。SAR DES, COUNT 算术右移。与SHR类似,但是最高位补符号位。相当于对有符号数进行除以2的操作。3 循环移位指令循环移位不丢失移出的二进位,而是送入本数据的另一端。ROL/ROR DES, COUNT 当前移出的位送入另一端以及CFRCL/RCR DES, COUNT CF参与到整个的移位过程中。 移位次数同样可以用CL指定。注意OF的变化。三、字符串处理指令指令名称字节/字操作字节操作字操作字符串传送MOVS DES, SOCMOVSBMOVSW字符串比较CMPS DES, SOCCMPSBCMPSW字符串扫描SCAS DESSCASBSCASW字符串装入LODS SOCLODSBLODSW字符串存储STOS DESSTOSBSTOSW特别注意隐含约定:1) DES位于当前数据段中,由DS寻址,SI做指针。可以用段前缀修改段地址2) SOC必须位于当前附加段中,由ES寻址,DI做指针。不能修改段寄存器ES, 但可以使ES指向DS.3) 每执行一次字符串指令,SI,DI自动修改。4) DF控制字符串处理方向。DF=0为递增,SI, DI递增。DF=1为递减。STD置DF=1, CLD将DF置0。5) 待处理的字符串的长度存放在CX寄存器中。为提高效率,可以使用重复前缀:REP 无条件重复。常用于传送操作。REPE/REPZ 相等或结果为零则重复,常与CMPS比较指令连用REPNE/REPNZ 不相等/结果非零则重复,常与扫描指令SCAS连用MOVS DES, SOC DS:SI-ES:DI 这条指令可以实现两个

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论