彙編 定義過程時,near和far有什麼作用?
答:這個主要和兩個指令有關call ret
call 一個near過程,隻把偏移位址壓入堆棧,過程傳回時用retn傳回
call一個far過程,把偏移位址和段位址入棧,過程傳回時用retf傳回
在過程中的ret指令根據near和far的不同,分别編譯成retn和 retf
retn和retf的機器碼是不同的,你也可以不定義過程,直接用retn和retf
如果你的子程式和主程式在同一個代碼段,則使用near,調用發生後,主程式堆棧中隻壓入ip值;
如果你的子程式和主程式不在一個代碼段,則使用far,調用發生後,主程式堆棧中将壓入cs、ip值;
2.near定義的标号表示段内近跳轉,近調用的位址
far定義的标号表示段間遠跳轉,遠調用的位址
near的時候,位址是16位的,far的時候是32位的(段位址+偏移位址)