微机原理与接口第4章3_算术运算类指令

上传人:ji****n 文档编号:57520944 上传时间:2018-10-22 格式:PPT 页数:62 大小:433.50KB
返回 下载 相关 举报
微机原理与接口第4章3_算术运算类指令_第1页
第1页 / 共62页
微机原理与接口第4章3_算术运算类指令_第2页
第2页 / 共62页
微机原理与接口第4章3_算术运算类指令_第3页
第3页 / 共62页
微机原理与接口第4章3_算术运算类指令_第4页
第4页 / 共62页
微机原理与接口第4章3_算术运算类指令_第5页
第5页 / 共62页
点击查看更多>>
资源描述

《微机原理与接口第4章3_算术运算类指令》由会员分享,可在线阅读,更多相关《微机原理与接口第4章3_算术运算类指令(62页珍藏版)》请在金锄头文库上搜索。

1、1,数据传送指令总结,共14条,分为4组,2,二、算术运算类指令,算术运算类指令用来执行二进制的算术运算:加减乘除。 这类指令会根据运算结果影响状态标志,有时要利用某些标志才能得到正确的结果;使用他们时请留心有关状态标志方法:通过理解指令含义、多读程序掌握指令。,3,80868088有丰富的算术运算指令,而且可以处理4种类型的数据,如下表所示:,4,二、算术运算指令(四类,20条),5,运算数据格式和对标志位影响,1)数据类型,6,2)运算数据格式和对标志位影响,对标志位的影响:所有算术运算指令都影响状态标志 CF 、PF、AF 、ZF 、SF和OF 当无符号数运算结果溢出时,CF=1 当有符

2、号数运算产生溢出时,OF=1 当运算结果中低8位有偶数个1或0个1,则PF=1 若加法时第3位给第4位进位,或减法时第3位从 第4位借位,则AF=1 若运算结果为0,则ZF=1 若运算结果为负数,则SF=1,7,3)加法和减法指令,加法指令:ADD, ADC和INC 减法指令:SUB, SBB, DEC, NEG和CMP 他们分别执行字或字节的加法和减法运算,除INC和DEC不影响CF标志外,其他按定义影响全部状态标志位 操作数组合: 运算指令助记符 reg, imm/reg/mem 运算指令助记符 mem, imm/reg,8,加和减指令,ADD dest,src ;加法:destdests

3、rc;ADD指令使目的操作数加上源操作数,和的结果送到目的操作数SUB dest,src ;减法:destdestsrc;SUB指令使目的操作数减去源操作数,差的结果送到目的操作数,9,(1) 加法指令,在微处理器中,没有专用的BCD码运算指令,使用二进制运算指令进行BCD码数的运算,然后用BCD码运算调整指令进行调整,重新得到BCD码的结果。,:影响; :不影响 :状态不定;1:置为1,10,(1)加法指令, 加法指令ADD (ADDition)。指令格式及操作:ADD dst,src ;(dst)(dst)+(src) 带进位加法指令ADC (ADdition with Carry)。AD

4、C dst,src ;(dst)(dst)+(src)+(CF) 例、4字节的加法 MOV AX,SIADD DI,AXMOV AX,SI+2ADC DI+2,AX,11,多字节加法运算程序 例4.3 计算两个多字节十六进制数之和:3B74AC60F8H+20D59E36C1H=?式中被加数和加数均有5个字节,可以编一个循环程序实现以上运算。 假设已将被加数和加数分别存入从DATA1和DATA2开始的两个内存区,且均为低位字节在前,高位字节在后,如图4.15所示。要求相加所得结果仍存回以DATA1为首址的内存区。(如果结果存放到DATA3为为首址的内存区?),12,图4.15 例4.3中被加数

5、和加数在内存中的存放情况,图4.16 例4.3的程序流程图,13,程序流程图如图4.16所示。程序如下:MOV CX,5 ;设置循环次数MOV SI,0 ;置位移量初值CLC ;清进位CF LOOPER:MOV AL,DATA2SI ;取一个加数ADC DATA1SI,AL ;和一个被加数相加INC SI ;位移量加1DEC CX ;循环次数减1 JNZ LOOPER ;加完否,若没完,转 LOOPER HLT ;程序暂停,14,如果结果存放到DATA3为为首址的内存区?程序如下:MOV CX,5 ;设置循环次数MOV SI,0 ;置位移量初值MOV DI,0CLC ;清进位CFLOOPER:

6、MOV AL,DATA2SI ;取一个加数ADC AL ,DATA1SI ;和一个被加数相加MOV DATA3DI,ALINC SI ;位移量加1INC DIDEC CX ;循环次数减1 JNZ LOOPER ;加完否,若没完,转 LOOPER HLT ;程序暂停,15, 加1指令INC (INCrement by 1)。指令格式及操作:INC dst ;(dst)(dst)+1INC reg/mem; 指令影响状态标志位,如SF、ZF、AF、PF和OF,但对进位标志CF没有影响。INC指令中目的操作数可以是寄存器或存储器,但不能是立即数和段寄存器。其类型为字节操作或字操作均可。例如: INC

7、 DL INC SI INC BYTE PTRBXSI ;对存储器字节操作 INC WORD PTRDI ;对存储器字操作 使用场合:INC指令常常用于在循环程序中修改地址。,16,(2) 减法指令。减法指令包括不带借位减法指令、带借位减法指令、减1指令、求补指令和比较指令。,SUB 目的,源;不带借位的减法 SBB 目的,源;带借位的减法 DEC 目的 ;减1指令 NEG 目的 ;求补指令 CMP 目的,源 ;结果不送回,只影响状态位 AAS ;减法的ASCII调整指令 DAS ;减法的十进制调整指令,17,减法指令,18, 减法指令SUB (SUBtraction)。指令格式及操作:SUB

