chapter 4——程序從編譯到執(zhí)行的全部過程

匯編源程序

匯編源程序示例

mov ax,4c00H
int 21H
這兩條指令可以實現(xiàn)程序返回的功能。

與結(jié)束相關(guān)的代碼
使用edit命令編寫匯編源程序

編譯

使用微軟的masm5.0匯編編譯器再悼,文件名為masm.exe乃戈。

masm編譯源程序的過程

在編譯的過程中,我們提供了一個輸入话告,即源程序文件。最多可以得到3個輸出:目標文件(.obj)卵慰、列表文件(.Ist)沙郭、交叉引用文件(.erf),這3個輸出文件中裳朋,目標文件是我們最終要得到的結(jié)果病线,而另外兩個只是中間結(jié)果,可以讓編譯器忽略對它們的生成鲤嫡,暫不討論這兩個中間文件送挑,直接enter跳過即可。

連接:將目標文件1.obj 連接為 1.exe

使用微軟的 Overlay Linker3.60 連接器暖眼,文件名為 link.exe惕耕。

連接過程

生成中間結(jié)果映像文件(.map),忽略诫肠。 如果程序調(diào)用了某一個庫文件赡突,則需要輸入庫文件的名稱,此處忽略区赵,最終得到可執(zhí)行文件1.exe惭缰,并有一個警告:無棧段,亦忽略笼才。

連接的作用:

  • 當源程序很大漱受,拆分編譯,再用連接程序把它們連接到一起骡送,生成一個可執(zhí)行文件
  • 當程序調(diào)用了庫文件的某個子程序昂羡,需要將庫文件和目標文件連接到一起,再生成可執(zhí)行文件
  • 目標文件是存有機器碼的文件摔踱,但有些內(nèi)容還不能直接用來生成可執(zhí)行文件虐先,需要連接程序進行處理。

執(zhí)行

執(zhí)行

無輸出信息派敷,程序只是對寄存器進行了一些簡單的運算操作蛹批。

操作系統(tǒng)的外殼(shell程序)

(1)在DOS 中直接執(zhí)行1.exe時,是正在運行的command篮愉,將 1.exe中的程序加載入內(nèi)存;
(2) command設置CPU 的CS:IP指向程序的第一條指令(即程序的入口)腐芍,從而使程序得以運行;
(3)程序運行結(jié)束后,返回到command 中试躏,CPU繼續(xù)運行command猪勇。

匯編程序從源程序到執(zhí)行的完整過程

使用debug跟蹤程序的執(zhí)行過程

為了觀察程序的運行過程,可以使用Debug颠蕴。 Debug 可以將程序加載入內(nèi)存泣刹,設置CS:IP指向程序的入口助析,但Debug并不放棄對CPU的控制,這樣就可以使用Debug的相關(guān)命令來單步執(zhí)行程序椅您,查看每一條指令的執(zhí)行結(jié)果貌笨。

debug模式下載入程序

CX(count)存放的是程序的長度:機器碼共有15個字節(jié)。
CS = SA+10H = 075AH+10H = 076AH

程序加載進內(nèi)存的過程

可以直接在debug模式下用 U命令查看PSP處的內(nèi)容:頭兩個字節(jié)是 CD20襟沮。


PSP處的內(nèi)容
u命令查看CS:IP處的代碼
P命令執(zhí)行最后一條代碼,程序結(jié)束昌腰,返回到debug程序

使用Q命令退出Debug开伏, 將返回到command中,因為Debug是command加載運行的遭商。在DOS中用“debug 1.exe”運行Debug對1.exe 進行跟蹤時固灵,程序加載的順序是:command加載Debug,Debug 加載1.exe劫流。 返回的順序是:從1.exe 中的程序返回到Debug巫玻,從Debug返回到command。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末祠汇,一起剝皮案震驚了整個濱河市仍秤,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌可很,老刑警劉巖诗力,帶你破解...
    沈念sama閱讀 221,548評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異我抠,居然都是意外死亡苇本,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,497評論 3 399
  • 文/潘曉璐 我一進店門菜拓,熙熙樓的掌柜王于貴愁眉苦臉地迎上來瓣窄,“玉大人,你說我怎么就攤上這事纳鼎“诚Γ” “怎么了?”我有些...
    開封第一講書人閱讀 167,990評論 0 360
  • 文/不壞的土叔 我叫張陵贱鄙,是天一觀的道長啥么。 經(jīng)常有香客問我,道長贰逾,這世上最難降的妖魔是什么悬荣? 我笑而不...
    開封第一講書人閱讀 59,618評論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮疙剑,結(jié)果婚禮上氯迂,老公的妹妹穿的比我還像新娘践叠。我一直安慰自己,他們只是感情好嚼蚀,可當我...
    茶點故事閱讀 68,618評論 6 397
  • 文/花漫 我一把揭開白布禁灼。 她就那樣靜靜地躺著,像睡著了一般轿曙。 火紅的嫁衣襯著肌膚如雪弄捕。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,246評論 1 308
  • 那天导帝,我揣著相機與錄音守谓,去河邊找鬼。 笑死您单,一個胖子當著我的面吹牛斋荞,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播虐秦,決...
    沈念sama閱讀 40,819評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼平酿,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了悦陋?” 一聲冷哼從身側(cè)響起蜈彼,我...
    開封第一講書人閱讀 39,725評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎俺驶,沒想到半個月后柳刮,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,268評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡痒钝,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,356評論 3 340
  • 正文 我和宋清朗相戀三年秉颗,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片送矩。...
    茶點故事閱讀 40,488評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡蚕甥,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出栋荸,到底是詐尸還是另有隱情菇怀,我是刑警寧澤,帶...
    沈念sama閱讀 36,181評論 5 350
  • 正文 年R本政府宣布晌块,位于F島的核電站爱沟,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏匆背。R本人自食惡果不足惜呼伸,卻給世界環(huán)境...
    茶點故事閱讀 41,862評論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望钝尸。 院中可真熱鬧括享,春花似錦搂根、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,331評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至娇斩,卻和暖如春仁卷,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背犬第。 一陣腳步聲響...
    開封第一講書人閱讀 33,445評論 1 272
  • 我被黑心中介騙來泰國打工锦积, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人瓶殃。 一個月前我還...
    沈念sama閱讀 48,897評論 3 376
  • 正文 我出身青樓,卻偏偏與公主長得像副签,于是被迫代替她去往敵國和親遥椿。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,500評論 2 359