第3章80868088的指令系统(位运算、逻辑运算)_第1页
第3章80868088的指令系统(位运算、逻辑运算)_第2页
第3章80868088的指令系统(位运算、逻辑运算)_第3页
第3章80868088的指令系统(位运算、逻辑运算)_第4页
第3章80868088的指令系统(位运算、逻辑运算)_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

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

文档简介

1、有两类有两类:逻辑运算指令移位与循环指令类型类型指令指令指令功能指令功能表三位运算指令列表表三位运算指令列表逻辑运算AND d, s OR d, sXOR d, sNOT dTEST d, s 算术左移 CF 0算术右移 CF 逻辑左移 CF 0逻辑右移 CF0SAL d, count SAR d, countSHL d, countSHR d, count移位d d sd d sd d sd dd s,不送结果指令指令类型类型指令指令指令功能指令功能表三位运算指令列表表三位运算指令列表 ( 续续 )ROL d, countROR d, countRCR d, countRCL d, coun

2、t循环左移 CF 循环右移 CF 带进位循环左移 CF CF循环带进位循环右移 共有共有5条条:AND 按位逻辑与与OR 按位逻辑或或XOR 按位逻辑异或异或TEST 按位逻辑与与, 但不保存结果不保存结果NOT 按位取反取反 AND, OR和和 XOR指令指令 基本格式和功能指令格式: AND (OR / XOR / TEST) d, s执行的操作: AND (d) (d) OR (s) XOR AND, OR和和 XOR指令指令 基本格式和功能常见逻辑运算的规则如下列表格所示: 与(AND): 全全 1 才才 1,有,有 0 就就 0或(OR): 有有 1 就就 1,全,全 0 才才 0异

3、或(XOR):相同为相同为 0,相异为,相异为 1 1 0 1 0 0 0 1 0AND 1 1 1 1 0 0 1 0 OR 0 1 1 1 0 0 1 0XORAND, OR和和 XOR指令指令 说明寻址方式寻址方式: AND (OR, XOR, TEST ) reg/mem, reg/mem AND (OR, XOR, TEST ) reg/mem, data说明:说明:源S可以是通用寄存器、存储器或立即数;但d只能是通用寄存器或存储器,不能为立即数;而且d和s不能同时为存储器操作数。AND, OR和和 XOR指令指令 说明测试指令测试指令TEST不将结果送回d,它只影响F寄存器;这4条

4、指令均影响标志位影响标志位:SF、ZF、PF根据运算结果设置相应位;CF、OF总是置零;AF不确定。NOT指令指令 基本格式和功能指令格式:指令格式: NOT d寻址方式寻址方式: NOT reg/memNOT指令指令 功能&说明功能功能&说明:说明: 单操作数指令,对d进行按位取反(0变1,1变0)操作;d可以是通用寄存器或存储器操作数;NOT指令对标志寄存器各位均无影响无影响;小结:小结:逻辑运算指令都是按位进行按位进行逻辑运算的,可以对字节字节或字字进行逻辑运算;逻辑运算指令可用于组合组合、分离分离、屏蔽屏蔽或设设置置某些位。例例1:请分别写出实现下列要求的指令:请分别写

5、出实现下列要求的指令: 使AL中高4位清零,低4位不变; 使AL中低4位清零,高4位不变; 使AL中最高位置1,其他位不变; AL中低4位求反,其余各位不变。解:解: AND AL,0FH AND AL,0F0H OR AL,80H XOR AL,0FH例例2:请编制一程序段,将F寄存器中溢出位OF变反。解:程序如下:解:程序如下: PUSHF POP AX XOR AX,0800H PUSH AX POPF 例例3:将AL清零,至少有以下几种方法,它们有何不同? MOV AL,00H AND AL,00H XOR AL,AL共有以下共有以下8条条:SHL (shift logical lef

6、t) 逻辑左移逻辑左移SAL (shift arithmetic left) 算术左移算术左移 SHR (shift logical right) 逻辑右移逻辑右移SAR (shift arithmetic right) 算术右移算术右移ROL (Rotate left) 循环左移循环左移 ROR (Rotate right) 循环右移循环右移 RCL (Rotate left through carry) 带进位循环左移带进位循环左移 RCR (Rotate right through carry)带进位循环右移带进位循环右移移位类指令的格式格式(详见表三) 移位指令移位指令 d, Coun

7、t移位类指令的寻址方式寻址方式移位指令移位指令 reg/mem, 1/CL移位指令执行的操作执行的操作 (参见表三)SHL , SAL和和 SHR (d)左(右)移Count位,移出的位进入CF, 移位造成的空位补 SAR (d) 最高位不变,(d)右移Count位,移出的位进入CF, 移位造成的空位用最高位值填补。 左右移位使乘,除乘,除2运算运算变得简单,算术右移可用于有符号数的除2运算。循环循环指令执行的操作执行的操作(详见表三) ROL 和和 ROR (小循环)(小循环) (d) 循环左(右)移Count位,每移1位,移出的位从另一端进入,同时进入CF。 RCL 和和 RCR (大循环

8、)(大循环) (d) 循环左(右)移Count位,每移1位, CF从另一端进入, 移出的位进入CF。说明:说明:各移位指令中的d可以是字或字节,可以是寄存器或存储器单元,但不能是立即数。 指令中的Count指明移位的位数,只能用两只能用两种形式之一:种形式之一:1 或或 CL带进位循环移位指令常用于多字节或多字的数据移位。影响标志位情况:影响标志位情况:移位指令根据移位结束后的结果修改CF、PF、ZF、SF和OF,而AF不确定;循环移位指令根据移位结束后结果仅修改CF和OF;如果移位/循环移位仅移一位,且移位前后操作数的最高位发生变化,那么OF置1,否则置0;如果移位/循环移位的位数大于1,则

9、OF不确定。例题例题例例1:在AX中有符号数不大的情况下,利用算术移位指令进行简单的(AX) 5 / 2 运算,可以用下述程序段: MOV DX,AX SAL AX,1 ;(AX)*2 SAL AX,1 ;(AX)*4 ADD AX,DX ;(AX)*5 SAR AX,1 ;(AX)*5/2例题例题 例例2:由(DX):(AX)构成的2个字数据要左移 2 位,写出实现此要求的指令序列。解:指令序列如下: SAL AX,1 RCL DX,1 SAL AX,1 RCL DX,1思考思考:用下列方法如何? MOV CL,2 SAL AX,CL RCL DX,CL例题例题例例3:将AX的高低8位换位,写出指令序列。解:方法之一如下: MOV CL,08

温馨提示

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

评论

0/150

提交评论