8、 dst,src ;(dst)(dst) (src),影响状态标志位操作数的类型:目的操作数可以是寄存器或存储器,源操作数可以是立即数、寄存器或存储器,但不允许两个存储器操作数相减;既可以字节相减,也可以字相减。 数据的类型:可据程序员的要求约定为带符号数或无符号数。 当无符号数不够减时产生借位( CF=1 )。 当带符号数的不够时减将得到负的结果( SF1 ),带符号数相减如果结果溢出,则OF置1。SUB AL,37HSUB DX,BXSUB CX,VARE1SUB ARRAYDI,AXSUB BETABXDI,512;BETA为字型变量,若为字节型变量,则源操作数超出范围,19, 带借位减

9、法指令SBB (SuBtraction with Borrow)。 SBB dst,src ;(dst)(dst)(src)(CF),影响状态标志位带使用场合:借位减指令主要用于多字节的减法。 SBB BX,1000SBB CX,DXSBB AL,DATA1SISBB DISPBP,BLSBB BYTE PTR SI+6,97,20, 减1指令DEC (DECrement by 1)。DEC dst ;(dst)(dst) 1DEC指令将目的操作数减1,结果送回目的操作数。指令对状态标志位SF、ZF、AF、PF和OF有影响,但不影响进位标志CF。操作数可以是寄存器或存储器(立即数和段寄存器不可

10、)。其类型是字节操作或字操作均可。在循环程序中常常利用DEC指令来修改循环次数。,指令举例 DEC BL DEC CX DEC BYTE PTRBX DEC WORD PTRBPDI,指令使用举例MOV AX,0FFFFH CYC:DEC AXJNZ CYCHLT,21, 求补指令NEG(NEGate)。NEG dst ;(dst)0 (dst)NEG指令的操作是用“0”减去目的操作数,结果送回原来的目的操作数。求补指令对状态标志位有影响。操作数可以是reg或mem。可以对8位数或16位数求补。 使用场合:利用NEG指令可以得到负数的绝对值。 例如:NEG BLNEG AXNEG BYTE P

11、TRBPSINEG WORD PTRDI+20,22,例4.4 内存数据段存放了200个带符号数,首地址为TAB1,要求将各数取绝对值后存入以TAB2为首址的内存区。由于200个带符号数中可能既有正数,又有负数,因此先要判断正负。如为正数,可以原封不动地传送到另一内存区;如为负数,则需先求补即可得到负数的绝对值,然后再传送。程序如下: 画出流程图,23,05h,F1h,tab1,tab2,DS,eg:以tab1为首地址存放了200个带符号数,要求将各数求绝对值后存入以tab2为首地址的内存区。,求绝对值,24,LEA SI,TAB1 ;(SI)源地址指针LEA DI,TAB2 ;(DI)目标地

12、址指针MOV CX,200 ;(CX)循环次数 CHECK: MOV AL,SI ;取一个带符号数到ALOR AL,AL ;AL内容不变,但使之影响标志JNS NEXT ;若(SF)=0,则转NEXTNEG AL ;否则求补 NEXT: MOV DI,AL ;传送到目标地址INC SI ;源地址加1INC DI ;目标地址加1DEC CX ;循环次数减1JNZ CHECK ;如不等于零,则转CHECKHLT ;停止,25, 比较指令CMP (CoMPare)。指令格式及操作:CMP dst,src ;(dst) (src)CMP REG/Mem, Imm/REG/Mem 比较指令与减法指令SU

13、B的区别:CMP指令将目的操作数减源操作数,但结果不送回目的操作数。执行比较指令以后,被比较的两个操作数内容均保持不变,而比较结果反映在状态标志位上。,26,对操作数要求:CMP指令的目的操作数可以是寄存器或存储器,源操作数可以是立即数、寄存器或存储器,但不能同时为存储器。可以进行字节字比较。例如:CMP AL,0AH ;寄存器与立即数比较CMP CX,DI ;寄存器与寄存器比较CMP AX,AREA1 ;寄存器与存储器比较CMP BX+5,SI ;存储器与寄存器比较比较指令的执行结果将影响状态标志位。例如,若两个被比较的内容相等,则(ZF)=1。又如,假设被比较的两个无符号数中,前者小于后者

14、(即不够减),则(CF)=1,等等。 比较指令常常与条件转移指令结合起来使用,完成各种条件判断和相应的程序转移。,27,例4.5 在数据段从MYDATA开始的存储单元中分别存放了两个8位无符号数,试比较它们的大小,并将大者传送到MAX单元。程序如下:LEA BX,MYDATA ;MYDATA偏移地址送BXMOV AL,BX ;第一个无符号数送ALINC BX ;BX指向第二个无符号数CMP AL,BX ;两个数比较JNC DONE ;如CF=0,则转DONEMOV AL,BX ;否则,第二个无符号数送AL DONE:MOV MAX,AL ;较大的无符号数送MAX单元HLT ;停止,28,例、加

15、减运算对状态位影响,mov ax,7348h ;AX7348H add al,27h ;AL48H27H6FH,AX736FH;OF0,SF0,ZF0,PF1,CF0 add ax,3fffh ;AX736FH3FFFHB36EH ;OF1,SF1,ZF0,PF0,CF0sub ah,0f0h ;AHB3HF0HC3H,AXC36EH;OF0,SF1,ZF0,PF1,CF1 mov word ptr200h,0ef00h ;200HEF00H,标志不变 sub 200h,ax ;200HEF00HC36EH2B92H;OF0,SF0,ZF0,PF0,CF0 sub si,si ;SI0;OF0,SF0,ZF1,PF1,CF0,

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 生活休闲 > 社会民生

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号