汇编代码,数据段中的剩余值

时间:2013-03-14 22:43:55

标签: assembly nasm x86-16

我的程序有点麻烦,我的程序应该将两个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.

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

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

待办事项

  add al, [num1]

代替。