打印阵列内容时出现空白字符

时间:2013-01-07 20:58:39

标签: arrays assembly x86 dos

我在编写数组内容时遇到问题。在下面的代码中,我尝试在屏幕上打印它。但是当论据量很小时,我并不总能看到所有内容。有时在前n个参数的位置是空白。但是当有更多的论据时,所有32个都显示出来。 (数组是128个字节)

mov     ax,32
mov     cx,ax
xor     si,si
pet:
    mov     dl,tablica[si]
    mov     ah,2h
    int     21h
    inc     si
loop pet

这是数组的声明。当然ds由dane seg初始化。

dane    segment
    tablica     db  128 dup('$')
dane    ends

1 个答案:

答案 0 :(得分:0)

我没有看到那里的错误。但另一方面,这不是整个计划。

您只打印大小为128字节的32字节数组。这对调试没有帮助,因为你不能说数组的哪些字节被打印出来。出于调试目的,我建议您用可以让您知道哪些字节专门打印的内容替换tablica db 128 dup('$'),例如:

tablica db 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'

然后你得到abcdefghijklmnopqrstuvwxyzABCDEF作为输出?如果没有,那么你可能在打印之前在你的代码中的某个地方损坏了你的数组,或者你的ds指向了错误的地方,或者你已经挂钩或损坏了int 21h中断(如果你这样做,这是非常不可能的)不要在你的代码中处理中断向量。)