2011-11-01 165 views
1

我正在通過一些間接尋址問題,我不知道如何正確計數字節。我們給出了這樣的代碼:彙編語言間接尋址

.data 
v1 db 9,7,5,3,1 
v2 dw 0 
v3 dw -1 
v4 db '$' 

mov dx,offset v2 
mov ah,9 
int 21h 

問題問多少字節將這些指令被執行後,已被寫入到標準輸出設備,答案是4

對於這個問題,我設置它像這樣:

offset 0 1 2 3 4 5 6 7 8 9 
data 09 07 05 03 01 00 00 FF FF 24 

我們正在五成DX,寫兩個字節00 05.我們然後設置DOS代碼寫出來,所以我們輸出寫出兩個字節使4?如果我的邏輯錯誤,請糾正我。

回答

6

DOS函數9從DX中的偏移處開始寫入,直到達到$。您已將V2的偏移量加載到DX中。您已將V2和V3分別定義爲兩個字節(其中沒有一個包含「$」),後面是V4(包含$)。因此,它寫入V2和V3的四個字節,然後停止。

編輯:我應該是相反添加到標題的問題,沒有你實際上已經顯示的代碼做任何間接尋址(雖然DOS功能無疑9不使用間接尋址,從裝載到dx地址讀取) 。

+0

再次感謝您的幫助。 – raphnguyen