【发布时间】:2016-10-07 20:55:59
【问题描述】:
我有这个计算阶乘的代码:
jmp start
; variables
num1 DD 0001h
start: mov cl, al
factorial_loop: ; cx = ax -> 1
mov al, cl
mul num1
; combine dx and ax into num1
mov num1, dx
shl num1, 16
add num1, ax
loop factorial_loop
mov ah, 0
int 16h
ret
在代码的开头,我将 num1 声明为 4 字节变量。 假设 num1 分为 2 个字节组:num1(左)和 num1(右)。 当我移动这些位时,它们不会从 num1(右)移动到 num1(左)。 我该如何解决这个问题?
【问题讨论】:
-
这是什么汇编程序?
-
我用的是emu8086 (x86)
-
即使这确实奏效了,这也不是您积累 32 位产品的方式。 8086 没有 32x32 => 32 乘法,只有 16x16 => 32。而且您在使用前只需设置 AX 的低 8 位。
标签: assembly bit-manipulation emu8086