第4章算术逻辑运算类课件

上传人:我*** 文档编号:141262144 上传时间:2020-08-05 格式:PPT 页数:49 大小:898.50KB
返回 下载 相关 举报
第4章算术逻辑运算类课件_第1页
第1页 / 共49页
第4章算术逻辑运算类课件_第2页
第2页 / 共49页
第4章算术逻辑运算类课件_第3页
第3页 / 共49页
第4章算术逻辑运算类课件_第4页
第4页 / 共49页
第4章算术逻辑运算类课件_第5页
第5页 / 共49页
点击查看更多>>
资源描述

《第4章算术逻辑运算类课件》由会员分享,可在线阅读,更多相关《第4章算术逻辑运算类课件(49页珍藏版)》请在金锄头文库上搜索。

1、第4章,算术和逻辑运算指令,算术运算类指令用来执行二进制的算术运算:加减乘除。 这类指令会根据运算结果影响状态标志,有时要利用某些标志才能得到正确的结果;使用他们时请留心有关状态标志 重点掌握 加法指令:ADD、ADC、INC 减法指令:SUB 、SBB、DEC、CMP、NEG,4.3.2 算术运算类指令,算术运算类指令,可处理:不带符号/带符号的8/16位二进制数 不带符号的压缩型(2位BCD码)/非压缩型(一位BCD码,高4位补0)十进制数,对于加法和减法指令,带符号和不带符号的加减运算的操作过程无区别,可用同一条加法/减法指令完成,对于乘法除法运算,运算过程完全不同,分别设有不带符号和带

2、符号的乘法除法的指令,对于十进制运算,先采用二进制运算指令,后进行十进制调整的方式来实现,加法指令:ADD, ADC和INC 减法指令:SUB, SBB, DEC, NEG和CMP 他们分别执行字或字节的加法和减法运算,除INC和DEC不影响CF标志外,其他按定义影响全部状态标志位 操作数组合: 运算指令助记符 reg, imm/reg/mem 运算指令助记符 mem, imm/reg,4.3.2.1 加法和减法指令,ADD dest,src ;加法:destdestsrc ;ADD指令使目的操作数加上源操作数,和的结果送到目的操作数 SUB dest,src ;减法:destdestsrc

3、;SUB指令使目的操作数减去源操作数,差的结果送到目的操作数,1. 加和减指令,MOV AX,7348H;AX7348H ADD AL,27H ;AL48H27H6FH,AX736FH ;OF0,SF0,ZF0,PF1,CF0 ADD AX,3fffH ;AX736FH3FFFHB36EH ;OF1,SF1,ZF0,PF0,CF0,例4 加法,SUB AH,0F0H ;AHB3HF0HC3H,AXC36EH ;OF0,SF1,ZF0,PF1,CF1 MOV word ptr200H,0EF00H ;200HEF00H,标志不变 SUB 200H,AX ;200HEF00HC36EH2B92H

4、;OF0,SF0,ZF0,PF0,CF0 SUB SI,SI;SI0 ;OF0,SF0,ZF1,PF1,CF0,例5 减法,ADC dest,src ;加法:destdestsrcCF ;ADC指令除完成ADD加法运算外,还要加上进位CF,结果送到目的操作数 SBB dest,src ;减法:destdestsrcCF ;SBB指令除完成SUB减法运算外,还要减去借位CF,结果送到目的操作数,2. 带进位加和减指令,MOV AX,7856H;AX7856H MOV DX,8234H;DX8234H ADD AX,8998H;AX01EEH,CF1 ADC DX,1234H;DX9469H,CF

