微机原理3_3.ppt_第1页
微机原理3_3.ppt_第2页
微机原理3_3.ppt_第3页
微机原理3_3.ppt_第4页
微机原理3_3.ppt_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

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

文档简介

1、1,格式:INC reg/mem 功能:类似于C语言中的+操作:对指定的操作数加1 例: INC AL INC SI INC BYTE PTRBX+4 注:本指令不影响CF标志。,3) 加1指令INC(单操作数指令),2,ADD/ADC对条件标志位(CF/OF/ZF/SF)的影响:,CF位表示无符号数相加的溢出。 OF位表示带符号数相加的溢出。,3,(1) 不考虑借位的减法指令SUB 格式: SUB dest, src 操作: dest(dest)-(src) 注:1.源和目的操作数不能同时为存储器操作数 2.立即数不能作为目的操作数 指令例子: SUB AL,60H SUB BX+20H,D

2、X SUB AX,CX,2. 减法指令,4,SBB指令主要用于多字节的减法。 格式: SBB dest, src 操作: dest(dest)-(src)-(CF) 指令例子: SBB AX,CX SBB WORD PTRSI,2080H SBB SI,DX,(2) 考虑借位的减法指令SBB,5,例:x、y、z均为32位数,分别存放在地址为X, X+2;Y,Y+2;Z,Z+2的存储单元中,用指令序列实现wx+y+24-z,结果放在W, W+2单元中。 MOV AX, X MOV DX, X+2 ADD AX, Y ADC DX, Y+2 ; x+y ADD AX, 24 ADC DX, 0 ;

3、 x+y+24 SUB AX, Z SBB DX, Z+2 ; x+y+24-z MOV W, AX MOV W+2, DX ; 结果存入W, W+2单元,6,作用类似于C语言中的”操作符。 格式:DEC opr 操作:opr(opr)-1 指令例子: DEC CL DEC BYTE PTRDI+2 DEC SI,(3) 减1指令DEC,7,格式: NEG opr 操作: opr 0-(opr) 对一个操作数取补码相当于用0减去此操作数,故利用NEG指令可得到负数的绝对值。 例:若(AL)=0FCH,则执行 NEG AL后, (AL)=04H,CF=1 本例中,0FCH为-4的补码,执行求补指

4、令后,即得到4(-4的绝对值)。,(4) 求补指令NEG,8,SUB/SBB对标志位(CF/OF/ZF/SF)的影响,CF=1表示无符号数减法溢出。 OF=1表示带符号数减法溢出。 NEG指令对CF/OF的影响: CF:操作数为0时,求补的结果使CF=0,否则CF=1。 OF:字节运算对-128求补或字运算对-32768求补时OF=1, 否则OF=0。,9,格式: CMP dest, src 操作: (dest)-(src) CMP也是执行两个操作数相减,但结果不送目标操作数,其结果只反映在标志位上。 指令例子: CMP AL,0AH CMP CX,SI CMP DI,BX+03,(5) 比较

5、指令CMP,10,根据标志位来判断比较的结果,1)根据ZF判断两个数是否相等。若ZF=1,则两数相等。 2)若两个数不相等,则分两种情况考虑: 比较的是两个无符号数 若CF=0,则destsrc; 若CF=1,则destsrc。 比较的是两个有符号数 若OFSF=0,则destsrc; 若OFSF=1,则destsrc。,11,这类指令主要用来判断两个数的大小。一般指令序列为: CMP dist,src ;比较 Jxx label ;根据比较结果转移 判断无符号数的大小 JA 高于则转移(distsrc) 转移条件为: CF=0ZF=0 JNA/JBE 低于或等于则转移(distsrc) 转移

6、条件为: CF=1ZF=1, 根据组合条件设置的条件转移指令,12,JG ;大于则转移(distsrc) 转移条件为: (SFOF=0)ZF=0 JGE ;大于或等于则转移(distsrc) 转移条件为: (SFOF=0)ZF=1 JL ;小于则转移(distsrc) 转移条件为: (SFOF=1)ZF=0 JLE ;小于或等于则转移(distsrc) 转移条件为: (SFOF=1)ZF=1,判断有符号数的大小,13,比较指令在使用时,一般在其后紧跟一条条件转移指令,判断比较结果的转向。 举例:比较AL、BL、CL中带符号数的大小,将 最小数放在AL中。 程序: CMP AL,BL ;AL和B

