打印包含8086程序集中的数组

时间:2014-07-12 21:26:59

标签: assembly x86-16

我正在尝试打印这个数组。以下是我的代码。但它打印了一些奇怪的字符9次(如:εεεεεεεε)...请告诉我有什么问题?

.data
    arr db 2,3,4,5,6,7,8,9,0

.code
Main Proc

    mov cx, 9
    l1:
    lea si, arr
    mov bl, arr[si]
    mov dl, bl

    mov ah, 2
    int 21h
    inc si
    loop l1

1 个答案:

答案 0 :(得分:0)

您需要将要显示的 ASCII字符放入dl。如何将ASCII字符放入程序中取决于您的汇编程序,最简单的方法就是自己计算数值。
至于实际代码,你的循环标签l1处于错误的位置,并且它周围的一些代码是多余的。您可以编写这样的程序:

.data
    arr db 50,51,52,53,54,55,56,57,48

.code
Main Proc

    mov cx, 9
    #wrong position l1:
    lea si, arr
    #redundant mov bl, arr[si]
l1:
    mov dl, [si]
    mov ah, 2   #not sure if this could be moved in front of the loop, check if syscall clobbers ah
    int 21h
    inc si
    loop l1