微机原理与接口技术第3章_2

上传人:我** 文档编号:117887412 上传时间:2019-12-11 格式:PPT 页数:97 大小:559.50KB
返回 下载 相关 举报
微机原理与接口技术第3章_2_第1页
第1页 / 共97页
微机原理与接口技术第3章_2_第2页
第2页 / 共97页
微机原理与接口技术第3章_2_第3页
第3页 / 共97页
微机原理与接口技术第3章_2_第4页
第4页 / 共97页
微机原理与接口技术第3章_2_第5页
第5页 / 共97页
点击查看更多>>
资源描述

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

1、3.4.2 算术运算指令(Arithmetic) 算术运算指令算术运算指令内容: 8086/80888086/8088提供加、减、乘、除等六种基本算术操作提供加、减、乘、除等六种基本算术操作 (一)加法指令( Addition) (二)减法指令(Subtraction) (三)乘法指令(Multiplication) (四)除法指令(Division) (五)符号扩展指令 (六)十进制调整指令 特点:特点: 大部分都影响标志位大部分都影响标志位,不同指令影响不同: (1) 加、减法指令影响加、减法指令影响 SF,ZF,AF,PF,CF,OF;SF,ZF,AF,PF,CF,OF; (2) (2)

2、 加加1 1和减和减1 1指令不影响指令不影响CF;CF; (3) (3) 乘法指令影响乘法指令影响CF,OF;CF,OF; (4) (4) 除法指令使大部分标志位的状态不确定除法指令使大部分标志位的状态不确定; ; (5) (5) 对对BCDBCD码调整指令对标志位的影响不同码调整指令对标志位的影响不同; ; (6) (6) 转换指令对标志位无影响转换指令对标志位无影响 都可以用于字节、字的运算都可以用于字节、字的运算; ; 双操作数指令除源为立即数外,其余必须有一个操作数双操作数指令除源为立即数外,其余必须有一个操作数 为寄存器;单操作数指令不能为立即数。为寄存器;单操作数指令不能为立即数

3、。 80868086具有具有5 5种加法操作指令种加法操作指令: : 1、 ADD(Addition)加法指令 2、 ADC(Add with carry)带进位加法指令 3、 INC(Increment by 1)加 1指令 4 4、AAA(ASCII adjust for addition)AAA(ASCII adjust for addition)加法 加法ASCIIASCII调整指令调整指令 5 5、DAA(Decimal adjust for addition)DAA(Decimal adjust for addition)加法十进制调整指令加法十进制调整指令 (一)加法指令( Ad

4、dition) 指令格式:ADD dst , src ;(dst) (dst)+(src) SrcSrc:立即数,寄存器,存储器。立即数,寄存器,存储器。 dstdst:寄存器,存储器。寄存器,存储器。 例:ADD CL,10;寄存器+立即数 ADD DX,SI;寄存器+寄存器 ADD AX, MEM;寄存器+存储器 ADD DATABX, AL;存储器+寄存器 ADD BYTE PTR ALPHADI,30H;存储器+立即数 1、 ADD(Addition)加法指令 格式:ADC dst,src ;(dst)(dst)+(src)+CFCF CF:CF: 进位标志CF的现行值(上条指令上条指

5、令CFCF值值) 特点: 与ADD同。 用途:主要用于多字节运算中。 例: ADC CX, 300 ;寄存器+立即数+CF ADC AL, BL;寄存器+寄存器+CF ADC DX, COUNTSI;寄存器+存储器CF ADC BLOCKDI, BX;存储器+寄存器+CF ADC BYTE PTR MEM, 6;存储器+立即数+CF 2、 ADC(Add with carry)带进位加法指令 应用举例: 计算两个多字节数相加 3B74AC60F8H+20D59E36C1H=? 两个多字节数存放在: DATA1,DATA2开始的单元。 流程图 多字节数内存存放 程序: MOV CX, 5 MOV

6、 SI, 0; 清SI CLC;清CF LOOPER:MOV AL, DATA2SI ADC DATA1SI,AL INC SI;(SI)+1 (SI) DEC CX;(CX)-1 (CX) JNZ LOOPER;(CX)0转 HLT;停机 特点特点: 可以进行可以进行8 8位、位、1616位的位的无符号数和带符号数无符号数和带符号数的加法运算; 的加法运算; 源操作数和目标操作数源操作数和目标操作数不能同时为存储器不能同时为存储器, , 不能为段寄存器不能为段寄存器 ; 指令影响标志位的情况指令影响标志位的情况: OF=1OF=1, 8位带符号数相加,和超出范围(128127), 16位带符

7、号数相加,和超出范围(-32768+32767); CF=1CF=1, 8位无符号数相加,和超过255, 16位无符号数相加,和超过65535。 其他条件标志(SF,AF,PF,ZF)根据定义设定。 例:MOV AL,7EH;(AL)=7EH MOV BL, 5BH;(BL)=5BH ADD AL,BL;(AL)=7EH+5BH=D9H 影响标志位的情况: SF=1 , 结果最高位1 ZF=0 ,结果不等于0 AF=1 ,D3 位向D4 有进位 PF=0 ,”1”的个数为奇数 CF=0 ,无进位 OF=1 ,和超过127 (两个正数相加,结果为负;反之亦是)(两个正数相加,结果为负;反之亦是)

