joa*_*aoA 0 x86 assembly bitwise-operators x86-16
在我的学院关于8086 Assembly的文档中有以下示例:
TEST AL, 16 ; tests the 5th bit's state
Run Code Online (Sandbox Code Playgroud)
考虑到TEST指令的作用,这一点是否正确?它根据标记设置标记AL & 16.那怎么测试第5位?
注意:之前没有提到AL的值,正好在这里显示的内容,所以我认为这必须适用于一般情况.
16十进制是10000二进制.请注意,右边的第五位已设置,并且它是唯一的一位.
TEST是按位AND.按位AND运算的结果是两个原始值都1存在的1值.例如:
a = 1010 1110
b = 0110 1011
a AND b = 0010 1010
Run Code Online (Sandbox Code Playgroud)
假设a是AL和b是16:
AL = xxxx xxxx
16 = 0001 0000
AL AND 16 = 000y 0000
Run Code Online (Sandbox Code Playgroud)
结果可以是0,如果AL的第五位是0,或者它可以是16,如果第五位AL是1.如果使用指令结果的TEST指令是,例如,条件跳转,如JNZ,那么它实际上是"测试"是否设置了第五位AL并根据结果进行操作.
更准确地说,结果是间接使用的 - 只设置了各种标志.在这种情况下,ZF标志是相关的.根据按位AND运算的结果ZF,0如果结果是0,则设置为,1如果结果不是,则设置为0.
| 归档时间: |
|
| 查看次数: |
238 次 |
| 最近记录: |