微机原理学习笔记——位操作指令

位操作类指令是以二进制数据进行的操作,结果对状态标志位有影响,位操作指令有三大类指令分别是:逻辑运算指令、移位指令、循环移位指令。

逻辑运算指令:与AND、或OR、非NOT、异或XOR、测试TEST

移位指令:左移无符号指令SHL、左移有符号指令SAL、右移无符号指令SHR、右移有符号指令SAR。

循环移位指令:不带进位循环左移ROL、不带进位循环右移ROR、带进位循环左移RCL、带进位循环右移RCR。

目录

逻辑运算指令AND、OR、NOT、XOR、TEST

移位指令SHL、SHR、SAL、SAR

循环移位指令ROL、ROR、RCL、RCR


逻辑运算指令AND、OR、NOT、XOR、TEST

在逻辑运算指令中,格式都是双操作数即目的操作数和源操作数,设置CF=OF=0,根据结果会设置响应的SF、ZF和PF的状态,对AF是无定义的;NOT是单操作数指令,它不影响任何标志位。

(1)逻辑与:AND

格式:AND dest,src;相与的值回dest

运算规则:dest和src某一位数取值都是为1时,其值才是1,否则值都为0。

(2)逻辑或:OR

格式:OR dest,src;相或的值回dest

运算规则:dest和src某一位数只要有一个是1,其结果就是1,只有当dest和src都为0时结果才是0。

(3)逻辑异或指令:XOR

格式:XOR dest,src;异或的值回dest

运算规则:dest和src的某一位数的值相同结果就为0;不同结果就为1。

(4)逻辑非指令:NOT

格式:NOT reg/mem

运算规则:操作数的值取反。

注意:(1)是单操作数指令,不可以是立即数和四个段。

(2)不影响任何标志位

(3)如果操作数是存储器时,需要表明是字节操作还是字操作。

(4)其值保存在当前的操作数中。

(5)测试指令:TEST

格式:TEST dest,src;其值不传回目的操作数。

注意:(1)TEST指令执行的是AND与操作,区别是AND指令改变目的操作数而TEST其值不改变目的操作数,只影响标志位的状态。

(2)TEST指令和比较指令CMP类似,只不过TEST通常测试单个位,而CMP是字节或者是字,通常测试指令后面跟JZ和JNZ即零转移和非零转移。

(3)ZF=1表示该位为0,ZF=0表示该位为1。

(4)ZF=1说明结果都为0也就是JZ零转移,ZF=0表示结果不为0也就是JNZ非零转移。


移位指令SHL、SHR、SAL、SAR

(1)SHL、SHR

逻辑左移SHL,在左移1位或者N位,移出后最低位补0,最高位进入CF标志位,如果要移动大于>=2位需要用CL来表示。

格式:SHL reg/mem,1/CL。

逻辑右移SHR,在右移1位或者N位,移出后最高位补0,最低位进入CF,如果要移动大于>=2位需要用CL来表示。

格式:SHR reg/mem,1/CL

(2)SAL、SAR

算术左移SAL与逻辑左移SHL是同一条指令其唯一的区别就是,算术左移他会把操作数看成是有符号位。

格式:SAL reg/mem,1/CL。 

算术右移SAR与逻辑右移SHR不一样,在移时;最高位不变,最低位进入CF,如果要移动大于>=2位需要用CL来表示。

格式:SAR reg/mem,1/CL


循环移位指令ROL、ROR、RCL、RCR

循环移位指令影响进位标志CF但不影响SF、ZF、PF、AF标志位。

(1)不带进位的ROL、ROR。

不带进位循环左移指令ROL其格式为:ROL reg/mem,1/CL。

(将操作数左移,最高位进入最低位和CF)

不带进位循环右移指令ROR其格式为:ROR reg/mem,1/CL。

(将操作数右移,最低位进入最高位和CF)

(2)带进位的RCL、RCR。

带进位循环左移RCL其格式为:RCL reg/mem,1/CL

(先将CF的值给最低位,然后最高位的值在进CF)

带进位循环右移RCR其格式为:RCR reg/mem,1/CL

(先将CF的值给了最高位,然后最低位的值在进CF)

  • 9
    点赞
  • 60
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小黄爱吃辣

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值