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