8086-逻辑运算指令

六.逻辑运算指令

OP源:8/16位通用寄存器,存储器操作数或立即数

OP目:通用寄存器和存储器操作数

除"非"运算外,其余指令都会使OF=CF=0

1.逻辑与运算

AND 与

可以用来改变特定的位数,或者测试某位的内容

2.逻辑或运算 (有1出1 全0出0)

格式: OR OP目, OP源

功能:对两个操作数进行或运算,结果回送到OP目

说明:可用于组合某个字,或将某位置1

例:

MOV AX, 8888H;

OR AX, 00FFH; AX=88FFHH,将AX的低8位置1,其它位不变.即对应1位置1,对应0位则不变.

例:将AL中的非组合BCD码转换成ASCII码.

OR AL, 30H

3.逻辑异或运算指令 (相同为0 不同为1)

格式:XOR OP目, OP源

功能:对两个操作数进行异或运算,结果回送到OP目.

说明:用于对某个二进制数按位取反或对某寄存器清0

例:XOR AL, 0FFFH; AL数据按位求反

例:MOV AX, 3333H

XOR AX, 00FFH;

结果:AX=33CCH,AH数据保持不变,对AL数据求反.即对应0不变,对应1求反.

例: 寄存器清0(有4条指令可达到AX清0目的):

XOR AL, AL; AL清0

MOV AX, 0

SUB AX, AX

AND AX,0

4.逻辑非运算指令

格式:NOT OP

功能:对操作数逐位取反后回送到远处

例:

MOV AX, 1

NOT AX; AX=0FFFEH

注意:

(1)该指令只是执行求反操作,而不是求反码指令,对符号位也求反

(2)不影响标志位

5.测试指令

格式:TEST OP目, OP源

功能:将OP目与OP源进行与运算,不回送结果,只根据结果置标志位

说明:主要用来检测目的操作数的某些位是1或0,根据测试结果,决定转向

例:测试AX中的D15位是1还是0

TEST AX, 8000H; 若D15为1, ZF=0,否则ZF=1

总结:

(1)AND OR XOR TEST 均影响标志, CF=0,OF=0,而PF,SF,ZF由结果而定,AF无意义. 此类指令可用来清CF,常用于拆字,拼字.

(2)NOT 不影响标志

例题 

猜你喜欢

转载自blog.csdn.net/m0_59069134/article/details/126908475