我从键盘读取一个数字并将其存储在名为 buf 的数组中。我还在 len 变量中保存了数组的长度。
我现在正在尝试计算该数组中的数字。我的代码是这样的:
xor si, si
xor bx, bx ; made them 0
start_for:
cmp si, len
je end_for
mul bx, 10 ; I think here is the problem!
mov al, buff[si]
sub al, '0'
add bx, ax
inc si
jmp start_for
end_for:
问题是什么?
我在调试时注意到“mul bx, 10”行没有效果。
最佳答案
在add bx, ax
行中,高字节ah
似乎尚未定义。我建议将 ax
或 ah
设置为 0
。
此外,i86 可能不会将“mul”产品放在您认为的位置。即使使用 BX 操作数,该乘积也可能处于 DX:AX 中。建议在代码中交换 AX 和 BX 的使用。让 AX 为您的最终产品,bx 为您的个位数值。
关于arrays - 计算汇编中数组元素的数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16696649/