逻辑运算和移位指令.

上传人:我** 文档编号:115848567 上传时间:2019-11-15 格式:PPT 页数:61 大小:399KB
返回 下载 相关 举报
逻辑运算和移位指令._第1页
第1页 / 共61页
逻辑运算和移位指令._第2页
第2页 / 共61页
逻辑运算和移位指令._第3页
第3页 / 共61页
逻辑运算和移位指令._第4页
第4页 / 共61页
逻辑运算和移位指令._第5页
第5页 / 共61页
点击查看更多>>
资源描述

《逻辑运算和移位指令.》由会员分享,可在线阅读,更多相关《逻辑运算和移位指令.(61页珍藏版)》请在金锄头文库上搜索。

1、三、逻辑运算和移位指令 (一)逻辑运算指令一)逻辑运算指令 1、AND(Logical and ) 逻辑“与”指令 2、 TEST(Test or non-destructive logical and ) 测试指令 3、OR(Lgical inclusive or ) 逻辑“或”指令 4、XOR(Logical exclusive or) 逻辑“异或”指令 5、NOT(Logical not ) 逻辑“非”指令 特点:特点: 8088可以对8位,或16位操作数执行逻辑操作。 逻辑运算是按位操作,操作数应该是位串而不是数。逻辑运算是按位操作,操作数应该是位串而不是数。 影响条件码: (NOT指

2、令除外,其他指令同) 根据结果设置SF、ZF和PF,CF=OF=0 1 1 1、ANDAND(Logical and )Logical and )逻辑逻辑“ “与与” ”指令指令 格式:AND dest, src ;B/W,(dest)(dest (src) srcsrc: : 立即数、寄存器、存储器。立即数、寄存器、存储器。 destdest: : 寄存器、存储器。寄存器、存储器。 执行操作:进行“与”运算, 两位中有一位为0(或二位都为0),则结 果 为0,否则为1。 操作类型举例: AND AL, 0FH ;寄存器 立即数 AND CX, DI ; 寄存器 寄存器 AND SI, MEM

3、_NAME ; 寄存器 存储器 AND ALPHA DI, AX ; 存储器 寄存器 AND word ptr BXSI, 0FFFEH ; 存储器 立即数 2 注意: “ “与与” ”指令中操作数不能同时为存储器;指令中操作数不能同时为存储器; 影响条件码: CF0F=0, A未定义 ,根据结果设置SF、ZF和 PF “与”指令的用途: (1)清清CF CF 位位, , 自己自己“ “与与” ”自己自己. . 操作数不变操作数不变 ,CF=0CF=0 例:AND AL ,AL ; 结果:操作数不变操作数不变 ,CF=0CF=0。 (2) 使操作数中若干位保持不变,若干位与操作数中若干位保持不

4、变,若干位与“ “1”1”相与相与; 而若干位置为若干位置为“ “0 “0 “的场合,若干位与的场合,若干位与“ “0” 0” 相与相与。 例: 若(AL)=43 3H AND AL, 0F FH ; (AL)=03H, (AL)(AL)03 03不变 不变; ;(AL)(AL)47 47=00H, =00H,屏蔽高屏蔽高4 4位位。 3 “与”指令应用举例: 例1:将英文小写字母ASCII转换成大写。 小写英文字母ASCII为:az 61H7AH 大写英文字母ASCII为:AZ 41H5AH 程序:MOV AL, z AND AL,0DFDFH;(AL)=5AH 例2:判断键盘按下的字符是不

5、是Y? MOV AH, 7MOV AH, 7 INT INT 21H 21H ;键入无回显,(AL)=输入键的字符码 AND AL, 0DFH CMP AL, Y JE YES YES: 0110 00010100 0001 1101 1111 61H41H FDH 4 2 2、 TESTTEST(Test or non_destructive logical and )测试指令测试指令 格式: TEST dest , src;(dest)(src) srcsrc: : 立即数、寄存器、存储器。立即数、寄存器、存储器。 destdest: : 寄存器、存储器。寄存器、存储器。 执行操作: 二个

6、操作数相与的结果不存,置条件码。 操作类型举例: TEST BH, 7 ; 寄存器 立即数 TEST SI , BP ;寄存器 寄存器 TEST DI ,TABLEBX ; 寄存器 存储器 TEST SI,CH ;存储器 寄存器 TEST word ptr BXDI, 6ACEH ;存储器 立即数 5 用途: 常常用来检测一些条件是否满足用来检测一些条件是否满足,但又不希望改变原有 的操作数的情况下,常在此指令后边加一条 条件转移指令。 例:判断A单元中数据的奇偶性 设: (A )= 0AEH 程序:MOV AL,A;(AL)=0AEH TEST AL,01H JZ EVEN ; 结果=0为偶

7、数转EVEN 奇数处理 EVEN:偶数处理 检测(AL)的最低位是否为0,若为0转EVEN 6 3 3、OROR(LgicalLgical inclusive or ) inclusive or )逻辑逻辑“ “或或” ”指令指令 格式:OR dset, src;(dset)(dset) (src) destdest: : 寄存器、存储器。寄存器、存储器。 srcsrc: : 立即数、寄存器、存储器。立即数、寄存器、存储器。 执行操作: 进行按位“或”运算 两位操作数中任一位为1(或都为1), 则该位(结果)=1, 否则为0。 操作类型举例: OR BL,0F6H; 寄存器 立即数 OR AH

