时间:2021-05-19
AND 指令在两个操作数的对应位之间进行(按位)逻辑与(AND)操作,并将结果存放在目标操作数中:
AND destination,source
下列是被允许的操作数组合,但是立即操作数不能超过 32 位:
AND reg, reg
AND reg, mem
AND reg, imm
AND mem, reg
AND mem, imm
操作数可以是 8 位、16 位、32 位和 64 位,但是两个操作数必须是同样大小。两个操作数的每一对对应位都遵循如下操作原则:如果两个位都是 1,则结果位等于 1;否则结果位等于 0。
下表展示了两个输入位 X 和 Y,第三列是表达式 X^Y 的值:
X Y X^Y 0 0 0 0 1 0 1 0 0 1 1 1
AND 指令可以清除一个操作数中的 1 个位或多个位,同时又不影响其他位。这个技术就称为位屏蔽,就像在粉刷房子时,用遮盖胶带把不用粉刷的地方(如窗户)盖起来。
例如,假设要将一个控制字节从 AL 寄存器复制到硬件设备。并且当控制字节的位 0 和位 3 等于 0 时,该设备复位。那么,如果想要在不修改 AL 其他位的条件下,复位设备,可以用下面的指令:
and AL, 11110110b ;清除位 0 和位 3 ,其他位不变
如,设 AL 初始化为二进制数 1010 1110,将其与 1111 0110 进行 AND 操作后,AL 等于 1010 0110:
mov al,10101110b
and al, 11110110b ;AL 中的结果 = 1010 0110
标志位
AND 指令总是清除溢出和进位标志位,并根据目标操作数的值来修改符号标志位、零标志位和奇偶标志位。比如,下面指令的结果存放在 EAX 寄存器,假设其值为 0。在这种情况下,零标志位就会置 1:
and eax,1Fh
将字符转换为大写
AND 指令提供了一种简单的方法将字符从小写转换为大写。如果对比大写 A 和小写 a 的 ASCII 码,就会发现只有位 5 不同:
0 1 1 0 0 0 0 1 = 61h ('a')
0 1 0 0 0 0 0 1 = 41h ('A')
其他的字母字符也是同样的关系。把任何一个字符与二进制数 1101 1111 进行 AND,则除位 5 外的所有位都保持不变,而位 5 清 0。下例中,数组中所有字符都转换为大写:
.data array BYTE 50 DUP(?) .code mov ecx,LENGTHOF array mov esi,OFFSET
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
汇编语言是用助记符代替操作码、地址符号代替操作数的面向机器的语言,汇编语言(AssemblyLanguage)是任何一种用于电子计算机、微处理器、微控制器或其他
JavaScript中包括3个逻辑运算符,如下:运算符说明&&逻辑与,只有当两个操作数的值都为true时,a&&b的值才为true||逻辑或,只要两个操作数
逻辑或运算符:||语法logical-or-expression||logical-and-expression备注如果任一操作数或两个操作数为true,则逻辑
汇编语言是一种工具程序设计语言,用于将汇编语言源程序转换为机器语言。 在汇编语言中,用助记符(Mnemonics)代替机器指令的操作码,用地址符号(Symbo
32位模式下,MUL(无符号数乘法)指令有三种类型:第一种执行8位操作数与AL寄存器的乘法;第二种执行16位操作数与AX寄存器的乘法;第三种执行32位操作数与E