在Assembly中单步调试数组

时间:2015-02-09 14:12:53

标签: assembly x86

我在数据段中声明了一个未初始化的数组,我正在尝试将用户数字输入并存储在数组中。这是代码片段

arr          db          5 DUP(?), '$'

MOV CX,5

L1:
     LEA SI,X

     MOV AH,01
     INT 21H

     MOV [SI], AL
     INC SI
     LOOP L1

我增加SI的原因是因为我想让它在用户输入值时转到下一个索引。在用户输入后我查看了数组的内容,它完成的所有内容都覆盖了前一个输入,其余的都未初始化。我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

与往常一样,使用调试器单步执行代码并查看出错的位置。在这种情况下,很明显,循环回L1将重新加载SI地址X,因此它将始终存储到第一个项目。初始化后移动标签:

arr          db          5 DUP(?), '$'

     MOV CX,5
     LEA SI,X

L1:

     MOV AH,01
     INT 21H

     MOV [SI], AL
     INC SI
     LOOP L1