0

私のプログラムで少し問題があります。私のプログラムは、繰り返し加算を使用して、2 つの 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) は正常に機能しますが、AX に 4 を入れる代わりに 304 を入れています。

事前にご協力いただきありがとうございます。

4

1 に答える 1

1

これは、16 ビット値を AX にロードするが、num1 値が 1 バイトであるためです。

行う

  add al, [num1]

代わりは。

于 2013-03-14T22:53:09.997 に答える