当前位置: 代码迷 >> 汇编语言 >> 有没有一个授命就能判断从某个内存开始第N位是0还是1
  详细解决方案

有没有一个授命就能判断从某个内存开始第N位是0还是1

热度:1347   发布时间:2013-02-26 00:00:00.0
有没有一个指令就能判断从某个内存开始第N位是0还是1
本帖最后由 zjcqoo 于 2012-10-26 16:32:50 编辑
想用汇编写一个类似C++里的bitset的功能,检测mem开始第N比特的状态。找到一个bt指令,但长度N有限制,只能16以内。所以必须先把X = N/8 (SHR N,3), Y = N % 8 (AND N,7),再bt [mem+X], Y。

感觉很累赘。能不能一个指令搞定的?
------解决方案--------------------------------------------------------
看了下 bt 指令的说明,没有这样的限制吧:
The offset operand then selects a bit position within the range -2^31 to 2^31 - 1 for a register offset and 0 to 31 for an immediate offs. 
要范围大,用寄存器来指定偏移而非立即数。
  相关解决方案