如何解决如何在带有if条件的汇编中编写mod?
如果有条件,我目前正在尝试将其编写为汇编中的一行。我该怎么办?
if iterator%2==1
解决方法
您正在测试除以2的余数。只看最低位!
test dword [iterator],1 ; Lowest bit has VALUE 1
jnz IsTrue
IsFalse:
...
IsTrue:
...
或使用bt
指令:
bt dword [iterator],0 ; Lowest bit has INDEX 0
jc IsTrue
IsFalse:
...
IsTrue:
...
不知道它是否可以在您的程序中出现,但是如果迭代器恰好是负数,则除以2的余数将永远不会为1。(请参见1201ProgramAlarm's comment)
如果您的说明if iterator%2==1
的精神是区分奇数和偶数,则建议的解决方案仍然适用。 IsTrue 匹配 IsOdd , IsFalse 匹配 IsEven 。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。