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

下载本文档

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

文档简介

逻辑运算和移位指令有两类:逻辑运算指令移位与循环指令位运算指令类型指令指令功能表三位运算指令列表逻辑运算ANDd,sORd,sXORd,sNOTdTESTd,s

算术左移CF

0算术右移CF

逻辑左移CF

0逻辑右移CF0SALd,countSARd,countSHLd,countSHRd,count移位ddsddsddsddds,不送结果位运算指令指令类型指令指令功能表三位运算指令列表(续)ROLd,countRORd,countRCRd,countRCLd,count循环左移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异或(XOR):相同为0,相异为1

1

0

1

0

0

0

1

0AND

1

1

1

1

0

0

1

0OR

0

1

1

1

0

0

1

0XOR逻辑运算指令AND,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条指令均影响标志位:SF、ZF、PF根据运算结果设置相应位;CF、OF总是置零;AF不确定。逻辑运算指令NOT指令

基本格式和功能指令格式:

NOTd寻址方式:

NOTreg/mem逻辑运算指令NOT指令

•功能&说明功能&说明:单操作数指令,对d进行按位取反(0变1,1变0)操作;d可以是通用寄存器或存储器操作数;NOT指令对标志寄存器各位均无影响;逻辑运算指令•说明小结:逻辑运算指令都是按位进行逻辑运算的,可以对字节或字进行逻辑运算;逻辑运算指令可用于组合、分离、屏蔽或设置某些位。逻辑运算指令•例子例1:请分别写出实现下列要求的指令:①使AL中高4位清零,低4位不变;②使AL中低4位清零,高4位不变;③使AL中最高位置1,其他位不变;④AL中低4位求反,其余各位不变。解:①ANDAL,0FH②ANDAL,0F0H③ORAL,80H④XORAL,0FH逻辑运算指令•例子例2:请编制一程序段,将F寄存器中溢出位OF变反。解:程序如下:

PUSHFPOPAXXORAX,0800HPUSHAXPOPF逻辑运算指令•例子例3:将AL清零,至少有以下几种方法,它们有何不同?①MOVAL,00H②ANDAL,00H③XORAL,AL移位&循环指令共有以下8条:SHL(shiftlogicalleft)逻辑左移SAL(shiftarithmeticleft)算术左移SHR(shiftlogicalright)逻辑右移SAR(shiftarithmeticright)算术右移ROL(Rotateleft)循环左移ROR(Rotateright)循环右移RCL(Rotateleftthroughcarry)带进位循环左移RCR(Rotaterightthroughcarry)带进位循环右移移位&循环指令移位类指令的格式(详见表三①②)

移位指令

d,Count移位类指令的寻址方式

移位指令

reg/mem,1/CL

移位&循环指令移位指令执行的操作

(参见表三①)SHL,SAL和SHR(d)左(右)移Count位,移出的位进入CF,移位造成的空位补0

SAR

(d)最高位不变,(d)右移Count位,移出的位进入CF,移位造成的空位用最高位值填补。左右移位使乘,除2运算变得简单,算术右移可用于有符号数的除2运算。移位&循环指令循环指令执行的操作(详见表三②)ROL和ROR(小循环)

(d)循环左(右)移Count位,每移1位,移出的位从另一端进入,同时进入CF。

RCL和RCR(大循环)

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

MOVDX,AXSALAX,1;(AX)*2SALAX,1;(AX)*4ADDAX,DX;(AX)*5SARAX,1;(AX)*5/2移位&循环指令例题例2:由(DX):(AX)构成的2个字数据要左移2位,写出实现此要求的指令序列。解:指令序列如下:

SALAX,1RCLDX,1SALAX,1RCLDX,1思考:用下列方法如何?

MOVCL,2

SALAX,CLRCLDX,CL移位&循环指令例题例3:将AX的高低8位换位,写出指令序列。解:方法之一如下:

MOVCL,08HROLAX,CL方法二如下:

MOVCL,AHMOV

温馨提示

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

评论

0/150

提交评论