5、0 SUB AX,4491H;AXBD5DH,CF1 SBB DX,8000H;DX1468H,CF0,例6 无符号双字加法和减法,CMP dest,src ;做减法运算:destsrc ;CMP指令将目的操作数减去源操作数,但差值不回送目的操作数 比较指令通过减法运算影响状态标志,用于比较两个操作数的大小关系,后面跟转移指令 判断两个无符号数大小用JC/JNC或JA/JNBE或JB/JNAE指令 判断两个带符号数大小用JG/JNLE或JL/JNGE,3. 比较指令CMP(compare),INC reg/mem ;增量(加1):reg/memreg/mem1 DEC reg/mem ;减量(

6、减1):reg/memreg/mem1 INC指令和DEC指令是单操作数指令 与加法和减法指令实现的加1和减1不同的是:INC和DEC不影响CF标志,INC SI;SISI1 DEC byte ptr SI;SISI1,4. 增量和减量指令,例7 比较指令CMP(compare),若自BLOCK开始的内存缓冲区中,有100个带符号字数据,要找出其中的最大数,把它存到MAX单元中,MOV BX,OFFSET BLOCK MOV AX,BX INC BX INC BX MOV CX,99 AGAIN:CMP AX,BX JG NEXT MOV AX,BX,NEXT:INC BX, INC BX D

7、EC CX JNZ AGAIN MOV MAX,AX HLT,NEG reg/mem ;reg/mem0reg/mem NEG指令对操作数执行求补运算,即用零减去操作数,然后结果返回操作数 求补运算可表达成:将操作数按位取反后加1 NEG指令对标志的影响与用零作减法的SUB指令一样 NEG指令也是一个单操作数指令 NEG指令执行的结果一般总是使CF1除非操作数为0时CF0,5. 求补指令NEG(negtive),MOV AX,0FF64H NEG AL;AL064H9CH,AXFF9CH ;OF0SF1,ZF0,PF1,CF1 SUB AL,9DH;ALFFH,AXFFFFH ;OF0,SF1

8、,ZF0,PF1,CF1 NEG AX;AX0FFFFH0001H ;OF0,SF0,ZF0,PF0,CF1 DEC AL;AL01H10,AX0000H ;OF0,SF0,ZF1,PF1,CF1 NEG AX;AX000 ;OF0,SF0,ZF1,PF1,CF0,例8 求补运算,十进制数调整指令对二进制运算的结果进行十进制调整,以得到十进制的运算结果,以此实现十进制BCD码运算 8086指令系统支持两种BCD码调整运算 压缩BCD码就是通常的8421码;它用4个二进制位表示一个十进制位,一个字节可以表示两个十进制位,即0099 非压缩BCD码用8个二进制位表示一个十进制位,只用低4个二进制位

9、表示一个十进制位09,高4位为0,4.3.2.2 十进制调整指令,十进制调整指令,DAA /DAS指令:十进制调整指令 它跟在ADD/ADC或SUB/SBB之后,功能是将AL中十进制数相加/减后的结果进行校正,产生一个组合的十进制和/差,仍保留在AL中,AAA/AAS指令:十进制调整指令 它跟在ADD/ADC或SUB/SBB之后,对AL中两个未组合的十进制数相加/减后的结果进行校正,产生一个未组合的十进制和/差 ,仍保留在AL中,乘法指令分无符号和有符号乘法指令 MUL reg/mem;无符号乘法 IMUL reg/mem;有符号乘法 AL或AX与另一个操作数相乘,结果送到AL和AH(两个字节

10、 相乘),或送到AX和它的扩展部分DX(两个字相乘) 除法指令分无符号和有符号除法指令 DIV reg/mem;无符号除法 IDIV reg/mem;有符号除法 字节除法:AX源操作数(8位),商在AL中,余数在AH中 字除法:DX,AX 源操作数(16位),商在AX中,余数DX中,4.3.2.3 乘法和除法指令,真值(十进制)864 二进制编码08H40H 压缩BCD码08H64H 非压缩BCD码08H0604H ASCII码38H3634H,压缩BCD码加减法调整指令 DAA DAS 非压缩BCD码加减法调整指令 AAA AAS AAM AAD,编码的比较,位操作类指令以二进制位为基本单位

11、进行数据的操作 当需要对字节或字数据中的各个二进制位操作时,可以考虑采用位操作类指令 注意这些指令对标志位的影响 1. 逻辑运算指令 AND OR XOR NOT TEST 2. 移位指令 SHL SHR SAR SAL 3. 循环移位指令 ROL ROR RCL RCR,4.3.3 逻辑运算指令,双操作数逻辑指令AND、OR、XOR和TEST,根据结果设置SF、ZF和PF状态,而对AF未定义;指令的执行使CFOF0 : 运算指令助记符 reg, imm/reg/mem 运算指令助记符 mem, imm/reg 单操作数逻辑指令NOT不影响标志位: NOT reg/mem,4.3.3.1 逻辑

