彙編臨時小結

個人總結用的, 看了被誤導不要怪我。

在寫彙編程序時, 經常看到最前面有這麼一句“org 07c00h”。 這個東西它的意思是,該段代碼在0000:0x7c00處執行。

 

看示例代碼:

 

 

如果這段代碼在0x7c00處執行, 但最前面改成“org0100h”有沒有問題呢?

首先看jmp指令, 它的計算方法是跳轉標號與當前標號的差加至當前IP, 所以沒有問題。

call指令和jmp指令差不多,就不說了。

 

但注意到, 這個程序是用來打印“hello wupeng”這個字符串的, 字符串偏移地址保存在bp中, 通過ES:BP尋址。顯然,若ScreenMsg標號的地址不是其加載至內存的實際地址,尋址字符串時是讀不到正確的字符串的。

 

多說一句: 實模式下代碼好像就一個段呢,默認都是0000, 保護模式下段基址是32位的,實模式下實際物理地址可以直接拿來當保護模式中的段基址。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章