0

我的程序遇到了一些小问题,我的程序应该使用重复加法将两个 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的剩余数据。

例如。调试

正如您从图像中看到的那样,放入 CX (3) 的值可以正常工作,但不是将 4 放入 AX,而是放入 304。

提前感谢您的帮助。

4

1 回答 1

1

那是因为您将 16 位值加载到 AX 中,但您的 num1 值是一个字节。

  add al, [num1]

反而。

于 2013-03-14T22:53:09.997 回答