[工学]微机原理与接口-第4章4逻辑运算及串操作指令课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《[工学]微机原理与接口-第4章4逻辑运算及串操作指令课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 工学 微机 原理 接口 逻辑运算 操作 指令 课件
- 资源描述:
-
1、1三、逻辑类指令(位操作指令)这一类指令包括逻辑运算指令、移位指令和循环这一类指令包括逻辑运算指令、移位指令和循环移位指令等三组。移位指令等三组。位操作类指令以位操作类指令以二进制位二进制位为基本单位进行数据的为基本单位进行数据的操作操作当需要对字节或字数据中的各个二进制位操作时,当需要对字节或字数据中的各个二进制位操作时,可以考虑采用位操作类指令可以考虑采用位操作类指令注意这些指令对标志位的影响注意这些指令对标志位的影响 逻辑运算指令逻辑运算指令AND OR XOR NOT TEST移位指令移位指令SHL SHR SAR 循环移位指令循环移位指令ROL ROR RCL RCR21.1.逻辑运
2、算指令逻辑运算指令逻辑运算类指令与算术运算指令不同逻辑运算类指令与算术运算指令不同算术指令算术指令是按是按字节或字进行算术运算字节或字进行算术运算,而,而逻辑运算指逻辑运算指令是把操作数按位令是把操作数按位来进行逻辑运算。来进行逻辑运算。“与与”运算指令运算指令格式:格式:AND dst,src“或或”运算指令运算指令格式:格式:OR dst,src“非非”运算指令运算指令格式:格式:NOT opr“异或异或”运算指令运算指令格式:格式:XOR dst,src测试指令测试指令格式:格式:TEST dst,src说明:说明:TEST相当于相当于AND运算,但是运算,但是不保存结果,仅影响标志。不
3、保存结果,仅影响标志。31 逻辑运算指令逻辑运算指令 NOT 目的 ;取反指令 AND 目的,源 ;按位与指令 OR 目的,源 ;按位或指令 XOR 目的,源 ;按位异或指令 TEST 目的,源;测试指令,与AND指令操作相同,只是不改变目的操作数的内容 单操作数逻辑指令NOT不影响标志位,操作数与INC、DEC和NEG一样:4逻辑与指令AND对两个操作数执行逻辑与运算,结果送目的操作数AND dest,srcAND dest,src;destdestdestdestsrcsrc 只有相只有相“与与”的两位都的两位都是是1,结果才是,结果才是1;否则,;否则,“与与”的结果为的结果为05逻辑或
4、指令OR对两个操作数执行逻辑或运算,结果送目的操作数OR dest,srcOR dest,src;destdestdestdestsrcsrc只要相只要相“或或”的两位的两位有一位是有一位是1,结果就是,结果就是1;否则,结果为;否则,结果为06逻辑异或指令XOR对两个操作数执行逻辑异或运算,结果送目的操作数XOR dest,srcXOR dest,src;destdestdestdestsrcsrc只有相只有相“异或异或”的两的两位不相同,结果才是位不相同,结果才是1;否则,结果为否则,结果为07测试指令TEST 对两个操作数执行逻辑与运算,结果并不送目的操作数,仅按AND指令影响标志TES
5、T dest,srcTEST dest,src;destdestsrcsrc AND与与TEST指令的关系,指令的关系,同同SUB与与CMP指令的关系一样指令的关系一样8逻辑非指令NOT对一个操作数执行逻辑非运算NOT reg/memNOT reg/mem;reg/memreg/memreg/memreg/mem 按位取反,原来是按位取反,原来是“0”的 位 变 为的 位 变 为“1”;原来是;原来是“1”的位变为的位变为“0”9例 逻辑运算mov al,75h;AL75Hand al,32h;AL30H;CFOF0,SF0,ZF0,PF1or al,71h;AL71H;CFOF0,SF0,Z
6、F0,PF1xor al,0f1h;AL80H;CFOF0,SF1,ZF0,PF0not al;AL7FH 标志不变10逻辑运算指令的应用逻辑运算指令的应用and bl,11110110b;BL中中D0和和D3清清0,其余位不变,其余位不变or bl,00001001b;BL中中D0和和D3置置1,其余位不变,其余位不变xor bl,00001001b;BL中中D0和和D3求反,其余位不变求反,其余位不变 AND指令可用于复位某些位(同指令可用于复位某些位(同0相与),不影响其他位相与),不影响其他位 OR指令可用于置位某些位(同指令可用于置位某些位(同1相或),不影响其他位相或),不影响其他
7、位 XOR指令可用于求反某些位(同指令可用于求反某些位(同1相异或),不影响其他位相异或),不影响其他位11 例例4.7 从偏移地址从偏移地址TABLE开始的内存区中,存放着开始的内存区中,存放着100个字节个字节型数据,要求将这些数进行累加,并将累加和的低位存型数据,要求将这些数进行累加,并将累加和的低位存SUM单元,单元,高位存高位存SUM+1单元。程序如下:单元。程序如下:LEA BX,TABLE;(BX)数据表地址指针数据表地址指针 MOV CL,100 ;(CL)数据块长度数据块长度 XOR AX,AX ;清;清AL、AH,并清进位,并清进位CFLOOPER:ADD AL,BX ;加
8、一个数到;加一个数到AL JNC GOON ;如;如(CF)=0,转移到,转移到GOON INC AH ;否则,;否则,AH加加1 GOON:INC BX ;地址指针加;地址指针加1 DEC CL ;计数值减;计数值减1 JNZ LOOPER ;如;如(CL)0,转移到,转移到LOOPER MOV SUM,AX;否则,否则,(SUM)(AL),(SUM+1)(AH)HLT ;停止;停止12常见的用法常见的用法 清进位标志位:清进位标志位:AND AX,AX 或或 OR AL,AL等等 清零操作数:清零操作数:XOR AX,AX 不仅把不仅把AX清清零,而且也影响了状态标志零,而且也影响了状态标
9、志 把某几位取反:用把某几位取反:用XOR指令,把要取反指令,把要取反的位和的位和1异或,不变的位和异或,不变的位和0异或异或 清零或置位某几位:用清零或置位某几位:用AND指令清零,指令清零,用用OR指令置位指令置位132 移位指令移位指令 将操作数移动一位或多位,分成逻辑移位和算将操作数移动一位或多位,分成逻辑移位和算术移位,分别具有左移或右移操作术移位,分别具有左移或右移操作 移位指令的移位指令的第一个操作数第一个操作数是指定的被移位的操是指定的被移位的操作数,可以是寄存器或存储单元;作数,可以是寄存器或存储单元;后一个操作后一个操作数数表示移位位数:表示移位位数:该操作数该操作数为为1
10、,表示移动一位,表示移动一位 该操作数该操作数为为CL,CL寄存器值表示移位位数寄存器值表示移位位数(移位(移位位数位数大于大于1只能只能CL表示表示)按照移入的位设置进位标志按照移入的位设置进位标志CF,根据移位后,根据移位后的结果影响的结果影响SF、ZF、PF14逻辑左移指令SHL(shift logical left)SHL reg/mem,1/CL;reg/mem左移1或CL位;最低位补0,最高位进入CFSHL和和SAL指令的功能演示指令的功能演示SHL和SAL指令的功能16 例例4.8 将一个将一个16位无符号数乘以位无符号数乘以10。该数原来存放在以。该数原来存放在以FACTOR为
11、首地址的两个连续的存储单元中为首地址的两个连续的存储单元中(低位在前,高位在低位在前,高位在后后)。因为因为FACTOR 10=(FACTOR 8)+(FACTOR 2),故可用左移,故可用左移指令实现以上乘法运算。编程如下:指令实现以上乘法运算。编程如下:MOV AX,FACTOR;(AX)被乘数被乘数SHL AX,1 ;(AX)=FACTOR 2MOV BX,AX ;暂存;暂存BXSHL AX,1 ;(AX)=FACTOR 4SHL AX,1 ;(AX)=FACTOR 8ADD AX,BX ;(AX)=FACTOR 10 HLT 以上程序的执行时间大约需以上程序的执行时间大约需26个时钟。
12、如用乘法指令编程,个时钟。如用乘法指令编程,执行时间将超过执行时间将超过130个时钟。个时钟。17逻辑右移指令SHR(shift logical right)SHR reg/mem,1/CL;reg/mem右移1/CL位;最高位补0,最低位进入CF18 例例4.9 将一个将一个16位无符号数除以位无符号数除以512。该数原来存放在以。该数原来存放在以DIVIDAND为首地址的两个连续的存储单元中。为首地址的两个连续的存储单元中。因为因为DIVIDAND512=(DIVIDAND2)256,故可用逻辑右,故可用逻辑右移指令完成上述除法运算。编程如下:移指令完成上述除法运算。编程如下:MOV AX
13、,DIVIDAND ;(AX)被除数被除数SHR AX,1 ;(AX)=DIVIDAND2XCHG AL,AH ;(AL)(AH),相当于循环右移相当于循环右移8位位CBW ;清;清AX的高的高8位,位,(AX)=DIVIDAND512HLT 当然,也可以将立即数当然,也可以将立即数9传送到传送到CL寄存器,然后用指令寄存器,然后用指令SHR AX,CL完成除以完成除以512的运算。但是相比之下,上面的程序执行的运算。但是相比之下,上面的程序执行速度更快。速度更快。19算术左移指令算术左移指令SAL(shift arithmetic left)SAL reg/mem,1/CL;与;与SHL是同
14、一条指令是同一条指令SHL和SAL指令的功能21算术右移指令SAR(shift arithmetic right)SAR reg/mem,1/CL;reg/mem右移1/CL位;最高位不变,最低位进入CFSAR指令的功能23 3)循环移位指令循环移位指令 8086/8088指令系统有四条循环移位指令,指令系统有四条循环移位指令,不带进位标志不带进位标志CF的左循环移位的左循环移位指令指令ROL和和右循环移位指令右循环移位指令ROR(也称小循环也称小循环),以及,以及带进位标志带进位标志CF的左循环移位指令的左循环移位指令RCL和右循环移位指令和右循环移位指令RCR(也称大循环也称大循环)。循环
15、移位指令的操作数类型与移位指令相同,可以是循环移位指令的操作数类型与移位指令相同,可以是8位或位或16位的寄存器或存储器。指令中指定的左移或右移的位数也可位的寄存器或存储器。指令中指定的左移或右移的位数也可以是以是1或由或由CL寄存器指定,但不能是寄存器指定,但不能是1以外的常数或以外的常数或CL以外的其以外的其他寄存器。他寄存器。所有循环移位指令都只影响进位标志所有循环移位指令都只影响进位标志CF和溢出标志和溢出标志OF,但,但OF标志的含义对于左循环移位指令和右循环移位指令有所不同。标志的含义对于左循环移位指令和右循环移位指令有所不同。24循环移位指令(rotate)循环移位指令类似移位指
16、令,但要将从一端移出的位返回到另一端形成循环。分为:ROL reg/mem,1/CL;不带进位循环左移ROR reg/mem,1/CL;不带进位循环右移RCL reg/mem,1/CL;带进位循环左移RCR reg/mem,1/CL;带进位循环右移 循环移位指令的操作数形式与移位指令相同,按指令功能设置进位标志CF,但不影响SF、ZF、PF、AF标志演示演示演示演示演示演示演示演示ROL指令的功能ROR指令的功能RCL指令的功能RCR指令的功能29 (1)循环左移指令循环左移指令ROL(ROtate Left)。指令格式:。指令格式:ROL dst,1/CL ROL指令将目的操作数向左循环移动
17、指令将目的操作数向左循环移动1位或移位或移CL寄存器指定寄存器指定的位数。最高位移到进位标志的位数。最高位移到进位标志CF,同时最高位移到最低位形成,同时最高位移到最低位形成循环,进位标志循环,进位标志CF不在循环回路之内。不在循环回路之内。ROL指令的操作如图指令的操作如图4.24所示。所示。CFdst图图4.24 ROL指令操作示意图指令操作示意图 30 ROL指令将影响指令将影响CF和和OF两个状态标志位。如果循环移位次两个状态标志位。如果循环移位次数等于,且移位以后目的操作数新的最高位与数等于,且移位以后目的操作数新的最高位与CF不相等,则不相等,则(OF)=1,否则,否则(OF)=0
18、。因此,。因此,OF的值表示循环移位前后符号位的值表示循环移位前后符号位是否有所变化。如果移位次数不等于,则是否有所变化。如果移位次数不等于,则OF的值不确定。的值不确定。ROL指令的例子如下:指令的例子如下:ROL BH,1;寄存器循环左移;寄存器循环左移1位位ROL DX,CL ;寄存器循环左移;寄存器循环左移(CL)位位ROL WORD PTR DI,1 ;存储器循环左移;存储器循环左移1位位ROL BYTE PTR ALPHA,CL ;存储器循环左移;存储器循环左移(CL)位位 31 (2)循环右移指令循环右移指令ROR(ROtate Right)。指令格式:。指令格式:ROR dst
19、,1/CL ROR指令将目的操作数向右循环移动指令将目的操作数向右循环移动1位或移位或移CL寄存器指定寄存器指定的位数。最低位移到进位标志的位数。最低位移到进位标志CF,同时最低位移到最高位。该,同时最低位移到最高位。该指令的操作如图指令的操作如图4.25表示。表示。ROR指令也将影响状态标志位指令也将影响状态标志位CF和和OF。若循环移位次数等。若循环移位次数等于且移位后新的最高位和次高位不等,则于且移位后新的最高位和次高位不等,则(OF)=1,否则,否则(OF)=0。若循环移位次数不等于,则。若循环移位次数不等于,则OF的值不确定。的值不确定。图图4.25 ROR指令操作示意图指令操作示意
20、图CFdst32下面是下面是ROR指令的几个例子指令的几个例子:ROR CX,1 ;寄存器循环右移;寄存器循环右移1位位 ROR BH,CL ;寄存器循环右移;寄存器循环右移(CL)位位ROR BYTE PTR BETA,1 ;存储器循环右移;存储器循环右移1位位 ROR WORD PTR ALPHA,CL ;存储器循环右移;存储器循环右移(CL)位位 33 (3)带进位循环左移指令带进位循环左移指令RCL(Rotate Left through Carry)。指。指令格式:令格式:RCL dst,1/CL RCL指令将目的操作数连同进位标志指令将目的操作数连同进位标志CF一起向左循环移动一起
21、向左循环移动1位位或移或移CL寄存器指定的位数。最高位移入寄存器指定的位数。最高位移入CF,而,而CF移入最低位。移入最低位。该指令的操作如图该指令的操作如图4.26所示。所示。RCL指令对状态标志位的影响与指令对状态标志位的影响与ROL指令相同。指令相同。图图4.26 RCL指令操作示意图指令操作示意图CFdst34 (4)带进位循环右移指令带进位循环右移指令RCR(Rotate Right through Carry)。指令格式:指令格式:RCR dst,1/CL RCR指令将目的操作数与进位标志指令将目的操作数与进位标志CF一起向右循环移动一起向右循环移动1位位或移或移CL寄存器指定的位
展开阅读全文