微机原理 第三章4讲述

上传人:最**** 文档编号:117183012 上传时间:2019-11-18 格式:PPT 页数:26 大小:1.79MB
返回 下载 相关 举报
微机原理 第三章4讲述_第1页
第1页 / 共26页
微机原理 第三章4讲述_第2页
第2页 / 共26页
微机原理 第三章4讲述_第3页
第3页 / 共26页
微机原理 第三章4讲述_第4页
第4页 / 共26页
微机原理 第三章4讲述_第5页
第5页 / 共26页
点击查看更多>>
资源描述

《微机原理 第三章4讲述》由会员分享,可在线阅读,更多相关《微机原理 第三章4讲述(26页珍藏版)》请在金锄头文库上搜索。

1、3.2.3 逻辑运算和移位指令 1. 逻辑运算指令 1) AND(Logical and ) 逻辑“与”指令 2) OR(Lgical inclusive or ) 逻辑“或”指令 3) XOR(Logical exclusive or) 逻辑“异或”指令 4) TEST(Test or non-destructive logical and)测试指令 5) NOT(Logical not ) 逻辑“非”指令 特点:特点: 对其操作数按位执行逻辑操作, 操作数可以是双字、字或字节。 影响条件码: (NOT指令除外) CFCF0F = 00F = 0, A未定义 , SF ZF PF ( SF

2、ZF PF (运算结果运算结果) ) 源操作数可以为立即数、寄存器、存储器 目的操作数可以为寄存器、存储器,不能为立即数 源操作数不是立即数时,两操作数必有一个寄存器 第3章 Pentium的指令系统 Date 1 AND dest, src ;(dest)(dest src) 操作:进行“与”运算,两位中有一位为0(或二位都为0),则结果为0,否则为1 。 寄存器、存储器寄存器、存储器立即数、寄存器、存储器立即数、寄存器、存储器 1 1)ANDAND逻辑逻辑“ “与与” ”指令指令(Logical and ) “与”指令的用途: (1) 清清CFCF,OFOF , 自己“与”自己. 操作数不

3、变 ,CF=0,OF=0 例:AND AL ;结果:操作数不变 ,CF=0,OF=0。 (2) 使操作数中若干位保持不变,若干位与“1”相与; 而若干位置为“0 “的场合,若干位与“0” 相与。 例: 若(AL)=43 3H AND AL, 0F FH ; (AL)=03H, (AL)(AL)03 03不变 不变; ; (AL)(AL)47 47=00H, =00H,屏蔽高屏蔽高4 4位位。 第3章 Pentium的指令系统 Date 2 “与”指令应用举例: 例1:将英文小写字母ASCII转换成大写。 小写英文字母ASCII为:az 61H7AH 大写英文字母ASCII为:AZ 41H5AH

4、 程序:MOV AL, z AND AL, 0DFDFH ;(AL)=5AH 1101 1111 DFH 0110 00010100 000161H41H 0111 10100101 10107AH5AH 第3章 Pentium的指令系统 Date 3 OR dset, src ; (dset) (dset) (src) 操作: 进行按位“或”运算 两位操作数中任一位为1(或都为1), 则该位(结果)=1,否则为0。 寄存器、存储器寄存器、存储器立即数、寄存器、存储器立即数、寄存器、存储器 2 2)OROR逻辑逻辑“ “或或” ”指令指令( Lgical inclusive or ) 或指令应

5、用用途: (1) 清CF,OF , 自己与自己自己与自己“ “或或” ”, ,操作数不变,操作数不变,CF=0CF=0,OF=0OF=0 例: OR AL ;(AL)不变,CF=0 (2) 使某操作数若干位保持不变,若干位与若干位保持不变,若干位与“ “0”0”或或 ;若干位置若干位置1 1,与,与“ “1”1”或或 。 (3) 将两个操作数信息组合。 若(AL)=03H 用OR指令组合使(AL)=33H=3 。 OR AL,30H ;(AL)=33H 第3章 Pentium的指令系统 Date 4 XOR dset , src ; (dset) (dset) (src) 操作:对指令的两个操

6、作数进行按位“异或” 运算。 二位不相同时为二位不相同时为1, 1, 相同时为相同时为0 0。 寄存器、存储器寄存器、存储器立即数、寄存器、存储器立即数、寄存器、存储器 3 3)XORXOR逻辑逻辑“ “异或异或” ”指令指令(Logical exclusive or) 用途: 对某些特定位求反,某些特定位与对某些特定位求反,某些特定位与“ “1” 1” 其余位保持不变,保持不变与其余位保持不变,保持不变与“ “0” 0” 。 应用举例: 例1: 将(AL)中的第1、3、5、7位求反 0、2、4、6位保持不变。 MOV AL, 0FH XOR AL,0AAH 第3章 Pentium的指令系统

7、Date 5 例:比较三条(AX)清“0”指令: XOR AX , AX ; 清AX , 清CF。 SUB AX, AX ; 清AX , 清CF。 MOV AX , 0 ; 清AX , 不影响标志位 。 XOR清“0”指令在多字节累加程序中十分有用。 第3章 Pentium的指令系统 Date 6 TEST dest , src ;(dest)(src) 操作:二个操作数相与,结果不存,只置条件码。 寄存器、存储器寄存器、存储器立即数、寄存器、存储器立即数、寄存器、存储器 4 4)TESTTEST测试指令测试指令 (Test or non_destructive logical and) 用途

