微型计算机原理与接口技术:4算术运算指令_第1页
微型计算机原理与接口技术:4算术运算指令_第2页
微型计算机原理与接口技术:4算术运算指令_第3页
微型计算机原理与接口技术:4算术运算指令_第4页
微型计算机原理与接口技术:4算术运算指令_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

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

文档简介

1、算术运算指令 加法和减法指令 乘法和除法指令 十进制调整指令加法和减法指令 加法包括ADD、ADC、INC 减法包括SUB、SBB、DEC、NEG、CMP INC和DEC不影响CF标志 其他指令影响所有CF、SF、OV、ZF、AF、PF标志加和减ADD/SUB DST, SRCMOV AX, 1234HADD AX, 64SUB AL, 100SUB AH, ALADD AH, 0EFH带进/借位的加和减 ADC/SBB DST, SRC 主要用于实现多字节多精度的加减运算计算82347856H+12348998H-80004991HMOV AX, 7856HMOV DX, 8234HADD

2、AX, 8998HADC DX, 1234HSUB AX, 4991HSBB DX, 8000H 带进/借位的加和减(续) ADC/SBB常跟在ADD/SUB之后,若第一次就使用ADC/SBB,则应先将CF清0。计算0102030405060708H+090A0B0C0D0E0FH,假设被加数存放在D1开始的区域,加数存放在D2开始的区域,和存放在SUM开始的单元。CLCMOV CX, 8LEA SI, D1LEA DI, D2LEA BX, SUMNEXT: MOV AL, SI ADC AL, DI MOV BX, AL INC SI INC DIINC BXLOOP NEXT增量/减量

3、INC/DEC reg/mem 主要用于对计数器和地址指针的调整 不影响CFINC SIDEC BYTE PTR DI比较 CMP DST, SRC 做减法运算并影响标志位,但不保留差值,常用于比较两个数的大小,后面常跟随条件跳转语句。 假设执行CMP A, B:A=BAB无符号数ZF=1CF=1CF=0有符号数SF、OF相异 SF、OF相同求补(求相反数) NEG reg/mem 取反加一,相当于用0减去操作数乘法 无符号数乘法: MUL SRC; (AX) (AL) SRC (DX,AX) (AX) SRC 带符号数: IMUL SRC; 操作同上 DST隐含为AL或AX 必须是8*8位或

4、16*16位 SRC不允许是立即数乘法(续) 指令运算结果只影响CF和OF,对其他标志位的影响不确定。 对于MUL指令,若字节型相乘后(AH)=0或者字相乘后(DX)=0,则CF=OF=0,否则为1。 对于IMUL指令,若AH或DX是低一半内容的符号扩展,则CF=OF=0,否则为1。 对标志位的影响体现了乘积的高一半中是否有有效数值。乘法指令举例MOV AL, 0D0HMOV BL, 64HMOV CL, 2MUL BL;IMUL BL;MUL CL;IMUL CLMOV BX, 1024MUL BX除法 无符号数:DIV SRC; (AL) (AX)/SRC,(AH) (AX)(SRC) 或

5、(AX) (DX,AX)/SRC, (DX) (DX,AX)mod(SRC) 带符号数:IDIV SRC 余数的符号与被除数相同。 SRC不允许是立即数。 指令对标志位影响不定,若除数为0或结果超出AL/AX的表示范围则产生0号中断,与OF无关。除法举例1MOV AX, 0A0HMOV BL, 10DIV BL;IDIV BLMOV DX, 1MOV CX, 5DIV CX 除法(续) 要严格遵守16/8或32/16位的除法,如果被除数位数不够,则需要将其符号扩展到16或32位。 如果16/8位除法的商太大以致于在AL中放不下,则需要扩展成32/16位除法。 无符号数也存在上述两种情况,但不存

6、在“符号扩展”的说法,而是位数扩展,即将高一半补0。符号扩展指令 CBW:将AL中的符号位扩展到AH CBD:将AX中的符号位扩展到DX 扩展的结果: 正数:AH或DX中为全0(0H) 负数:AH或DX中为全1(0FFH) 只对于有符号数才存在符号扩展。除法举例2带扩展(-5000)1024=?MOV AX, -5000CBDMOV BX, 1024IDIV BX无符号数:50001024?MOV AX, 5000MOV DX, 0MOV BX, 1024DIV BX商超表示范围:500010?MOV AX, 5000MOV BL,10DIV BL十进制(BCD码)调整指令 BCD码只使用09

