微机原理第3章续.ppt
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《微机原理第3章续.ppt》由会员分享,可在线阅读,更多相关《微机原理第3章续.ppt(63页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、 第三节第三节8086/80888086/8088的指令系统的指令系统(续续1 1)三、逻辑运算和移位指令三、逻辑运算和移位指令 (一)逻辑运算指令(一)逻辑运算指令 (二)移位指令(二)移位指令 (三)循环移位指令(三)循环移位指令 三、逻辑运算和移位指令三、逻辑运算和移位指令(一)逻辑运算指令(一)逻辑运算指令1 1、AND AND 逻辑逻辑“与与”指令指令2 2、TEST TEST 测试指令测试指令3 3、OR OR 逻辑逻辑“或或”指令指令4 4、XOR XOR 逻辑逻辑“异或异或”指令指令5 5、NOT NOT 逻辑逻辑“非非”指令指令特点特点:80868086可以对可以对8 8位,
2、或位,或1616位操作数执行逻辑操作。位操作数执行逻辑操作。逻辑运算是按位操作,操作数应该是位串而不是数。逻辑运算是按位操作,操作数应该是位串而不是数。1 1、ANDAND(Logical and)Logical and)逻辑逻辑“与与”指令指令格式:格式:AND dest,src AND dest,src;B/WB/Wsrc:src:立即数、通用寄存器、存储器立即数、通用寄存器、存储器dest:dest:通用寄存器、存储器。通用寄存器、存储器。执行操作:进行执行操作:进行“与与”运算运算 (两位中有一位为两位中有一位为0 0,则结果为,则结果为0 0,否则为,否则为1)1)操作类型:操作类型
3、:AND AL,0FHAND AL,0FH AND CX,DI AND CX,DI AND SI,MEM_NAME AND SI,MEM_NAME AND ALPHA DI,AX AND ALPHA DI,AX AND word ptrSI,0FFFEH AND word ptrSI,0FFFEH注意:注意:“与与与与”指令中操作数不能同时为存储器;指令中操作数不能同时为存储器;指令中操作数不能同时为存储器;指令中操作数不能同时为存储器;影响标志位:影响标志位:CF0F=0,A未定义,未定义,SF,ZF,PF反映操作的结反映操作的结果。果。“与与”指令的用途指令的用途:(1)(1)清清清清CF
4、,CF,CF,CF,自己自己自己自己“与与与与”自己自己自己自己.操作数不变操作数不变操作数不变操作数不变 ,CF=0CF=0CF=0CF=0 例:例:AND AL AND AL,ALAL;结果:操作数不变结果:操作数不变 ,CF=0CF=0。(2)(2)若使若使操作数中若干位保持不变,则若干位与操作数中若干位保持不变,则若干位与操作数中若干位保持不变,则若干位与操作数中若干位保持不变,则若干位与“1”1”1”1”相与相与相与相与;而而若干位置为若干位置为若干位置为若干位置为“0“0“0“0“的场合,则若干位与的场合,则若干位与的场合,则若干位与的场合,则若干位与“0”0”0”0”相与相与相与
5、相与。例:例:若(若(AL)=4AL)=43 3 3 3H H AND AL,0AND AL,0F F F FH H;(AL)=03H,;(AL)=03H,(AL)(AL)(AL)(AL)03030303不变不变不变不变;;(AL)(AL)(AL)(AL)47474747=0H,=0H,=0H,=0H,屏蔽高屏蔽高屏蔽高屏蔽高4 4 4 4位位位位。“与与”指令应用举例:指令应用举例:例例1 1:将英文小写字母:将英文小写字母ASCIIASCII转换成大写。转换成大写。小写英文字母小写英文字母ASCIIASCII为:为:azaz 61H7AH 61H7AH 大写英文字母大写英文字母ASCIIA
6、SCII为:为:AZ AZ 41H5AH41H5AH程序:程序:MOV AL,MOV AL,aaAND AL,0AND AL,0DFDFH H ;(AL)=41H ;(AL)=41H0110 00010100 00011101 111161H41HDFH2 2、TEST TEST测试指令测试指令格式:格式:TEST dest,src TEST dest,src;(destdest)(srcsrc)src:src:立即数、通用寄存器、存储器立即数、通用寄存器、存储器dest:dest:通用寄存器、存储器通用寄存器、存储器 执行操作:二个操作数相与的结果不存,置标志位执行操作:二个操作数相与的结果
7、不存,置标志位 操作类型举例:操作类型举例:TEST BH,7TEST BH,7TEST SI,BPTEST SI,BPTEST DI,TABLEBXTEST DI,TABLEBXTEST SI,CHTEST SI,CH TEST word ptrBX,6ACEH TEST word ptrBX,6ACEH用途:常常用途:常常用来检测一些条件是否满足用来检测一些条件是否满足,但又不希望改,但又不希望改 变原有的操作数的情况下用,常在此指令后边加一条变原有的操作数的情况下用,常在此指令后边加一条 条件转移指令。条件转移指令。例:判断例:判断AlAl中数据的奇偶性中数据的奇偶性设:设:(ALAL)
8、=0AEH=0AEH程序:程序:MOV AL MOV AL,0AEH0AEH;(AL)=0AEH(AL)=0AEH TEST ALTEST AL,01H01H JZ JZ EVEN EVEN ;结果结果=0=0为偶数转为偶数转EVENEVEN 奇数处理奇数处理 EVENEVEN:偶数处理偶数处理检测(检测(ALAL)的最低位是否为)的最低位是否为0 0,若为,若为0 0转转EVENEVEN3 3、OROR(Logical inclusive or)Logical inclusive or)逻辑逻辑“或或”指指令令格式:格式:OR dest,srcOR dest,src;dest:dest:通用
9、寄存器、存储器。通用寄存器、存储器。src:src:立即数、通用寄存器、存储器立即数、通用寄存器、存储器执行操作:执行操作:进行按位进行按位“或或”运算运算 例:例:OR BL,0F6H OR BL,0F6HOR AH,BL OR AH,BL OR CL,BETABXDIOR CL,BETABXDIOR GAMMASI,DXOR GAMMASI,DX OR MEM_BYTE,80H OR MEM_BYTE,80H注意:注意:“或或”指令中操作数不能同时为存储器;指令中操作数不能同时为存储器;影响标志位:影响标志位:CFCF0F=00F=0,A A未定义,未定义,SF,ZF,PFSF,ZF,PF
10、反映操作的结果。反映操作的结果。用途:用途:(1 1)清)清CF,CF,自己与自己自己与自己“或或”,操作数不变,操作数不变,CF=0CF=0 例:例:OR AL,AL OR AL,AL ;(;(ALAL)不变,不变,CF=0CF=0(2 2)使某个操作数使某个操作数若干位保持不变,若干位与若干位保持不变,若干位与“0”0”或或 ;而要使若干位置而要使若干位置1 1,若干位与,若干位与“1”1”或或 。(3)(3)将两个操作数信息组合。将两个操作数信息组合。若(若(ALAL)=03H =03H 用用OROR指令组合使指令组合使(ALAL)=33H=3=33H=3。OR ALOR AL,30H
11、30H ;(;(ALAL)=33H=33H 4 4、XORXOR(Logical exclusive or)Logical exclusive or)逻辑逻辑“异或异或”指令指令格式:格式:XOR dset,src XOR dset,src;B/WB/Wdest:dest:通用寄存器、存储器。通用寄存器、存储器。src:src:立即数、通用寄存器、存储器立即数、通用寄存器、存储器执行的操作:对指令的两个操作数进行按位执行的操作:对指令的两个操作数进行按位“异或异或”运算运算二位不相同时为二位不相同时为1,1,相同时为相同时为0 0XOR DI,23F6HXOR DI,23F6H XOR SI,
12、DXXOR SI,DXXOR CL,BUFFERXOR CL,BUFFERXOR MEMBX,AXXOR MEMBX,AX XOR byte ptrBP,3DH XOR byte ptrBP,3DH注意:注意:“异或异或”指令中操作数不能同时为存储器;指令中操作数不能同时为存储器;影响标志位:影响标志位:CFCF0F=00F=0,A A未定义,未定义,SF,ZF,PFSF,ZF,PF反映操反映操作的结果。作的结果。用途:用途:若要对某些特定位求反若要对某些特定位求反,其余位保持不变其余位保持不变 让某些特定位与让某些特定位与“1”1”异或,异或,其余位与其余位与“0”0”异或异或应用举例:应用
13、举例:例例1:1:将将ALAL中的第中的第1,3,5,71,3,5,7位求反位求反,0,2,4,6,0,2,4,6位保持不变。位保持不变。XOR AL,0AAHXOR AL,0AAH例例2 2:比较三条(比较三条(AX)AX)清清“0”“0”指令:指令:XOR AX,AX XOR AX,AX ;清清AX,AX,清清CF,CF,SUB AX,AX SUB AX,AX;清清AX,AX,清清CF,CF,MOV AX,0 MOV AX,0;清清AX,AX,不影响标志位,不影响标志位,XORXOR清清“0”“0”指令在多字节累加程序中十分有用。指令在多字节累加程序中十分有用。5 5、NOTNOT(Log
14、ical not)Logical not)逻辑逻辑“非非”指令指令格式:格式:NOT src NOT src ;B/W B/W 执行操作:执行操作:字节求反字节求反:(src):(src)0FFH-(src)0FFH-(src)字求反字求反:(src):(src)0FFFFH-(src)0FFFFH-(src)源操作数:通用寄存器、存储器,不能是立即数。源操作数:通用寄存器、存储器,不能是立即数。操作类型举例:操作类型举例:NOT AHNOT AHNOT CX NOT CX NOT BYTE PTR BPNOT BYTE PTR BPNOT WORD PTR COUNTNOT WORD PTR
15、 COUNT综合举例:综合举例:1 1使某些位置使某些位置“0”“0”。IN AL,61H;(;(AL)=B 想使此位为想使此位为0 0执行指令:执行指令:AND ALAND AL,即可。即可。2.2.使某些位置使某些位置“1”“1”。IN AL,61H;(;(AL)=执行指令:执行指令:OR AL,想使此位为想使此位为“1”“1”3.3.使某些位求反:使某些位求反:IN AL,61H ;(;(AL)=0 XOR AL,0 0 0 0 0 0 1 0 1 0FDH02H02H逻辑指令应用小结:逻辑指令应用小结:(1 1)ANDAND指令常用来对指令的指定位清指令常用来对指令的指定位清“0”“0
16、”。(2 2)OROR指令常用来对某些位置指令常用来对某些位置1 1。(3 3)XORXOR指令用在程序开头,使某个寄存器清指令用在程序开头,使某个寄存器清“0”“0”。(4 4)NOTNOT指令对某个数据取反,指令对某个数据取反,+1+1成补码。成补码。(5 5)TESTTEST指令用来检测指定位为指令用来检测指定位为1 1,还是,还是0 0。(二)移位指令(二)移位指令 (8086 (8086有有8 8条移位指令条移位指令):):1 1、算术逻移位指令算术逻移位指令(4 4条条 ):(1,2)(1,2)SHL/SALSHL/SAL逻辑左移逻辑左移/算术左移指令算术左移指令(3)(3)SHR
17、SHR 逻辑右移指令逻辑右移指令(4)(4)SARSAR 算术右移指令算术右移指令2 2、循环移位、循环移位(4 4条)条):(1)(1)ROLROL 不含不含CFCF循环左移指令循环左移指令(2)(2)ROR ROR 不含不含CFCF循环右移指令循环右移指令(3)(3)RCL RCL 含含CFCF循环左移指令循环左移指令(4)(4)RCRRCR 含含CFCF循环右移指令循环右移指令1 1、算术逻移位指令算术逻移位指令(4 4条条 ):(1 1)、)、SHL/SAL SHL/SAL(Shift logical left/shift arithmetic(Shift logical left/s
18、hift arithmetic left)left)逻辑左移逻辑左移/算术左移指令算术左移指令格式:格式:SHL dest,cnt SHL dest,cnt;逻辑左移指令;逻辑左移指令 SAL dest,cnt SAL dest,cnt ;算术左移指令;算术左移指令 dest:dest:通用寄存器、存储器通用寄存器、存储器 cnt:cnt:表示移位次数表示移位次数 cnt=1 cnt=1,1 1可写在指令中。可写在指令中。cnt1 cnt1,用,用CLCL存放移位次数存放移位次数 SHL/SAL SHL/SAL指令操作示意图如下图所示:指令操作示意图如下图所示:指令格式举例:指令格式举例:SH
19、L AH,1 SHL AH,1 SAL SI,CL SAL SI,CL SAL WORD PTRBX,1 SAL WORD PTRBX,1 SHL BYTE PTRBX,CL SHL BYTE PTRBX,CL0CFdestdest:dest:寄存器、存储器寄存器、存储器指令格式举例指令格式举例:SHR BL,1:SHR BL,1 SHR AX,CL SHR AX,CL SHR BYTE PTR DI+BP,1 SHR BYTE PTR DI+BP,1 SHR WORD PTR BLOCK ,CL SHR WORD PTR BLOCK ,CLdestCF0(2 2)、)、SHR(Shift l
20、ogical right)SHR(Shift logical right)逻辑右移指令逻辑右移指令格式:格式:SHR dest,cnt SHR dest,cnt;逻辑右移指令;逻辑右移指令,B/W,B/W 执行操作:相当于无符号数执行操作:相当于无符号数22 SHRSHR指令操作示意图如下图所示:指令操作示意图如下图所示:dset dest:dest:寄存器、存储器寄存器、存储器 指令格式举例指令格式举例:SAR AL,1:SAR AL,1 SHR DL,CL SHR DL,CL SHR WORD PTR TABLESI,1 SHR WORD PTR TABLESI,1 例:例:20/2=-1
21、020/2=-10(3 3)、)、SARSAR(Shift arithmetic right)(Shift arithmetic right)算术右移指令算术右移指令 格式:格式:SAR dest,cnt SAR dest,cnt;算术右移指令;算术右移指令,B/W,B/W 执行操作:相当于带符号数的执行操作:相当于带符号数的22功能功能,SARSAR指令操作示意图如下图所示指令操作示意图如下图所示应用举例:应用举例:(BX)=84F0H (1)若若(BX)(BX)无符号数,求(无符号数,求(BXBX)/2/2SHR BXSHR BX,1 1;(BXBX)=4278 CF=0=4278 CF=
22、0,OF=1OF=1,SF=0SF=0,ZF=0ZF=0 (2)(2)若(若(BXBX)带符号数,求()带符号数,求(BXBX)/4/4 MOV CL MOV CL,02H 02H 或或 SAR BX SAR BX,1 1 SAR BX SAR BX,CL CL SAR BXSAR BX,1 1 算术移位与逻辑移位的区别:算术移位与逻辑移位的区别:(1)算术移位把操作数看作带符号数算术移位把操作数看作带符号数,故右移时最高位,故右移时最高位(符号位)不变;而左移(符号位)不变;而左移1位时,若最高位与位时,若最高位与CF不同,不同,说明移位前后符号位有变化,则溢出标志说明移位前后符号位有变化,
23、则溢出标志OF=1,表示有表示有溢出。溢出。逻辑移位把操作数看作无符号数逻辑移位把操作数看作无符号数,故右移时最,故右移时最高位补高位补0;而左移时,当左移;而左移时,当左移1位时,与算术左移不同位时,与算术左移不同之处在于:通过之处在于:通过CF判断是否产生溢出判断是否产生溢出CF=1,表示表示有溢出有溢出(2)左移左移1位相当于乘以位相当于乘以2,其中的数值有可能超出给定,其中的数值有可能超出给定范围,因此,有溢出问题;而范围,因此,有溢出问题;而右移右移1位相当于除以位相当于除以2,不存在溢出问题。不存在溢出问题。2 2、循环移位、循环移位(4 4条)条):ROL,ROR,RCL,RCR
24、ROL,ROR,RCL,RCR ROL,ROR ROL,ROR 不含不含CFCF循环移位指令,操作数移动循环移位指令,操作数移动8 8次后还原。次后还原。RCL,RCR RCL,RCR 含含CFCF循环移位指令,操作数移动循环移位指令,操作数移动9 9次后还原。次后还原。影响标志影响标志OFOF、CFCF CFdest指令格式举例:指令格式举例:ROL BH,1ROL BH,1 ROL DX,CL ROL DX,CL ROL WORD PTR TABLEDI,1 ROL WORD PTR TABLEDI,1 ROL BYTE PTR ALPHA ,CL ROL BYTE PTR ALPHA ,
25、CL(1 1)、)、ROLROL(Rotate left)(Rotate left)不含不含CFCF循环左移指令循环左移指令格式:格式:ROL dest,cnt ROL dest,cnt;不含;不含CFCF循环左移指令循环左移指令,B/W,B/W执行操作:执行操作:ROLROL指令操作示意图如下图所示指令操作示意图如下图所示 移动移动8 8次后操作数还原。次后操作数还原。影响标志影响标志OFOF、CF CF 情况:情况:左循环移动左循环移动1 1次后:次后:移位后,看最高有效位(符号位)是否发生变化:移位后,看最高有效位(符号位)是否发生变化:如果移位后,如果移位后,最高有效位与最高有效位与C
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机 原理 章续
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内