《微型计算机技术与应用.ppt》由会员分享,可在线阅读,更多相关《微型计算机技术与应用.ppt(26页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
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)逻辑逻辑“非非”指令指令 特点:特点:特点:特点:对其操作数按位执行逻辑操作对其操作数按位执行逻辑操作,操作数可以是双字、字或字节。操作数可以是双字、字或字节。影响条件
2、码:影响条件码:(NOT指令除外)指令除外)CFCF0F=00F=0,A未定义未定义,SF ZF PF (SF ZF PF (运算结果运算结果运算结果运算结果)源操作数可以为立即数、寄存器、存储器源操作数可以为立即数、寄存器、存储器 目的操作数可以为寄存器、存储器,不能为立即数目的操作数可以为寄存器、存储器,不能为立即数 源操作数不是立即数时源操作数不是立即数时,两操作数必有一个寄存器两操作数必有一个寄存器第第3章章 Pentium的指令系统的指令系统2022/10/271 AND dest,src ;(;(dest)(dest src)操作:操作:进行进行“与与”运算,两位中有一位为运算,两
3、位中有一位为0(或二位都为(或二位都为0),则结果为),则结果为0,否则为,否则为1。寄存器、存储器寄存器、存储器寄存器、存储器寄存器、存储器立即数、寄存器、存储器立即数、寄存器、存储器立即数、寄存器、存储器立即数、寄存器、存储器1 1)ANDAND逻辑逻辑逻辑逻辑“与与与与”指令指令指令指令(Logical and )“与与”指令的用途指令的用途:(1)清清清清CFCF,OFOF ,自己自己“与与”自己自己.操作数不变操作数不变,CF=0,OF=0 例:例:AND AL ;结果:操作数不变;结果:操作数不变,CF=0,OF=0。(2)使操作数中若干位保持不变,若干位与使操作数中若干位保持不变
4、,若干位与“1”相与;相与;而若干位置为而若干位置为“0“的场合,若干位与的场合,若干位与“0”相与。相与。例:例:若(若(AL)=43 3H AND AL,0F FH ;(AL)=03H,(AL)(AL)0303不变不变不变不变;;(AL)(AL)4747=00H,=00H,屏蔽高屏蔽高屏蔽高屏蔽高4 4位位位位。第第3章章 Pentium的指令系统的指令系统2022/10/272 “与与”指令应用举例:指令应用举例:例例1:将英文小写字母:将英文小写字母ASCII转换成大写。转换成大写。小写英文字母小写英文字母ASCII为:为:az 61H7AH 大写英文字母大写英文字母ASCII为:为:
5、AZ 41H5AH 程序:程序:MOV AL,zAND AL,0DFDFH ;(AL)=5AH1101 1111DFH0110 00010100 000161H41H0111 10100101 10107AH5AH第第3章章 Pentium的指令系统的指令系统2022/10/273 OR dset,src ;(dset)(dset)(src)操作:操作:进行按位进行按位“或或”运算运算 两位操作数中任一位为两位操作数中任一位为1(或都为(或都为1),),则该位(结果)则该位(结果)=1,否则为,否则为0。寄存器、存储器寄存器、存储器寄存器、存储器寄存器、存储器立即数、寄存器、存储器立即数、寄存
6、器、存储器立即数、寄存器、存储器立即数、寄存器、存储器 2 2)OROR逻辑逻辑逻辑逻辑“或或或或”指令指令指令指令(Lgical inclusive or)或指令应用用途:或指令应用用途:(1)清清CF,OF,自己与自己自己与自己自己与自己自己与自己“或或或或”,操作数不变,操作数不变,操作数不变,操作数不变,CF=0CF=0,OF=0OF=0 例:例:OR AL ;(;(AL)不变,)不变,CF=0(2)使某操作数使某操作数若干位保持不变,若干位与若干位保持不变,若干位与若干位保持不变,若干位与若干位保持不变,若干位与“0”0”或或或或;若干位置若干位置若干位置若干位置1 1,与,与,与,
7、与“1”1”或或或或 。(3)将两个操作数信息组合。将两个操作数信息组合。若若(AL)=03H 用用OR指令组合使指令组合使(AL)=33H=3。OR AL,30H ;(;(AL)=33H 第第3章章 Pentium的指令系统的指令系统2022/10/274 XOR dset,src ;(dset)(dset)(src)操作:操作:对指令的两个操作数进行按位对指令的两个操作数进行按位“异或异或”运算。运算。二位不相同时为二位不相同时为二位不相同时为二位不相同时为1,1,相同时为相同时为相同时为相同时为0 0。寄存器、存储器寄存器、存储器寄存器、存储器寄存器、存储器立即数、寄存器、存储器立即数、
8、寄存器、存储器立即数、寄存器、存储器立即数、寄存器、存储器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第第
9、3章章 Pentium的指令系统的指令系统2022/10/275例:比较三条(例:比较三条(AX)清清“0”指令:指令:XOR AX,AX ;清清AX,清清CF。SUB AX,AX ;清清AX,清清CF。MOV AX,0 ;清清AX,不影响标志位不影响标志位。XOR清清“0”指令在多字节累加程序中十分有用。指令在多字节累加程序中十分有用。第第3章章 Pentium的指令系统的指令系统2022/10/276 TEST dest ,src ;(;(dest)(src)操作:操作:二个操作数相与,结果不存,只置条件码。二个操作数相与,结果不存,只置条件码。寄存器、存储器寄存器、存储器寄存器、存储器寄
10、存器、存储器立即数、寄存器、存储器立即数、寄存器、存储器立即数、寄存器、存储器立即数、寄存器、存储器4 4)TESTTEST测试指令测试指令测试指令测试指令 (Test or non_destructive logical and)用途:用途:常常常常用来检测一些条件是否满足用来检测一些条件是否满足用来检测一些条件是否满足用来检测一些条件是否满足,但又不希望改变原有的,但又不希望改变原有的操作数的情况下,常在此指令后边加一条条件转移指令。操作数的情况下,常在此指令后边加一条条件转移指令。例:例:判断判断A单元中数据的奇偶性单元中数据的奇偶性,设:设:(A)=0AEH 程序:程序:MOV AL,
11、A;(AL)=0AEH TEST AL,01H JZ EVEN ;结果结果=0为偶数转为偶数转EVEN 奇数处理奇数处理 EVEN:偶数处理偶数处理 检测(检测(AL)的最低位是否为)的最低位是否为0,若为,若为0转转EVEN第第3章章 Pentium的指令系统的指令系统2022/10/277执行操作:执行操作:对标志位无影响。对标志位无影响。字节求反:(字节求反:(dest)0FFH-(dest)字求反:字求反:(dest)0FFFFH-(dest)5 5)NOTNOT逻辑逻辑逻辑逻辑“非非非非”指令指令指令指令(Logical not)NOT dest ;操作数只一个操作数只一个,对操作数
12、按位求反对操作数按位求反对操作数按位求反对操作数按位求反。逻辑指令应用小结:逻辑指令应用小结:逻辑指令应用小结:逻辑指令应用小结:(1)AND指令用来对指令的指定位清指令用来对指令的指定位清“0”。(2)OR指令常用来对某些位置指令常用来对某些位置1。(3)XOR指令用在程序开头,使某个寄存器清指令用在程序开头,使某个寄存器清“0”。(4)NOT指令对某个数据取反,指令对某个数据取反,+1成补码。成补码。(5)TEST指令用来检测指定位为指令用来检测指定位为1,还是,还是0。第第3章章 Pentium的指令系统的指令系统2022/10/278逻辑运算指令逻辑运算指令2022/10/279 1
13、1)非循环移位(算术)非循环移位(算术)非循环移位(算术)非循环移位(算术/逻辑移位指令)逻辑移位指令)逻辑移位指令)逻辑移位指令)SAL,SARSAL,SAR,SHL,SHR SHL,SHR。2 2)循环移位)循环移位)循环移位)循环移位 ROL,ROL,ROR,RCL,RCRROR,RCL,RCR。3 3)双精度移位)双精度移位)双精度移位)双精度移位 SHLD,SHRD SHLD,SHRD。将将操操作作数数移移动动一一位位或或多多位位,分分别别具具有有左左移移或或右右移移操作操作将操作数从一端移出将操作数从一端移出的位返回到另一端形的位返回到另一端形成循环,分成不带进成循环,分成不带进位
14、和带进位,分别具位和带进位,分别具有左移或右移操作有左移或右移操作2.移位指令移位指令快速数据移位,三快速数据移位,三个操作数,实现双个操作数,实现双左移,双右移左移,双右移第第3章章 Pentium的指令系统的指令系统2022/10/2710 SHL dest,cnt ;逻辑左移指令逻辑左移指令,B/W/DW SAL dest,cnt ;算术左移指令算术左移指令,B/W/DW 0CFdest 执行操作:执行操作:相当于无符号数的相当于无符号数的2功能。功能。第第3章章 Pentium的指令系统的指令系统2022/10/2711 cnt:表示移位次数表示移位次数 cnt31,可写在指令中,也可
15、用,可写在指令中,也可用CL给出。给出。cnt31,用用CL存放移位次数存放移位次数,不能是其他寄存器。不能是其他寄存器。如:如:SAL AX,1 MOV CL,4 SAL AX,CL SAL EAX,CL第第3章章 Pentium的指令系统的指令系统2022/10/2712SHR dest,cnt ;逻辑右移指令;逻辑右移指令,B/WdestCF0执行操作:执行操作:相当于无符号数的相当于无符号数的2功能。功能。第第3章章 Pentium的指令系统的指令系统2022/10/2713SAR dest,cnt ;算术右移指令;算术右移指令,B/Wdest执行操作:执行操作:相当带符号数相当带符号
16、数2功能功能,SAR对负数向下舍入对负数向下舍入 IDIV指令对负数向上舍入。指令对负数向上舍入。第第3章章 Pentium的指令系统的指令系统2022/10/2714用用SAR指令与用指令与用IDIV指令做除法的区别:指令做除法的区别:用用SAR指令做除法指令做除法(对负数向下舍入)(对负数向下舍入):MOV AX,81H ;(AX)=-127SAR AX ,1 ;(AX)=-64用用IDIV指令做除法指令做除法(IDIV指令对负数向上舍入)指令对负数向上舍入):MOV AX,81H ;(AX)=-127MOV CL,2IDIV CL ;(AL)=-63,(AH)=-110000001110
17、00000第第3章章 Pentium的指令系统的指令系统2022/10/2715ROL dest,cnt ;不含;不含CF循环左移指令循环左移指令CFdest移动移动移动移动8 8次后操作数还原。次后操作数还原。次后操作数还原。次后操作数还原。第第3章章 Pentium的指令系统的指令系统2022/10/2716ROR dest,cnt ;不含;不含CF循环右移指令循环右移指令 右移右移右移右移8 8次后操作数还原。次后操作数还原。次后操作数还原。次后操作数还原。CFdest第第3章章 Pentium的指令系统的指令系统2022/10/2717RCL dest,cnt ;含;含CF循环左移指令
18、循环左移指令 左移左移左移左移9 9次后操作数还原次后操作数还原次后操作数还原次后操作数还原CFdest第第3章章 Pentium的指令系统的指令系统2022/10/2718RCR dest,cnt ;含;含CF循环右移指令循环右移指令 右移右移右移右移9 9次后操作数还原次后操作数还原次后操作数还原次后操作数还原CFdest第第3章章 Pentium的指令系统的指令系统2022/10/2719循环移位指令循环移位指令循环移位指令循环移位指令(Rotate)与移位指令与移位指令与移位指令与移位指令(Shift)不同点不同点不同点不同点:循环移位指令移位后,操作数中原来各数位的信息不循环移位指令
19、移位后,操作数中原来各数位的信息不会丢失,这是移动了位置,必要时可以恢复。会丢失,这是移动了位置,必要时可以恢复。循环移位指令可以对操作数进行测试。循环移位指令可以对操作数进行测试。例:测试例:测试(AL)5=?0 MOV CL,3 ROL AL,CLROL AL,CL JNC ZEROZERO:10?01000AL2022/10/2720 利用带进位循环移位指令将两个寄存器或存储器利用带进位循环移位指令将两个寄存器或存储器利用带进位循环移位指令将两个寄存器或存储器利用带进位循环移位指令将两个寄存器或存储器 单元组合起来一起移位单元组合起来一起移位单元组合起来一起移位单元组合起来一起移位。例:
20、例:将将DX、AX组合起来构成组合起来构成32位寄存器向左移一位。位寄存器向左移一位。如下图所示:如下图所示:程序:程序:SHL AX,1 RCL DX,132位寄存器向左移一位位寄存器向左移一位DXAXCF02022/10/2721 思思 考:考:把把AL最低位送最低位送BL最低位,保持最低位,保持AL不变不变 分别存放着非压缩分别存放着非压缩BCD码的两位,将它们码的两位,将它们合并成为一个压缩合并成为一个压缩BCD码存码存AL101000110111110001111101第第3章章 Pentium的指令系统的指令系统2022/10/2722位传送;把;把AL最低位送最低位送BL最低位,
21、保持最低位,保持AL不变不变ROR BL,1ROR AL,1RCL BL,1ROL AL,1AL、BLCFBLCFALCFAL之之D0第第3章章 Pentium的指令系统的指令系统2022/10/2723BCD码合并;分别存放着非压缩;分别存放着非压缩BCD码的两位码的两位;将它们合并成为一个压缩;将它们合并成为一个压缩BCD码存码存ALAND AX,0F0FH;保证高;保证高4位为位为0MOV CL,4ROL AH,CL;也可以用;也可以用SHL AH,CLADD AL,AH;也可以用;也可以用OR AL,AH第第3章章 Pentium的指令系统的指令系统2022/10/2724双精度移位双精度移位双精度移位双精度移位 SHLD dest,src,cntSHRD dest,src,cnt寄存器、存储器寄存器、存储器寄存器、存储器寄存器、存储器寄存器寄存器寄存器寄存器立即数,立即数,立即数,立即数,CLCLMOV AX,2A80HMOV BX,9A78HSHLD AX,BX,8;AX809AH,BX9A78H,CF0SHRD BX,AX,1;AX809AH,BX4D3CH,CF0,OF1第第3章章 Pentium的指令系统的指令系统2022/10/2725博学 审问 慎思 明辨 笃行