首页 > 解决方案 > 如何在汇编语言中找到奇数?

问题描述

编写一个汇编语言程序,通过加倍和减半来将两个整数相乘。这是使用这种方法将 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 来测试奇数?

标签: assembly

解决方案


可以使用' 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

推荐阅读