我是靠谱客的博主 坚定煎饼,最近开发中收集的这篇文章主要介绍微机原理学习笔记——位操作指令逻辑运算指令AND、OR、NOT、XOR、TEST移位指令SHL、SHR、SAL、SAR循环移位指令ROL、ROR、RCL、RCR,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

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

逻辑运算指令:与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)

最后

以上就是坚定煎饼为你收集整理的微机原理学习笔记——位操作指令逻辑运算指令AND、OR、NOT、XOR、TEST移位指令SHL、SHR、SAL、SAR循环移位指令ROL、ROR、RCL、RCR的全部内容,希望文章能够帮你解决微机原理学习笔记——位操作指令逻辑运算指令AND、OR、NOT、XOR、TEST移位指令SHL、SHR、SAL、SAR循环移位指令ROL、ROR、RCL、RCR所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(45)

评论列表共有 0 条评论

立即
投稿
返回
顶部