Que*_*tin 2 x86 assembly inline-assembly visual-studio-2010
我正在尝试访问特定位并修改它。我已将 0x01ABCDEF(十六进制值)移至 ecx 中,并希望能够检查特定位置的位值。例如,我必须取 0x01ABCDEF (0xEF) 的字节 0 检查位置 7 处的位是否为 1,将中间 4 位设置为 1,其余设置为 0。
在 x86 下,最简单的解决方案是使用位操作指令,例如 BT(位测试)、BTC(位测试和补码)、BTR(位测试和重置)和 BTS(位测试和设置)。
位测试示例:
mov dl, 7 //test 7th bit
bt ecx, edx //test 7th bit in register ecx
Run Code Online (Sandbox Code Playgroud)
请记住:仅使用寄存器 edx 中的最后 5 位。
或者
bt ecx, 7
Run Code Online (Sandbox Code Playgroud)
在这两种情况下,结果都存储在进位标志中。