2013-01-20 40 views
1

爲什麼該指令109似乎即使在運行時沒有被指令指針實際達到時也被執行。據我所知(C++背景),處理器一次一個地按順序處理指令1。地址100,102,105和107首先執行,那麼INT 21如何在下一行(尚未聲明)之前顯示內存位置109的內容?使用INT顯示

(假設我們進入調試上的這些指令)

100 MOV AH,09 
102 Dx,109 
105 INT 21 
107 JMP 100 
109 DB 'Hello World', '$' <Enter> <Enter> 

回答

6

DB不是指令,這是一個僞指令又名彙編指令。它告訴彙編程序在當前地址存儲以下數據字節。

+0

因此,你告訴我,當即時通訊從命令提示符使用debug.exe,並輸入類似的東西,-100一個數據庫'我的名字是保羅R','$',,,只要我按下輸入,它會自動更新地址100並把我的字符串放在那裏? – WantIt

+0

很多,是的 - 它只是做一個彙編程序可以做的相同的事情。 –

2

當程序組裝,彙編器會把你的字符串在正確的地址。處理器可以從它未執行的地址讀取。指令指針只有一個指針,你可以從大於指令指針的地址讀取而沒有問題。畢竟內存是「隨機訪問」的。

沒有「聲明」。只有地址。一些彙編程序有標籤,但這些標籤由彙編器翻譯成彙編後的地址。