汇编语言通用数据处理指令——位操作类指令
Posted BkbK-
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了汇编语言通用数据处理指令——位操作类指令相关的知识,希望对你有一定的参考价值。
通用数据处理指令——位操作类指令
文章目录
一、逻辑运算指令
- 逻辑与指令 AND
- 逻辑或指令 OR
- 逻辑非指令 NOT
- 逻辑异或指令 XOR
- 测试指令 TEST
除NOT指令不影响标志外,其他逻辑指令
►使OF=CF=0
►根据结果按定义影响ZF、SF和PF
1.逻辑与指令AND
- 逻辑与(逻辑乘)运算规则
►两位都是逻辑1,则结果是1;否则,结果是0 - 逻辑与指令AND
►按位进行逻辑与,结果返回目的操作数
AND reg,imm/reg/mem
;reg←reg & imm/reg/mem
AND mem,imm/reg
;mem←mem & imm/reg
2.逻辑或指令OR
- 逻辑或(逻辑加)运算规则
►两位都是逻辑0,则结果是0;否则,结果是1 - 逻辑或指令OR
►按位进行逻辑或,结果返回目的操作数
OR reg,imm/reg/mem
;reg←reg | imm/reg/mem
OR mem,imm/reg
;mem←mem | imm/reg
3.逻辑非指令NOT
- 逻辑非(逻辑反)运算规则:
►原来为0的位变成1,原来为1的位变成0 - 逻辑非指令NOT:
►按位进行逻辑非,结果返回操作数
NOT reg/mem
;reg/mem←~reg/mem
NOT指令不影响状态标志位
4.逻辑异或指令XOR
- 逻辑异或(逻辑半加)运算规则:
►两位不同(相异),则结果是1;否则,结果是0 - 逻辑异或指令XOR:
►按位进行逻辑异或,结果返回目的操作数
XOR reg,imm/reg/mem
;reg←reg imm/reg/mem
XOR mem,imm/reg
;mem←mem imm/reg
5.逻辑运算的应用
-
逻辑运算的屏蔽作用
-
AND复位某些位(同0与),不影响其他(同1与)
and bl,11110110b ;BL中D0和D3清0,其余位不变
-
OR置位某些位(同1或),不影响其他(同0或)
or bl,00001001b ;BL中D0和D3置1,其余位不变
-
XOR求反某些位(同1异或),不影响其他(同0异或)
xor bl,00001001b ;BL中D0和D3求反,其余位不变
-
-
逻辑运算用于大小写转换
大写=小写
AND DFH
小写=大写OR 20H
二、移位指令
- 逻辑左移指令 SHL
- 逻辑右移指令 SHR
- 算术左移指令 SAL
- 算术右移指令 SAR
- 不带进位循环左移指令 ROL
- 不带进位循环右移指令 ROR
- 带进位循环左移指令 RCL
- 带进位循环右移指令 RCR
1.左移位指令SHL / SAL
各位同时左移,最低位补0,最高位进入CF
SHL reg/mem,i8/CL
SAL reg/mem,i8/CL
2.逻辑右移指令SHR
各位同时右移,最高位补0,最低位进入CF
SHR reg/mem,i8/CL
3.算术右移指令SAR
各位同时右移,最高位不变,最低位进入CF
SAR reg/mem,i8/CL
4.不带进位循环左移指令ROL
各位同时左移,最高位循环进入最低位和CF
ROL reg/mem,i8/CL
5.不带进位循环右移指令ROR
各位同时右移,最低位进入最高位和CF
ROR reg/mem,i8/CL
6.带进位循环左移指令RCL
CF作为附加位,各位同时左移,CF进入最低位
RCL reg/mem,i8/CL
7.带进位循环右移指令RCR
CF作为附加位,各位同时右移,最低位进入CF
RCR reg/mem,i8/CL
以上是关于汇编语言通用数据处理指令——位操作类指令的主要内容,如果未能解决你的问题,请参考以下文章