我試圖找出一個MBR代碼(在實模式下的16位彙編代碼),我準備好這些行:使用BYTE PTR確定地址大小使用數據段
mov si,0x7cd8
lods al,BYTE PTR ds:[si]
中會發生什麼實時,是物理地址是'D8' - 我怎麼知道這一點?因爲這用於加載字符串並將其打印到字符串。這是我在運行這個程序時能夠看到的第一件事,而這些是代碼的第一行。
我的問題是關於第二行,是我得到的物理地址是由於計算是爲了獲得物理地址(段* 16 +偏移量)還是BYTE PTR告訴SI地址將會是BYTE類型,我們將讀取的數據類型是字節類型?
該類型並不重要,這是因爲'segment * 16 + offset'。物理地址爲'0x7cd8',其中'ds = 0',否則它將不起作用;} – Jester
只有在目標大小不明顯時才需要「BYTE PTR」。你的'lods ...'通常寫成'lodsb'。最後,'ds'無論如何都是'lodsxx'的默認段寄存器,所以段覆蓋是不必要的。 –