我正在尝试使用寄存器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
任何建议都将不胜感激。
答案 0 :(得分:2)
指令mul有几种变体。与8位内存对象相乘时,结果为AL*[mem/8]
。在你的情况下,你乘以
0xE8 * 0xA = 0x910 or
232 * 10 = 2320
更改数据定义以获得所需结果:
data segment
zece dw 10
data ends