assembly - 如何在汇编语言中找到奇数?
问题描述
编写一个汇编语言程序,通过加倍和减半来将两个整数相乘。这是使用这种方法将 A 和 B 相乘的伪代码。
Multiply A and B and store result in C:
C = 0 ; Initialize to 0
while B is not equal to 0:
if B is odd then C = C+A ; Add copy of A (even number left)
A = 2*A ; Can be done quickly by shifting left
B = B/2 ; Can be done quickly by shifting right
我已经做了很多,我将如何使用 shl 来测试奇数?
解决方案
可以使用' shr
'指令;</p>
mov al, 0x10010010b
shr al, 1 ;CF = 0 even
mov al, 0x10010011b
shr al, 1 ;CF = 1 odd
jnb __lable ;jump if CF = 0
or
jb __lable ;jump if CF = 1