指令系统4逻辑运算和移位指令、串操作指令.ppt
《指令系统4逻辑运算和移位指令、串操作指令.ppt》由会员分享,可在线阅读,更多相关《指令系统4逻辑运算和移位指令、串操作指令.ppt(41页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、3.3.3 3.3.3 逻辑运算和移位指令逻辑运算和移位指令1.1.逻辑运算指令逻辑运算指令(与与/或或/异或异或/非非)2.2.运算规则:按位操作,无进运算规则:按位操作,无进/借位借位 3.3.对标志位的影响对标志位的影响(除除NOTNOT指令外指令外):CF OF SF ZF PF AF 0 0 *无定义无定义 根据运算结果设置根据运算结果设置 注意注意:非指令非指令NOT对标志无影响对标志无影响1 1表表 4 3 逻辑运算类指令逻辑运算类指令2 2(1)逻辑逻辑”与与”AND对两个操作数进行按位逻辑对两个操作数进行按位逻辑“与与”操作。操作。格式:格式:AND dest,src用途:用
2、途:保留操作数的某几位,清零其他位保留操作数的某几位,清零其他位。例例1:保留保留AL中低中低4位,高位,高4位清位清0。AND AL,0FH例例2:AL中有字符中有字符az,将其转换成大将其转换成大写。写。AND AL,01011111B3 3例例3:测试测试AL的的bit7,bit5,bit2是否都是是否都是1。AND AL,10100100BCMP AL,10100100B JZ YES ;if match,go to YES ;if not match YES:;goes here if all 1 4 4对两个操作数进行按位逻辑对两个操作数进行按位逻辑”或或”操作。操作。格式:格式:
3、OR dest,src用途:用途:对操作数的某几位置对操作数的某几位置1;对两操作数进行组合对两操作数进行组合。例例1 1:把AL中的非压缩BCD码变成相应十进制 数的ASCII码。OR AL,30H(2)逻辑逻辑”或或”OR5 5例例2:把AH和AL中的非压缩BCD码组合成压 缩的BCD码,放到AL中。MOV CL,4 SHL AH,CL OR AL,AH例例3:把把AL的第5位置为1 OR AL,00100000B6 6对操作数进行按位逻辑对操作数进行按位逻辑”非非”操作。操作。格式格式:NOT mem/reg例:NOT CX NOT BYTE PTRDI(3)逻辑逻辑“非非”(取反取反)
4、NOT7 7对两个操作数按位进行对两个操作数按位进行”异或异或”操作。操作。格式:格式:XOR dest,srcXOR dest,src用途:用途:对对对对regregregreg清零清零清零清零(自身异或自身异或自身异或自身异或)把把把把reg/memreg/memreg/memreg/mem的某几位变反的某几位变反的某几位变反的某几位变反(与与与与1111异或异或异或异或)例例1 1:把把AXAX寄存器清零。寄存器清零。例例2 2:把把DHDH的的bit4,3bit4,3变反变反 MOV AX,0 XOR DH,18H MOV AX,0 XOR DH,18H XOR AX,AX XOR A
5、X,AX AND AX,0 AND AX,0 SUB AX,AX SUB AX,AX (4)逻辑逻辑”异或异或”XOR 8 8 操作操作与与ANDAND指令类似指令类似,但不将但不将”与与”的结果送回的结果送回,只影只影响标志位。响标志位。ANDAND与与TESTTEST间的区别类似于间的区别类似于SUBSUB与与CMPCMP间的区别间的区别作用作用:TEST TEST指令常用于位测试指令常用于位测试,与条件转移指令一起用。与条件转移指令一起用。例:例:测试测试ALAL的内容是否为负数。的内容是否为负数。TEST AL,80H TEST AL,80H ;检查检查ALAL中中D D7 7=1=1
6、?JNZ MINUS JNZ MINUS ;是是1 1(负数负数),转,转MINUSMINUS ;否则否则(正数正数)不转移不转移MINUS:MINUS:(5)测试指令测试指令TEST9 9表表4-4 移位操作类指令移位操作类指令2 2.移位指令移位指令1010移位指令移位指令移位指令移位指令功能示意功能示意算术左移指令算术左移指令算术左移指令算术左移指令算术右移指令算术右移指令算术右移指令算术右移指令逻辑左移指令逻辑左移指令逻辑左移指令逻辑左移指令逻辑右移指令逻辑右移指令逻辑右移指令逻辑右移指令小循环右移指令小循环右移指令小循环右移指令小循环右移指令小循环左移指令小循环左移指令小循环左移指令
7、小循环左移指令大循环左移指令大循环左移指令大循环左移指令大循环左移指令大循环右移指令大循环右移指令大循环右移指令大循环右移指令CF=CF=11112 2.移位指令移位指令(1 1)非循环移位指令非循环移位指令 算术左移指令 SALSAL(Shift Arithmetic LeftShift Arithmetic LeftShift Arithmetic LeftShift Arithmetic Left)算术右移指令 SARSAR(Shift Arithmetic RightShift Arithmetic RightShift Arithmetic RightShift Arithmetic
8、 Right)逻辑左移指令 SHLSHL(Shift LeftShift LeftShift LeftShift Left)逻辑右移指令 SHRSHR(Shift RightShift RightShift RightShift Right)这4条指令的格式相同,以SAL为例:SAL mem/reg,CL ;移位位数1时1 ;移位位数=1时1212移位指令移位指令执行的操作如下图所示:执行的操作如下图所示:最低位最高位CF0(a)算术/逻辑左移 SAL/SHL最低位最高位CF(b)算术右移 SAR最低位最高位CF(c)逻辑右移 SHR0非循环非循环移位指令移位指令功能示意图功能示意图1313算
9、术移位把操作数看做有符号数;逻辑移位把操作数看做无符号数。移位位数:一般放在CL寄存器中,但如果只移1位,也可以直接写在指令中。例如:MOV CL,4 SHR AL,CL ;AL中的内容右移4位对Flags影响:影响CF,PF,SF,ZF,OF标志。移位效果:结果未溢出时:左移1位操作数 2 右移1位操作数 21414例:把AL中的数 x 10因为10=8+2=23+21,所以可用移位实现乘10操作。程序如下:SAL AL,1 ;2xMOV AH,AL SAL AL,1 ;4x SAL AL,1 ;8x ADD AL,AH ;8x+2x=10 x1515 不含CF的(小)循环左移指令 ROLR
10、OL 不含CF的(小)循环右移指令 RORROR 含CF的(大)循环左移指令 RCLRCL 含CF的(大)循环右移指令 RCRRCR格式同非循环移位指令。移位位数一般放在CL寄存器中 但如果只移1位,也可直接写在指令中。对Flags的影响:只影响标志位CF和OF。(2)(2)循环移位指令循环移位指令1616这这4 4条指令的功能如下图示:条指令的功能如下图示:最低位最高位CF(a)ROL最低位最高位CF(c)RCL最低位最高位CF(b)ROR最低位最高位CF(d)RCR循环移位指令功能示意图循环移位指令功能示意图1717用移位操作代替乘除法可提高运算速度例:前例中计算 x10。(1)采用乘法指
11、令:MOVMOV BL,10BL,10 MUL MUL BLBL 共需7077个T周期。(2)采用移位和加法指令:SALSAL AL,1 AL,1 ;2T 2T MOV MOV AH,AL AH,AL ;2T 2T SAL SAL AL,1 AL,1 ;2T 2T SAL SAL AL,1 AL,1 ;2T 2T ADD ADD AL,AH AL,AH ;3T 3T 只需11个T周期,仅相当于乘法的1/7。1818循环移位举例:例1:将AL的高4位与低4位互换。MOV CL,4 ROL AL,CL例2:将1A00H内存单元中的双字(32位)循环左移1位。CMP 1A00H,8000H CMC
12、RCL WORD PTR1A02H,1 RCL WORD PTR1A00H,11919例:设在1000H开始存有四个压缩的压缩的BCDBCD码码12、34、56、78。要求把它们转换为ASCIIASCII码码存放在3000H开始的单元中。假定DS、ES都已设置为数据段的段基址。程序见下页。1000H3000H1234567832H31H34H33H 36H35H38H 37H SI=SI=DI=DI=BX=4BX=42020 MOV SI,1000HMOV SI,1000H;SIBCDSIBCD首址首址 MOV DI,3000HMOV DI,3000H;DIASCIIDIASCII首址首址 M
13、OV BX,4MOV BX,4;置计数器初值置计数器初值BBB:BBB:MOV AL,SI MOV AL,SI MOV AL,SI MOV AL,SI ;ALBCDALBCD码码,第一次取第一次取1212H H AND AL,0FHAND AL,0FHAND AL,0FHAND AL,0FH;屏蔽高屏蔽高4 4位位02H02H OR AL,30HOR AL,30HOR AL,30HOR AL,30H;转换为转换为ASCIIASCII码码3232H H STOSBSTOSBSTOSBSTOSB ;保存结果保存结果,等价等价MOVDIMOVDI,AL INC DIAL INC DI LODSB L
14、ODSB LODSB LODSB ;MOV ALMOV AL,SI INC SISI INC SI MOV CL,4MOV CL,4MOV CL,4MOV CL,4 SHR AL,CLSHR AL,CLSHR AL,CLSHR AL,CL ;逻辑右移逻辑右移4 4位位 OR AL,30HOR AL,30HOR AL,30HOR AL,30H ;得到高得到高4 4位位ASCIIASCII码码 STOSB STOSB STOSB STOSB ;保存结果;保存结果,等价等价MOVDIMOVDI,AL INC DIAL INC DI DEC BX DEC BX ;(BX)(BX)-1(BX)(BX)-
15、1 JNZ BBB JNZ BBB ;(BX)0(BX)0,则继续循环,则继续循环2121作业P152-P153 3.1、3.2、3.7、3.9、3.13、3.16 22223.3.4 3.3.4 串操作指令串操作指令串:顺序放在内存中的一组相同类型的数据。串操作:对串中的元素进行相同的操作。串操作的寻址方式:源操作数指针 DS:SI(DS可超越)目的操作数指针 ES:DI 数据块长度 CX功能:可完成两个存储单元之间的传送MOVS、比较CMPS、搜索SANS、读LODS、写STOS 5种操作(也仅是串指令可以)。一次操作对象为16位(W)或8位(B)数据,但为下一次操作做了准备。2323串操
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 指令系统 逻辑运算 移位 指令 操作
限制150内