








以下是文字提取部分,閱讀完畢的同學(xué)可以離開了
考慮這樣一個(gè)問題
我們想用;循環(huán);累加一組數(shù)據(jù)
顯然這段數(shù)據(jù);不在內(nèi)存中;
;無法做到;循環(huán)操作
但你有沒有想過
程序在運(yùn)行時(shí),會(huì)被;裝入內(nèi)存;
我們完全可以;借用這段內(nèi)存;來放數(shù)據(jù)
;dw;是定義字型數(shù)據(jù)
這里定義了八個(gè)字型數(shù)據(jù)
我們說過,cs存放代碼段的;段地址;
既然數(shù)據(jù);在代碼段中;
那么cs也必然是;數(shù)據(jù)的段地址;
它的;偏移地址;是0~E
;0,2,4,6,8,A,C,E;
下面我debug一下這個(gè)程序
紅線部分是我們;存放的數(shù)據(jù);
從IP=;0010;開始
是我們的;代碼區(qū)域;
現(xiàn)在存在;一個(gè)問題;
debug中我們;可以設(shè)置;CS:IP=1CA5:10
但可執(zhí)行文件.exe并;不知道程序入口;在哪里
exe文件只會(huì);從CS:IP處;開始執(zhí)行
你可以用start:;指定程序入口;
在;源程序一篇中;
我們說過end;代表程序的結(jié)束;
而這里end start指明了;程序的入口在start;
也就是說mov bx,0是程序的;第一條指令;
既然end可以指定程序的入口
那么如何知道;哪一條指令;是程序的入口
源程序一章講過
可執(zhí)行文件=;描述文件;+程序
;編譯和連接;后
end start將;被轉(zhuǎn)換為;入口地址
存儲(chǔ)在;描述信息中;
當(dāng)程序被;加載到內(nèi)存;后
;加載者;會(huì)從描述信息中讀取到入口地址
這個(gè)加載者就是前面我們說過的
;p1程序;
最后
;歡迎光臨小站:yuruotong.com;