7、L比较 JNG BBB ;若ALBL,则转 XCHG AL,BL ;若ALBL,则交换 BBB: CMP AL,CL ;AL和CL比较 JNG CCC ;若ALCL,则转 XCHG AL,CL ;若ALCL,则交换 CCC: HLT,14,进行乘法时:8位*8位16位乘积 16位*16位32位乘积 (1) 无符号数的乘法指令MUL(MEM/REG) 格式: MUL src 操作:字节操作数 (AX) (AL) (src) 字操作数 (DX, AX) (AX) (src) 指令例子: MUL BL ;(AL)(BL),乘积在AX中 MUL CX ;(AX)(CX),乘积在DX,AX中 MUL B

8、YTE PTRBX,3. 乘法指令,15,格式与MUL指令类似,只是要求两操作数均为有符号数。 指令例子: IMUL BL ;(AX)(AL)(BL) IMUL WORD PTRSI ;(DX,AX)(AX)(SI+1SI),(2) 有符号数乘法指令IMUL,注意:MUL/IMUL指令中 AL(AX)为隐含的乘数寄存器; AX(DX,AX)为隐含的乘积寄存器; SRC不能为立即数; 除CF和OF外,对其它标志位无定义。,16,乘法指令对CF/OF的影响:,例:(AL) = A5H(-5B),(BL) = 11H (1) IMUL BL ; (AX) (AL)(BL) ; A511 -5B11=

9、-060B F9F5 ; (AX) = F9F5H CF=OF=1 (2) MUL BL ; (AX) (AL)(BL) ; A511= 0AF5 ; (AX) = 0AF5H CF=OF=1,17,4. 除法指令,进行除法时:16位/8位8位商 32位/16位16位商 对被除数、商及余数存放有如下规定: 被除数 商余数 字节除法 AX AL AH 字除法 DX:AX AX DX,18,格式: DIV src 操作:字节操作 (AL) (AX) / (SRC) 的商 (AH) (AX) / (SRC) 的余数 字操作 (AX) (DX, AX) / (SRC) 的商 (DX) (DX, AX)

10、 / (SRC) 的余数 指令例子: DIV CL DIV WORD PTRBX 注:若除数为零或AL中商大于FFH(或AX中商大于FFFFH),则CPU产生一个类型0的内部中断。,(1) 无符号数除法指令DIV,19,(2) 有符号数除法指令IDIV,格式: IDIV src 操作与DIV类似。商及余数均为有符号数,且余数符号总是与被除数符号相同。 注意: 对于DIV/IDIV指令 AX(DX,AX)为隐含的被除数寄存器。 AL(AX)为隐含的商寄存器。 AH(DX)为隐含的余数寄存器。 src不能为立即数。 对所有条件标志位均无定义。,20,除法运算要求被除数字长是除数字长的两倍,若不满足

11、则需对被除数进行扩展,否则产生错误。 对于无符号数除法扩展,只需将AH或DX清零即可。 对有符号数而言,则是符号位的扩展。可使用前面介绍过的符号扩展指令CBW和CWD,关于除法操作中的字长扩展问题,21,例: 写出34H25H的程序段。,MOV AL,34H MOV BL,25H CBW ; AL的符号扩展到AH IDIV BL ; 0034H25H,结果为 ; (AH)=0FH, (AL)=01H,22,*5.BCD码运算的十进制调整指令,专用于对BCD码运算的结果进行调整 包括:AAA、DAA、AAS、DAS、AAM、AAD 均为隐含寻址,隐含的操作数为AL和AH 为何要对BCD码的运算结

12、果进行调整? BCD码本质上是十进制数,即应遵循逢十进一的规则。而计算机是按二进制(十六进制)进行运算,并未按十进制规则进行运算。,23,1)加法的十进制调整指令,(1)非压缩BCD码加法调整AAA 本指令对在AL中的由两个未组合的BCD码相加后的结果进行调正,得到一个正确的未组合的BCD码。 AAA指令只影响AF和CF,其余标志无定义。 AAA指令应紧跟在ADD或ADC指令之后。,24,如果AL的低4位9AF=1,则: AL(AL)+6,(AH)(AH)+1,AF1 AL(AL)0FH) CFAF 否则AL(AL)0FH,AAA指令的操作如下:,25,调整原理:先看一个例子 计算89 000

