0

我在写入数组内容时遇到问题。在下面的代码中,我尝试在屏幕上打印它。但是,当论点数量很少时,我并不总是能看到所有内容。有时,前 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
4

1 回答 1

0

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

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

tablica db 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'

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

于 2013-01-07T21:47:14.857 回答