逻辑运算与移位指令(重点)

逻辑运算与位移指令

一,逻辑运算指令

实现与、或、非、异或、测试等逻辑运算。

操作数的搭配关系同算术运算。

除逻辑“非”指令不影响标志外,其他逻辑运算指-令均影响标志SF、ZF和PF,而OF和CF一定被置0,AF不确定。

功能 助记符格式 功能
逻辑“与” AND d,s 用于某些位清0
逻辑"或" OR d,s 用于某些位置1
逻辑"异或" XOR d,s 用于某些位取反
逻辑"非" NOT d 取反
测试 TEST d,s (d)︿(s)

或许对测试指令不熟悉,下面着重说一下TEST 指令:

格式:TEST d,s

功能:(d)︿(s)

说明:将目的操作数d 与源操作数s 按位相“与”,只影响标志位不回送结果,常用于测试某些位是0或1。

ZF(零标志位) 用来反映运算结果是否为0,如果运算结果为0,则ZF=1,否则ZF=0例:测试AL的最高位是0/1 ?
TEST AL,80H
若SF=1,则AL最高位为1;
若SF=0,则AL最高位为0;
//SF(符号标志位)来反映运算结果正负的符号位,运算结果为正数时,SF=0,否则SF=1。

若ZF=1,则AL最高位为0;
若ZF=0,则AL最高位为1;
//ZF(零标志位) 用来反映运算结果是否为0,如果运算结果为0,则ZF=1,否则ZF=0

二,位移运算指令

逻辑运算与移位指令(重点)

1,逻辑左移指令 SHL

格式:SHL d,count
功能:逻辑左移
说明:将目的操作数d 左移count 位,右边补0,左边入CF。

逻辑左移1位相当于无符号数乘以2 !

若将BX 乘以 3 该如何实现呢?

MOV AX,BX
SHL BX,1
ADD BX,AX

2,逻辑右移指令 SHR

格式:SHR d,count
功能:逻辑右移
说明:将目的操作数d 右移count 位,左边补0,右边入CF

逻辑右移1位相当于无符号数除以2 !

3、算术左移指令 SAL

格式:SAL d,count
功能:同逻辑左移完全相同

4、算术右移指令SAR

格式:SAR d,count
功能:算术右移
说明:将操作数d的内容右移,左边不变,右边移入CF中

算术右移1位相当于有符号数除以2 !

5、循环左移指令ROL

格式:ROL d,count
功能:循环左移
说明:将操作数d 的内容左移,最高位循环移入最低位,同时移入CF

6、循环右移指令ROR

格式: ROR d,count
功能:循环右移
说明:将操作数d 的内容右移,最低位循环移入最高位,同时移入CF

上一篇:关系运算符重载(>,<,==,!=)


下一篇:【Python】Python 实现破零(ZF)和最小均方误差(MMSE)信道均衡