8、 分析两标志位分析两标志位(1) 什么是溢出标志?溢出标志?什么什么是进位标志?进位标志? (2) 有进位就有溢出,没有进位就没有溢出?有进位就有溢出,没有进位就没有溢出? 问题思考问题思考: (1)解答:解答: 溢出标志溢出标志OFOF-通常反映通常反映带符号数的补码溢出 溢出。 补码运算能表示范围为:-2 n-1 +2 n-1 1,如果运算结果超出该 范围,叫补码溢出溢出,此时,此时OF=1,故用OF标志判断带符号数 带符号数运 算是否超范围(结果溢出)溢出)。 进位标志进位标志CFCF-反映反映运算结果的最高位向更高位的进位进位 。 有进位,有进位,CF=1CF=1;无进位,无进位, C

9、F=0CF=0,用CF标志判断无符号数无符号数运 算是否超范围(结果溢出)溢出) 。 (2 2)有进位就有溢出,没有进位就没有溢出?有进位就有溢出,没有进位就没有溢出? 结论:结论: 有进位不一定有溢出,没有进位不一定没有溢出。 以8位二进制数为例分析一下数的溢出与进位情况: 下面分4种情况加以讨论: (1) 带符号数和无符号数都不溢出 (2) 无符号数溢出 (3) 带符号数溢出 (4) 带符号数和无符号数都溢出 (1 1) 带符号数和无符号数都不溢出带符号数和无符号数都不溢出 。 (2 2) 无符号数溢出无符号数溢出 二进制数看作无符号数看作带符号数 0 0 0 0 0 1 1 1 1 1

10、1 1 1 0 1 1+ 0 0 0 0 0 0 1 0 7 251+ 258 + 7 - 5+ + 2 相 加 标志CF=1,OF=0CF=1OF=0 溢出无符号数溢出 溢出 结果应为2,错 不溢出 异号数相加 不可能有溢出 CF=1 (3 3) 带符号数溢出带符号数溢出 (4 4) 带符号数和无符号数都溢出带符号数和无符号数都溢出 (1)带符号数相加是否溢出根据OF= 1 ?判断。 对于字节运算:OF = C6 OF = C6 C7C7 同符号数相加,异号数相减可能产生溢出; (2)无符号数相加是否溢出根据CF= 1 ?判断。 (3)对标志的解释,取决于程序员。如带符号数只关心 OF、SF

11、;无符号数只关心CF,而OF、SF无意义 。 结论结论: 格式: INC dst;(B/W), (dst)(dst)+1 dst : 寄存器、存储器。不能是段寄存器。寄存器、存储器。不能是段寄存器。 功能:对指定的目标操作数+1 操作数单元。 用途:用于在循环程序中修改地址指针和循环次数。 标志位影响情况:影响SF,ZF,AF,PF,OF。 不影响不影响CFCF。 3、INC (Increment by 1 )加 1 指令 操作数类型:可以是寄存器,存储器,不能是段寄存器。操作数类型:可以是寄存器,存储器,不能是段寄存器。 例: INC DL; 8位寄存器1 INC SI;16位寄存器1 IN

12、C BYTE PTR BXSI ;存储器1(字节操作) INC WORD PTR DI;存储器1(字操作) INC DS; 错 8086有7条减法指令 : 1、SUB(Subtraction)减法指令 2、SBB(Subtraction with borrow)带借位减法指令 3、DEC(Decrement by 1 ) 减 1 指令 4、NEG(Negate) 取负(求补)指令 5、CMP(Compare) 比较指令 6、AAS(ASCII adjust for subtraction)减法ASCII调整指令 7、DAS(Decimal adjust for subtraction)减法十进

13、制调整指令 (二)减法指令(Subtraction) 格式:SUB dst,src;(dst)(dst)-(src) SrcSrc:立即数,寄存器,存储器。立即数,寄存器,存储器。 dstdst:寄存器,存储器。寄存器,存储器。 例:SUB AL,37H;寄存器-立即数 SUB BX,DX;寄存器-寄存器 SUB CX, VAR1;寄存器-存储器 SUB ARRAYSI, AX;存储器-寄存器 SUB WORD PTR BXDI,512H ;存储器减立即数 这种指令影响标志位: AF、CF、OF、PF、SF、ZF标志。 CF=1,无符号数小减大,运算结果溢出; OF=1,带符号数运算溢出。 1

14、、SUB(Subtraction)减法指令 格式:SBB dst,src;(dst)(dst)-(src)-CF CF: 借位标志CF的现行值(上条指令CF值) SrcSrc:立即数,寄存器,存储器;立即数,寄存器,存储器; dstdst:寄存器,存储器。寄存器,存储器。 指令影响标志位、B/W数运算情况同SUB。 用途:用于多字节数相减。 例:SBB BX,100H;寄存器-立即数 -CF SBB CX,DX;寄存器-寄存器-CF SBB AL, DATA1SI;寄存器-存储器-CF SBB DISPBP, BL;存储器-寄存器-CF SBB BYTE PTR ALPHASI+6, 96H;

15、存储器-立即数-CF 2、SBB(Subtraction with borrow)带借位减法指令 格式: DEC dst ;(B/W) (dst)(dst)-1 dstdst : : 寄存器寄存器 、存储器。不能是段寄存器。、存储器。不能是段寄存器。 功能:对指定的目标操作数-1 操作数单元。 用途:用于在循环程序中修改地址指针和循环次数。 标志位影响情况:影响SF,ZF,AF,PF,OF。 不影响CF。 3、DEC (Decrement by 1 ) 减 1 指令 DEC 用途举例: MOV AX , 0FFFFH CYC: DEC AX JNZ CYC HLT 用于延时时间。 格式: NEG dst ;B/W, (dst) 0 - (dst) dst : 寄存器、存储器。 操作: 把操作数按位求反后末位+1。 (dst) 0FFFFH -(dst)+1 影响标志:AF、CF、OF、PF、SF、ZF。 CF:操作数为0时求补,CF=0 ; 其他情况均使CF=1

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

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