12、运算指令,对两个操作数执行逻辑与运算,结果送目的操作数,AND dest,src;destdestsrc,只有相“与”的两位都是1,结果才是1;否则,“与”的结果为0,1. 逻辑与指令AND,对两个操作数执行逻辑或运算,结果送目的操作数,OR dest,src;destdestsrc,只要相“或”的两位有一位是1,结果就是1;否则,结果为0,2. 逻辑或指令OR,对两个操作数执行逻辑异或运算,结果送目的操作数,XOR dest,src;destdestsrc,只有相“异或”的两位不相同,结果才是1;否则,结果为0,3. 逻辑异或指令XOR,对两个操作数执行逻辑与运算,结果并不送目的操作数,仅按

13、AND指令影响标志,TEST dest,src;destsrc,AND与TEST指令的关系, 同SUB与CMP指令的关系一样,4. 测试指令TEST,对一个操作数执行逻辑非运算,NOT reg/mem;reg/memreg/mem,按位取反,原来是“0”的位变为“1”;原来是“1”的位变为“0”,5. 逻辑非指令NOT,MOV AL,75H;AL75H AND AL,32H;AL30H ;CFOF0, SF0,ZF0,PF1 OR AL,71H;AL71H ;CFOF0,SF0,ZF0,PF1 XOR AL,0F1H;AL80H ;CFOF0,SF1,ZF0,PF0 NOT AL;AL7FH,

14、标志不变,例9 逻辑运算,AND BL,11110110B ;BL中D0和D3清0,其余位不变 OR BL,00001001B ;BL中D0和D3置1,其余位不变 XOR BL,00001001B ;BL中D0和D3求反,其余位不变,AND指令可用于复位某些位(同0相与),不影响其他位,OR指令可用于置位某些位(同1相或),不影响其他位,XOR指令可用于求反某些位(同1相异或),不影响其他位,例10 逻辑运算指令的应用,将操作数移动一位或多位,分成逻辑移位和算术移位,分别具有左移或右移操作 移位指令的第一个操作数是指定的被移位的操作数,可以是寄存器或存储单元;后一个操作数表示移位位数: 该操作

15、数为1,表示移动一位 该操作数为CL,CL寄存器值表示移位位数 (移位位数大于1只能用CL表示) 按照移入的位设置进位标志CF,根据移位后的结果影响SF、ZF、PF,4.3.3.2 移位指令,SHL reg/mem,1/CL ;reg/mem左移1或CL位 ;最低位补0,最高位进入CF,演示,1. 逻辑左移指令SHL,SHR reg/mem,1/CL ;reg/mem右移1/CL位 ;最高位补0,最低位进入CF,演示,2. 逻辑右移指令SHR,SAL reg/mem,1/CL ;与SHL是同一条指令,演示,3. 算术左移指令SAL,SAR reg/mem,1/CL ;reg/mem右移1/CL

16、位 ;最高位不变,最低位进入CF,演示,4. 算术右移指令SAR,MOV DX,6075H;DX01100000 01110101B SHL DX,1;DX11000000 11101010B ;CF0,SF1、ZF0、PF0 SAR DX,1;DX11100000 01110101B ;CF0,SF1、ZF0、PF0 SHR DX,1;DX01110000 00111010B ;CF1,SF0、ZF0、PF1 MOV CL,4;CL4,标志不变 SAR DX,CL;DX00000111 00000011B ;CF1,SF0、ZF0、PF1,例11 数据移位,XOR AH,AH;实现AH0,同时使CF0 SHL AX,1;AX2AL MOV BX,AX;BXAX2AL SHL AX,1;AX4AL SHL AX,1;AX8AL ADD AX,BX;AX8AL2AL10AL,逻辑左移一位相当于无符号数乘以2 逻辑右移一位相当于无符号数除以2,例13 将AL寄存器中的无符号数乘以10,循环移位指令类似移位指令,但要将从一端移出的位返回到另一端形成循环。分为: ROL reg

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

当前位置:首页 > 办公文档 > PPT模板库 > PPT素材/模板

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