我的程序有点麻烦,我的程序应该将两个1字节整数相乘,重复添加。
BITS 16 ;Set code generation to 16 bit mode
ORG 0x0100 ;Set code start address to 0100h
SEGMENT .text ;Main code segment
Main:
mov CX,[num2]
mov AX,00
Sum:
add AX,[num1]
dec CX
cmp CX,0
je Terminate
jmp Sum
Terminate:
mov DL,AL
mov AX,4C00H
int 21H
SEGMENT .data ;Initialised data segment
num1 db 4
num2 db 3
问题在于,当我调试代码时,初始值(num2)被输入到CX中,但是当将num1输入AX时,仍有一些来自num2的剩余数据。
EG。Debug
从图像中可以看出,放入CX(3)的值工作正常,但不是将4放入AX,而是放304.
提前感谢您的帮助。
答案 0 :(得分:1)
那是因为你将16位值加载到AX中,但你的num1值是一个字节。
待办事项
add al, [num1]
代替。