13、0 1000 见右式 +0000 1001 0001 0001 11 结果应为17,而计算机相加为11,原因在于运算过程中,如遇到低4位往高4位产生进位时(此时AF=1)是按逢十六进一的规则,但BCD码要求逢十进一,因此只要产生进位,个位就会少6,这就要进行加6调正。,这个1代表了16,而实际上仅应为10,即多进了6。,26,实际上当低4位的结果9(即AF之间)时,也应进行加6调正 (原因是逢十没有进位,故用加6的方法强行产生进位) 。 如对上例的结果进行加6: 0001 0001 11 + 0000 0110 6 0000 0111 17 0000 1111 - 1 0000 1111,27

14、,例2:有两个字符串形式的十进制数,2658和 3619,求二者之和。即2658+3619=? 由题意知,被加数和加数的每一位都以ASCII码形式存放在内存中。 假定二数在内存中均是低位在前,高位在后,另留出5个单元存放相加的结果。 内存中数据存放形式见下页图。,28,36H,32H,39H,31H,STRING1,STRING2,38H,35H,36H,33H,被加数,加数,数据段,8,5,6,2,9,1,6,3,SUM,结果,.,.,29,程序段为: LEA SI,STRING1 ;STRING1偏移地址送SI LEA DI,STRING2 ;STRING2偏移地址送DI LEA BX,S

15、UM ;SUM偏移地址送BX MOV CX,4 ;循环4次 CLC ;清进位标志 AGAIN:MOV AL,SI ADC AL,DI ;带进位加 AAA ;未压缩BCD码调正 MOV BX,AL ;结果存入SUM INC SI ;调整指针 INC DI INC BX DEC CX ;循环计数器减1 JNZ AGAIN ;若未处理完,则转AGAIN,30,(2)压缩BCD码加法调整DAA,两个压缩BCD码相加结果在AL中,通过DAA调整得到一个正确的压缩BCD码. 指令操作(调整方法): 若AL的低4位9AF=1 则(AL)(AL)+6,AF1 若AL的高4位9CF=1 则(AL)(AL)+60

16、H,CF1 除OF外,DAA指令影响所有其它标志。 DAA指令应紧跟在ADD或ADC指令之后。,31,例: 0100 1000 48H MOV AL,48H + 0111 0100 74H MOV BL,74H 1011 1100 BCH ADD AL,BL + 0110 0110 66H DAA 1 0010 0010 1 22H (进位) (进位) 执行ADD后,(AL)=BCH,高4位低4位均大于9,故DAA指令执行加66H调整,最后结果为: (AL)=22H, CF=1, AF=1,32,(1)非压缩BCD码减法的十进制调正指令AAS 对AL中由两个非压缩的BCD码相减的结果进行调整。

17、调整操作为: 若AL的低4位9或AF=1,则: AL(AL)-6,AH(AH)-1,AF1 AL(AL)0FH CFAF 否则:AL(AL)0FH,2)减法的十进制调整指令,33,举例:16-8=? MOV AX,0106H 0000 0110 06 MOV BL,08H - 0000 1000 - 08 SUB AL,BL 1111 1110 FE AAS - 0000 0110 - 06 1111 1000 F8 0000 1111 0F 0000 1000 08 结果为:(AL)=08H,(AH)=0,CF=AF=1,34,(2)压缩BCD码减法的十进制调正指令DAS 对AL中由两个压缩

18、BCD码相减的结果进行调整。调整操作为:,若AL的低4位9AF=1,则: AL(AL)-6, 且AF1 若AL的高4位9CF=1,则: AL(AL)-60H,且CF1 DAS对OF无定义,但影响其余标志位。 DAS指令要求跟在减法指令之后。,35,3) 乘法的十进制调正指令AAM 对AX中由两个非压缩BCD码相乘的结果进行调整。调整操作为: (AL)/0AH, (AH)商,(AL)余数 隐含的操作寄存器为AL和AH; AAM跟在MUL指令之后使用; 影响标志位PF、SF、ZF,其它无定义; 用AAM可实现99的二-十进制转换。,36,例1:按十进制乘法计算78=? 程序段如下: MOVAL,07H;(AL)=07H MOVCL,08H;(CL)=08H MULCL;(AX)=0038H AAM;(AH)=05H,(AL)=06H 所得结果为非压缩的BCD码。 例2:把3AH转换成等值的十进制数。 MOV AL,3AH ;58 AAM ;(AH)=05H,(AL)=08H,37,4) 除法的十进制调正指令AAD,对非压缩BCD除法运算进

温馨提示

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

评论

0/150

提交评论