8、, BL;寄存器 寄存器 OR CL ,BETABXDI; 寄存器 存储器 OR GAMMASI ,DX;存储器 寄存器 OR BYTE PTR MEM_BYTE , 80H;存储器 立即数 7 注意: “或或” ”指令中操作数不能同时为存储器;指令中操作数不能同时为存储器; 影响条件码: CF0F=0, A未定义 , SF ZF PF 用途: (1)清CF , 自己与自己自己与自己“ “或或” ”, ,操作数不变,操作数不变,CF=0CF=0 例: OR AL ;(AL)不变,CF=0 (2)使某个操作数若干位保持不变,若干位与若干位保持不变,若干位与“ “0”0”或或 ; 而若干位置而若干

9、位置1 1。若干位与。若干位与“ “1”1”或或 。 (3) 将两个操作数信息组合。 若(AL)=03H 用OR指令组合使(AL)=33H=3 。 OR AL,30H ;(AL)=33H 8 4 4、XORXOR(Logical exclusive or)Logical exclusive or)逻辑逻辑“ “异或异或” ”指令指令 格式:XOR dset , src ;B/W(dset) (dset) (src) destdest: : 寄存器、存储器。寄存器、存储器。 srcsrc: : 立即数、寄存器、存储器。立即数、寄存器、存储器。 执行的操作:对指令的两个操作数进行按位“异或”运算。

10、 二位不相同时为二位不相同时为1, 1, 相同时为相同时为0 0。 操作类型举例: XOR DI, 23F6HH ; 寄存器 立即数 XOR SI , DX ;寄存器 寄存器 XOR CL , BUFFER ; 寄存器 存储器 XOR MEMBX,AX ;存储器 寄存器 XOR byte ptrTABLEBPSI, 3DH ; 存储器 立即数 9 注意: “ “异或异或” ”指令中操作数不能同时为存储器;指令中操作数不能同时为存储器; 用途:对某些特定位求反,某些特定位与对某些特定位求反,某些特定位与“ “1” 1” 其余位保持不变,保持不变与其余位保持不变,保持不变与“ “0” 0” 。 应

11、用举例: 例1: 将(AL)中的第1、3、5、7位求反 0、2、4、6位保持不变。 MOV AL, 0FH XOR AL,0AAH 10 例2: 比较三条(AX)清“0”指令: XOR AX , AX ; 清AX , 清CF,2个字节,3个T。 SUB AX, AX ;清AX , 清CF,2个字节,3个T。 MOV AX , 0 ;清AX ,不影响标志位, 3个字节,4个T 。 XOR清“0”指令在多字节累加程序中十分有用。 例3: 将存放在TABLE开始的100个字节的16进制数进行累加 , 和存于SUM+1、SUM单元。 11 程序: 100个字节的16进制数 进行累加。 LEA BX ,

12、 TABLE MOV CL,100 XOR AX ,AX LOOPER:ADD AL,BX JNC GOON INC AH GOON: INC BX DEC CL JNZ LOOPER MOV SUM , AX HLT 流 程 图 12 5 5、NOTNOT(Logical not )Logical not )逻辑逻辑“ “非非” ”指令指令 格式: NOT dest ;B/W 指令操作数只有一个,指令对操作数按位求反对操作数按位求反。 执行操作: 字节求反:(dest)0FFH-(dest) 字求反: (dest 0FFFFH-(dest) 源操作数:寄存器、存储器。不能是立即数。源操作数:

13、寄存器、存储器。不能是立即数。 影响标志位:对标志位无影响。 操作类型举例: NOT AH; 8位寄存器求反 NOT CX;16位寄存器求反 NOT BYTE PTR BP;8位存储器求反 NOT WORD PTR COUNT ;16位存储器求反 13 综合举例: 1使某些位置“0”。 IN AL,61H;(AL)= B 设备控制寄存器 想使此位为0 执行指令: AND ALAND AL,0FDH0FDH 即可。 2. 使某些位置“1”。 IN AL,61H;(AL)= 执行指令: OR ALOR AL,0202 想使此位为“1” 3. 使某些位求反: IN AL,61H ;(AL)= 0 X

14、OR ALXOR AL,02H02H 0 0 0 0 0 0 1 0 1 4. 测试某些位(测奇偶性):测试 “奇”“偶”性。 见TEST指令的用途例子。14 逻辑指令应用小结:逻辑指令应用小结: (1)AND指令用来对指令的指定位清“0”。 (2)OR指令常用来对某些位置1。 (3)XOR指令用在程序开头,使某个寄存器清“0”。 (4)NOT指令对某个数据取反,+1成补码。 (5)TEST指令用来检测指定位为1,还是0。 15 (二)移位指令(二)移位指令 (8088(8088有有8 8条移位指令条移位指令) : ) : 1 1、 算逻移位指令算逻移位指令( 4条 ): SHL , SHR,SHL , SHR, SAL , SAR SAL , SAR 。 (1)、 SHL/SAL(Shift logical left/shift arithmetic left) 逻辑左移/算术左移指令 (2)、SHR (Shift logical right ) 逻辑右移指令 (3)、SAR (Shift arithmetic right )算术右移指令 2 2、循环移位循环移位( 4条): ROL, ROR , RCL, RCRROL, ROR , RCL, RCR。 (1)、ROL (Rotate left ) 不含CF循环左移指令 (2)、ROR (Rotate right ) 不含CF

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

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

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