程序集8086中的乘法错误结果

时间:2014-12-09 12:57:07

标签: assembly masm x86-16 masm32 tasm

我正在尝试使用寄存器AX进行乘法运算。我有ax = 1000(3E8h),我想将它乘以10.我在执行mul命令后得到这个结果:910h,即2320(基数10)。我应该得到2710h这是10000(基数10)。

这是我的代码:

assume cs:code, ds:data
data segment
    zece db 10
data ends
code segment
start:
    mov ax, data
    mov ds, ax
    mov dx, 0
    mov ax, 3E8h
    mul zece
    mov ax, 4C00h
    int 21h
code ends
end start

任何建议都将不胜感激。

1 个答案:

答案 0 :(得分:2)

指令mul有几种变体。与8位内存对象相乘时,结果为AL*[mem/8]。在你的情况下,你乘以

0xE8 * 0xA = 0x910  or
232 * 10 = 2320

更改数据定义以获得所需结果:

data segment
    zece dw 10
data ends