8、: 常常用来检测一些条件是否满足用来检测一些条件是否满足,但又不希望改变原有的 操作数的情况下,常在此指令后边加一条条件转移指令。 例:判断A单元中数据的奇偶性, 设:(A)= 0AEH 程序: MOV AL,A;(AL)=0AEH TEST AL,01H JZ EVEN ; 结果=0为偶数转EVEN 奇数处理 EVEN: 偶数处理 检测(AL)的最低位是否为0,若为0转EVEN 第3章 Pentium的指令系统 Date 7 执行操作:对标志位无影响。 字节求反:(dest)0FFH-(dest) 字求反: (dest ) 0FFFFH-(dest) 5 5)NOTNOT逻辑逻辑“ “非非”

9、 ”指令指令(Logical not ) NOT dest ; 操作数只一个, 对操作数按位求反对操作数按位求反。 逻辑指令应用小结:逻辑指令应用小结: (1)AND指令用来对指令的指定位清“0”。 (2)OR指令常用来对某些位置1。 (3)XOR指令用在程序开头,使某个寄存器清“0”。 (4)NOT指令对某个数据取反,+1成补码。 (5)TEST指令用来检测指定位为1,还是0。 第3章 Pentium的指令系统 Date 8 逻辑运算指令 Date 9 1 1)非循环移位(算术)非循环移位(算术/ /逻辑移位指令)逻辑移位指令) SAL , SARSAL , SAR , ,SHL , SHR

10、 SHL , SHR 。 2 2)循环移位)循环移位 ROL,ROL, ROR , RCL, RCRROR , RCL, RCR。 3 3)双精度移位)双精度移位 SHLD, SHRD SHLD, SHRD 。 将操作数移动一 位或多位,分别 具有左移或右移 操作 将操作数从一端移出 的位返回到另一端形 成循环,分成不带进 位和带进位,分别具 有左移或右移操作 2. 移位指令 快速数据移位,三 个操作数,实现双 左移,双右移 第3章 Pentium的指令系统 Date 10 SHL dest , cnt ; 逻辑左移指令, B/W/DW SAL dest , cnt ; 算术左移指令, B/W

11、/DW 0CF dest 执行操作:相当于无符号数的2功能。 第3章 Pentium的指令系统 Date 11 cnt : 表示移位次数 cnt31,可写在指令中,也可用CL给出。 cnt31,用CL存放移位次数 ,不能是其他寄存器。 如: SAL AX,1 MOV CL,4 SAL AX,CL SAL EAX,CL 第3章 Pentium的指令系统 Date 12 SHR dest ,cnt ;逻辑右移指令, B/W dest CF0 执行操作:相当于无符号数的2功能。 第3章 Pentium的指令系统 Date 13 SAR dest ,cnt ;算术右移指令, B/W dest 执行操作

12、:相当带符号数2功能, SAR对负数向下舍入 IDIV指令对负数向上舍入。 第3章 Pentium的指令系统 Date 14 用SAR指令与用IDIV指令做除法的区别: 用SAR指令做除法(对负数向下舍入): MOV AX , 81H ; (AX) = -127 SAR AX , 1 ; (AX)= - 64 用IDIV指令做除法(IDIV指令对负数向上舍入) : MOV AX , 81H ;(AX)= -127 MOV CL , 2 IDIV CL ;(AL)= -63 ,(AH)= -1 10000001 11000000 第3章 Pentium的指令系统 Date 15 ROL dest

13、 ,cnt ;不含CF循环左移指令 CF dest 移动移动8 8次后操作数还原。次后操作数还原。 第3章 Pentium的指令系统 Date 16 ROR dest ,cnt ;不含CF循环右移指令 右移右移8 8次后操作数还原。次后操作数还原。 CF dest 第3章 Pentium的指令系统 Date 17 RCL dest , cnt ;含CF循环左移指令 左移左移9 9次后操作数还原次后操作数还原 CF dest 第3章 Pentium的指令系统 Date 18 RCR dest , cnt ;含CF循环右移指令 右移右移9 9次后操作数还原次后操作数还原 CF dest 第3章 P

14、entium的指令系统 Date 19 循环移位指令循环移位指令(Rotate)与移位指令与移位指令(Shift)不同点不同点: 循环移位指令移位后,操作数中原来各数位的信息不 会丢失,这是移动了位置,必要时可以恢复。 循环移位指令可以对操作数进行测试。 例:测试(AL)5 =? 0 MOV CL , 3 ROL AL , CLROL AL , CL JNC ZERO ZERO: 10?01000 AL Date 20 利用带进位循环移位指令将两个寄存器或存储器利用带进位循环移位指令将两个寄存器或存储器 单元组合起来一起移位单元组合起来一起移位。 例: 将DX、AX组合起来构成32位寄存器向左

15、移一位。 如下图所示: 程序: SHL AX , 1 RCL DX , 1 32位寄存器向左移一位 DXAX CF 0 Date 21 思思 考考 : 把AL最低位送BL最低位,保持AL不变 AH.AL分别存放着非压缩BCD码的两位, 将它们合并成为一个压缩BCD码存AL 101000110111110001111101 第3章 Pentium的指令系统 Date 22 位传送 ;把AL最低位送BL最低位,保持AL不变 ROR BL,1 ROR AL,1 RCL BL,1 ROL AL,1 AL、BL CF BLCF AL CF AL之D0 第3章 Pentium的指令系统 Date 23 BCD码合并 ;AH.AL分别存放着非压缩BCD码的两位 ;将它们合并成为一个压缩BCD码存AL AND AX,0F0FH;保证高4位为0 MOV CL,4 ROL AH,CL;也可以用SHL AH,CL ADD AL,AH;也可以用OR AL,AH 第3章 Pentium的指令系统 Date 24 双精度移位双精度移位 SHLD SHLD destdest

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

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

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