1
我需要反汇编语言中的字符串数组。以下是我的代码。在汇编语言中反向打印数组
proc reverseAr
mov cl,count
mov si,offset Ar
mov si,3
write2:
mov dl,Ar[si]
mov ah,02h
int 21h
dec si
loop write2
ret
endp
但是这并没有给出答案。有谁能告诉我什么是si的确切含义?它不是阵列位置的索引吗?
在分段内存模型(该程序似乎意在运行),'偏移AR'会在'Ar'所在的段内为你提供'Ar'的16位偏移量。如果你从'[si]'中读取,你将从'[ds:si]'读取数据,即从'ds'指定的段中由'si'指定的偏移量。顺便说一下,'loop'递减'cx',而不仅仅是'cl'。所以你应该使用'movzx cx,byte ptr count'而不是'mov cl,count'。 – Michael
有一个问题,就是在你将数组'Ar'的地址写入'si'之后,你用'3'覆盖了它。这可能不是你的意图。加载数组的基地址后,您希望将数组的长度添加到'si'。在这种情况下,我假定一切都在'ds'指向的段中。如果不是,那么它会变得稍微复杂一些。 – lurker