资源描述:
《逻辑运算移位串操作指令》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、3.3.3位操作类指令位操作类指令以二进制位为基本单位进行数据的操作;这是一类常用的指令,都应该特别掌握注意这些指令对标志位的影响1、逻辑运算指令ANDORXORNOTTEST2、移位指令SHLSHRSALSAR3、循环移位指令ROLRORRCLRCR1逻辑运算指令(ANDORXORNOTTEST)●运算规则:按位操作,无进/借位●对标志位的影响(除NOT指令外):CFOFSFZFPFAF00***无定义根据运算结果设置2(1)逻辑”与”AND对两个操作数进行按位逻辑“与”操作。格式:ANDdest,src
2、用途:保留操作数的某几位,清零其他位。例1:保留AL中低4位,高4位清0。ANDAL,0FH例2:AL中有字符’a’~’z’,将其转换成大写。ANDAL,01011111B3对两个操作数进行按位逻辑”或”操作。格式:ORdest,src用途:对操作数的某几位置1;对两操作数进行组合。例3:把AL中的非压缩BCD码变成相应十进制数的ASCII码。ORAL,30H(2)逻辑”或”OR4例4:把AH和AL中的非压缩BCD码组合成压缩的BCD码,放到AL中。MOVCL,4SHLAH,CLORAL,AH例5:把AL的
3、第5位置为1ORAL,00100000B5对操作数进行按位逻辑”非”操作。格式:NOTmem/regNOT不影响标志位。例:NOTCXNOTBYTEPTR[DI](3)逻辑“非”(取反)NOT6对两个操作数按位进行”异或”操作,结果送到目的操作数。格式:XORdest,src用途:对reg清零(自身异或)把reg/mem的某几位变反(与’1’异或)例6:把AX寄存器清零。例7:把DH的bit4,3变反①MOVAX,0XORDH,18H②XORAX,AX③ANDAX,0④SUBAX,AX(4)逻辑”异或”XO
4、R7例8:逻辑运算moval,45h;逻辑与al=01handal,31h;CF=OF=0,SF=0、ZF=0、PF=0moval,45h;逻辑或al=75horal,31h;CF=OF=0,SF=0、ZF=0、PF=0moval,45h;逻辑异或al=74hxoral,31h;CF=OF=0,SF=0、ZF=0、PF=1moval,45h;逻辑非al=0bahnotal;标志不变8例9:逻辑指令应用;AND指令可用于复位某些位(同0相与),不影响其他位:将BL中D3和D0位清0,其他位不变andbl,11
5、110110B;OR指令可用于置位某些位(同1相或),不影响其他位:将BL中D3和D0位置1,其他位不变orbl,00001001B;XOR指令可用于求反某些位(同1相异或),不影响其他位:将BL中D3和D0位求反,其他不变xorbl,00001001B9测试指令TEST对两个操作数执行逻辑与运算,结果不回送到目的操作数AND指令设置CF=OF=0,根据结果设置SF、ZF和PF状态,而对AF未定义TESTreg,imm/reg/mem;reg∧imm/reg/memTESTmem,imm/reg;mem∧i
6、mm/reg只有相“与”的两位都是1,结果才是1;否则,“与”的结果为0TEST10例10:测试为0或1testal,01h;测试AL的最低位D0jnzthere;标志ZF=0,即D0=1;则程序转移到there...;否则ZF=1,即D0=0,顺序执行there:...TEST指令通常用于检测一些条件是否满足,但又不希望改变原操作数的情况TEST112.移位指令(1)非循环移位指令算术左移指令SAL(ShiftArithmeticLeft)算术右移指令SAR(ShiftArithmeticRight)逻辑
7、左移指令SHL(ShiftLeft)逻辑右移指令SHR(ShiftRight)这4条指令的格式相同,以SAL为例:SALmem/reg,CL;移位位数大于1时1;移位位数等于1时12移位指令执行的操作如下图所示:最低位最高位CF0(a)算术/逻辑左移SAL/SHL最低位最高位CF(b)算术右移SAR最低位最高位CF(c)逻辑右移SHR0非循环移位指令功能示意图13算术移位——把操作数看做有符号数;逻辑移位——把操作数看做无符号数。移位位数放在CL寄存器中,如果只移1位,也可以直接写在指令中。例如:MOVCL
8、,4SHRAL,CL;AL中的内容右移4位影响CF,PF,SF,ZF,OF标志。结果未溢出时:左移1位≡操作数*2右移1位≡操作数/214例11:把AL中的数x乘10因为10=8+2=23+21,所以可用移位实现乘10操作。程序如下:MOVAH,00HSALAX,1;2xMOVBX,AXSALAX,1;4xSALAX,1;8xADDAX,BX;8x+2x=10x15移位指令对标志的影响按照移入的位设置进位标志CF