第3章5逻辑移位_第1页
第3章5逻辑移位_第2页
第3章5逻辑移位_第3页
第3章5逻辑移位_第4页
第3章5逻辑移位_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

指令系统是CPU指令的集合,Intel8086指令系统共有117条基本指令,按功能分为六大类:(1)数据传送类;(2)算术运算类;(3)逻辑运算和移位(位操作类);(4)串操作;(5)控制转移类;(6)处理器控制。4、指令系统分类3.38086CPU指令系统逻辑运算和移位(位操作)3.38086CPU指令系统要求:全面而准确地理解每条指令的功能和应用位操作类指令以二进制位为基本单位进行数据的操作;包含逻辑运算类指令和移位指令。是一类常用的指令,应该特别掌握注意这些指令对标志位的影响一、逻辑运算指令

AND/OR/XOR/NOT/TEST

二、移位指令

SHL/SHR/SAL/SAR三、循环移位指令

ROL/ROR/RCL/RCR一、逻辑运算指令ANDNOTXORORTEST3.38086CPU指令系统1、逻辑与指令AND功能:对两个操作数执行按位的逻辑与运算,结果送到目的操作数ANDreg,imm/reg/mem

;reg←reg∧imm/reg/memANDmem,imm/reg

;mem←mem∧imm/reg说明:(1)按位的逻辑与运算;(2)操作数不能同时为存储器操作数;(3)注意对标志位的影响;思考:(1)某一个操作数自己和自己相逻辑与,结果是?(2)AND指令主要用在什么场合?屏蔽某些位3.38086CPU指令系统2、逻辑或指令OR功能:对两个操作数执行按位逻辑或运算,结果送到目的操作数ORreg,imm/reg/mem

;reg←reg∨imm/reg/memORmem,imm/reg

;mem←mem∨imm/reg说明:(1)按位逻辑或运算;(2)OR指令对操作数的限制和对标志位的影响;思考:(1)某一个操作数自己和自己相逻辑或,结果是?(2)OR指令主要用在什么场合?置某些位3.38086CPU指令系统3、逻辑异或指令XOR功能:对两个操作数执行按位逻辑异或运算,结果送到目的操作数XORreg,imm/reg/mem

;reg←reg⊕imm/reg/memXORmem,imm/reg

;mem←mem⊕imm/reg说明:(1)只有相“异或”的两位不相同,结果才是1;(2)

XOR指令对操作数的限制和对标志位的影响同AND指令思考:(1)某一个操作数自己和自己相异或,结果是?(2)XOR指令主要用在什么场合?寄存器清0求反某些位3.38086CPU指令系统4、逻辑非指令NOT功能:对一个操作数执行按位逻辑非运算NOTreg/mem

;reg/mem←~reg/mem说明:(1)按位取反,原来是“0”的位变为“1”,原来是“1”的位变为“0”

;(2)NOT指令是一个单操作数指令;(3)NOT指令不影响标志位;3.38086CPU指令系统小结逻辑指令:主要应用:对一个操作数的某些位进行置位(变为1)或复位(变为0)。源操作数往往是立即数。实际编程时,需要正确地选取立即数。3.38086CPU指令系统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

;标志不变例题:逻辑运算例题:逻辑指令应用;AND指令可用于复位某些位(同0相与),不影响其他位:将BL中D3和D0位清0,其他位不变and

bl,11110110B;OR指令可用于置位某些位(同1相或),不影响其他位:将BL中D3和D0位置1,其他位不变orbl,00001001B;XOR指令可用于求反某些位(同1相异或),不影响其他位:将BL中D3和D0位求反,其他不变xor

bl,00001001B3.38086CPU指令系统5、测试指令TEST功能:对两个操作数执行逻辑与运算,结果不回送到目的操作数,但要影响标志位,标志位影响同AND指令。说明:(1)本条指令通常是用于检测一些条件是否满足,但又不希望改变原有的操作数的情况下。(2)本条指令通常在其后紧跟一条条件转移指令。TESTreg,imm/reg/mem