7、这十个编码表示数字,既可以符合人们的习惯,又可以为某些应用带来方便。但计算机中仍是以二进制的规则进行运算的,计算结果中不可避免地会出现AF这6个非BCD编码。调整指令就是在运算后将二进制结果转换成BCD码。 BCD码都是无符号数。 非压缩BCD码:8位二进制表示一个十进制数,实际上只有低四位有意义。 压缩BCD码:4个二进制位表示一个十进制数,一个字节可以表示两个十进制位,即0099。压缩BCD码加减调整 格式: DAA ;把AL中的和调整为压缩BCD格式 DAS ;把AL中的差调整为压缩BCD格式 必须用在ADD/ADC或SUB/SBB之后。 参加运算的数据也必须是压缩BCD码格式。 对OF

8、之外的标志位都有影响。 调整后查看CF可知是否产生了进/借位。 压缩BCD码没有乘除法调整指令。调整的依据和方法 AL低4位9或AF=1,则AL加/减06H修正 AL高4位9或CF=1,则AL加/减60H修正 AL高4位9且低4位9,则AL加/减66H修正DAA、DAS举例计算59+68MOV AL, 59HADD AL, 68H ; AL=0C1HDAA ; AL=27H, CF=1,即59+68=127计算 59-68MOV AL, 59HSUB AL, 68H ; AL=0F1HDAS ; AL=91H, CF=1, 实际上是159-68=91非压缩BCD码调整指令 AAA:将AL中的和

9、调整为非压缩BCD码存放到AH(十位)、AL(个位)。 即:若(AL)&0FH9或AF=1, 则(AL) (AL)+6,(AF) 1,(CF) 1 (AH) (AH)+1,(AL) (AL)&0FH AAS:将AL中的差调整为非压缩BCD码存放到AH(十位)、AL(个位)。 即:若(AL)&0FH9或AF=1, 则(AL) (AL)-6,(AF) 1,(CF) 1 (AH) (AH)-1,(AL) (AL)&0FH非压缩BCD码调整指令(续) AAM:将AL中的乘积调整为非压缩BCD码存放到AH(十位)、AL(个位)。 即:(AH) (AL)/10,(AL) (

10、AL)%10 AAD:将(AH,AL)中的非压缩BCD码调整为对应的二进制数。 即:(AL) 10 (AH) + (AL) , (AH) 0非压缩BCD码调整指令的使用 AAA或AAS必须用在ADD/ADC或SUB/SBB之后,影响AF和CF。 AAM必须用在MUL之后,影响SF、ZF和PF。 AAD比较特别,必须用在DIV之前,做完DIV后再使用AAM才能得到商的非压缩BCD码。 相对于非压缩BCD码,压缩BCD码只局限于AL,不影响AH。 无论是否压缩型,对于加减法的调整都是以AL、AF、CF为依据,所以必须以AL为DST且正确影响AF、CF,不可以使用INC和DEC。非压缩BCD码举例1

11、MOV AL, 9ADD AL, 6AAASUB AL, 7AASMOV BL, 8MUL BLAAMAADMOV BL, 4DIVAAM; AL=0FH; AX=0105H , 9+6=15; AL=0FEH; AX=0008H , 15-7=8; AX=0040H; AX=0604H , 88=64; AX=0040H=64; AL=10H, AH=0; AX=0106H , 64/4=16非压缩BCD码举例2用非压缩BCD码计算13-4MOV AX, 0103HMOV BL, 04hSUB AL, BLAAS 进行十进制计算732MOV AX, 0703HMOV BL, 02HAADDIV BLAAM练习1写出完成下列计算的程序:100+20 100+20000 100+156100-(-64) 100-64 1000-64写出完成下列功能的程序:1、比较两数A和B的大小2、求A的相反数3、将带进/借位指令部分的例子改成循环4次完成练习2计算123456789AH+0FEDC8090H,设被加数和加数分

温馨提示

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

评论

0/150

提交评论