位操作指令
1,逻辑运算指令
2,移位指令
3,循环移位指令
1,逻辑运算指令
说明:TEST相当于AND运算,但是不保存结果,仅影响标志。
对状态标志位的影响:除了NOT指令对状态标志位不产生影响外,AND,OR,XOR,TEST四条指令对状态标志位均有影响。这四条指令根据其各自的运算结果影响SF、ZF和PF状态标志位,同时将CF和OF清0,AF的值不确定。
1)逻辑“与”指令AND(logical AND)
格式: AND dst, src
操作:AND指令将目的操作数与源操作数进行逻辑“与”运算,并将结果送回目的操作数。
寻址方式:目的操作数可以是寄存器和存储器,源操作数可以是立即数、寄存器和存储器。但两者不能同时为存储器操作数。
例:
AND AL, 00001111H ;寄存器“与”立即数
AND CX, DI ;寄存器“与”寄存器
AND SI, MEM_NAME ;寄存器“与”存储器
AND ALPHA[DI],AX ;存储器“与”寄存器
AND [BX][SI], 0FFFEH ;存储器“与”立即数
用法:AND指令可以用于屏蔽某些不关心的位(与0相与),保留感兴趣的位(与1相与)。
例:将小写字母转化为大写字母
利用AND AL,11011111B
指令可以将AL中保存的小写字母转化为大写字母。而若AL中的字母本来就是大写字母,则该指令不改变其值。
;判断输入的字符是否为‘Y’或‘y’,即不区分大小写
MOV AH, 01H ;接受键盘输入的一个字符
INT 21H ;调用中断功能,功能号由AH指定
AND AL,11011111B ;屏蔽第五位,转换为大写字母
CMP AL,'Y' ;与Y比较
JE YES ;若相等则跳转到YES
......
YES:
......
2)测试指令TEST(TEST or non-destructive logical AND)
格式: TEST dst, drc
操作:把目的操作数与源操作数相与,但结果不送回目的操作数
。只将结果反映在标志位上。
寻址方式:目的操作数可以是寄存器和存储器,源操作数可以是立即数、寄存器和存储器。但两者不能同时为存储器操作数。
例:
TEST BH, 7 ;寄存器“与”立即数
TEST SI, BP