;reg←reg∧imm/reg/memTESTmem,imm/reg

;mem←mem∧imm/reg3.38086CPU指令系统例:测试为0或1若要检测AL中的最低位是否为1,若为1则转移。testal,01h

;测试AL的最低位D0jnzNO

;标志ZF=0,即D0=1

;则程序转移到NO... ;否则ZF=1,即D0=0,顺序执行NO:...思考:(1)以上检测的是最低位,若要检测AX的最高位是否为1,若为1则转移,如何编程?3.38086CPU指令系统二、移位指令SHLSALSARSHR其中两条左移指令对应同一条机器指令,所以,从机器指令的角度来说,移位指令只有三条。四条指令分成逻辑移位和算术移位,分别具有左移或右移操作,将操作数移动1位或多位。3.38086CPU指令系统SHLreg/mem,1/CL;逻辑左移,最高位进入CF,最低位补0SHRreg/mem,1/CL;逻辑右移,最低位进入CF,最高位补0SALreg/mem,1/CL;算术左移,最高位进入CF,最低位补0SARreg/mem,1/CL;算术右移,最低位进入CF,但符号位保持不变SAL与SHL相同演示演示演示格式:3.38086CPU指令系统说明:对于操作数:(1)第一个操作数是指定的被移位的操作数,可以是寄存器或存储器操作数;第二个操作数表示移位位数,该操作数为1,表示移动一位;当移位位数大于1时,则用CL寄存器值表示。对于标志位:按照移入的位设置进位标志CF;根据移位后的结果影响SF、ZF、PF;对AF没有定义。对于OF,如果进行一位移动,则按照操作数的最高符号位是否改变,相应设置:如果移位前的操作数最高位与移位后操作数的最高位不同(有变化),则OF=1;否则OF=0。当移位次数大于1时,OF不确定。3.38086CPU指令系统移位指令举例movcl,4moval,0f0h

;al=f0hshlal,1

;al=e0h;CF=1,SF=1、ZF=0、PF=0,OF=0shral,1

;al=70h;CF=0,SF=0、ZF=0、PF=0、OF=1saral,1

;al=38h;CF=0,SF=0、ZF=0、PF=0、OF=0saral,cl

;al=03h;CF=1,SF=0、ZF=0、PF=1、OF=03.38086CPU指令系统三、循环移位指令ROLRCLRCRROR将操作数从一端移出的位返回到另一端形成循环,分成不带进位和带进位,分别具有左移或右移操作3.38086CPU指令系统1、循环移位指令ROLreg/mem,1/CL

;不带进位循环左移RORreg/mem,1/CL

;不带进位循环右移RCLreg/mem,1/CL

;带进位循环左移RCRreg/mem,1/CL

;带进位循环右移演示演示演示演示3.38086CPU指令系统循环移位指令说明对于操作数:同移位指令。对于标志位的影响:(1)按照指令功能设置进位标志CF(2)不影响SF、ZF、PF、AF(3)对于OF,同移位指令。如果进行一位移动,则按照操作数的最高符号位是否改变,相应设置溢出标志OF:如果移位前的操作数最高位与移位后操作数的最高位不同(有变化),则OF=1;否则OF=0。当移位次数大于1时,OF不确定3.38086CPU指令系统只要左移以后的数未超出一个字节或字的范围逻辑左移一位相当于无符号数乘以2逻辑右移一位相当于无符号数除以2例:用移位指令实现乘法。实现16位无符号数X*10的运算(1)用乘法指令(2)用移位与加法指令movax,xshlax,1

;ax←ax×2Movbx,xMovcl,3shlbx,cl

;bx←bx×8addbx,ax

Movx,bx3.38086CPU指令系统例:32位数移位;将DX.AX中32位数值整个左移一位shlax,1rcldx,1DXAXCF03.38086CPU指令系统总结一、逻辑运算指令

AND/OR/XO

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论