7-3 匯編學(xué)習(xí)筆記(2)

2019_7_03

3.硬盤和顯卡訪問和控制

1)用戶程序的結(jié)構(gòu)

分段辅斟,段的匯編地址和段內(nèi)匯編地址

一個(gè)規(guī)范的程序一忱,應(yīng)包括代碼段听皿,數(shù)據(jù)段,附加段和堆棧段静檬。

段的化分和段與段之間的界限在程序加載到內(nèi)存之前就已經(jīng)準(zhǔn)備好了炭懊。

定義段的匯編指令

SECTION 段名稱
SEGMENT 段名稱

每個(gè)段要求給出名字,即段名稱拂檩,用來引用一個(gè)段侮腹。可以為任意名字稻励,只要不重復(fù)和混淆父阻。

一旦定義段,后面的內(nèi)容都屬于該段望抽,除非出現(xiàn)另一個(gè)段的定義
有時(shí)加矛,程序不以段定義語句開始,這時(shí)煤篙,這些內(nèi)容默認(rèn)自成一個(gè)段斟览。典型情況整個(gè)程序都沒有段定義語句,這時(shí)辑奈,整個(gè)程序自成一個(gè)段趣惠。

section data1 align = 16
    db 0x55
section data2 align = 16
    db 0xaa
section data3 align = 16
    db 0x99

一般情況:

section.段名稱.start

2)用戶程序頭部

加載器的編寫者及用戶程序的編寫者之間必須有一個(gè)協(xié)定,在用戶程序內(nèi)部的某固定位置包含一些基本結(jié)構(gòu)信息身害,每個(gè)用戶程序都必須把自己的情況放在這里,加載器也固定在這個(gè)位置讀取草戈。約定塌鸯,這個(gè)協(xié)定的地點(diǎn)放在程序開頭即用戶程序頭部唐片。

SECTION header vstart = 0

程序頭部需包含以下信息:

  • 用戶程序尺寸丙猬,即以字節(jié)為單位的大小

    • 程序的長(zhǎng)度取自程序中的一個(gè)標(biāo)號(hào)“program_end”,這是允許的费韭。在編譯階段茧球,編譯器將該標(biāo)號(hào)所代表的匯編地址填寫在這里。該標(biāo)號(hào)位于整個(gè)源程序的最后星持,從屬于段"trail"
    • program_end所代表的匯編地址抢埋,在數(shù)值上等于整個(gè)程序的長(zhǎng)度
  • 應(yīng)用程序的入口點(diǎn),包括段地址和偏移地址

    • 代碼段 code_1定義

    SECTION code_1 align=16 vstart=0
    包含了“vstart”子句,故標(biāo)號(hào)start所代表的匯編地址是相對(duì)于當(dāng)前代碼段code_1的起始位置揪垄,從0開始計(jì)算的

  • 段重定位表

    • 段的重定位是加載器的工作穷吮,它需要知道每個(gè)段在用戶程序的位置
    • 段重定位表的大小,或著說表項(xiàng)數(shù)是不正確的饥努。
    • 因?yàn)槎沃囟ㄎ槐砦挥趦蓚€(gè)標(biāo)號(hào)header_end和code_1_segment之間捡鱼,而且每個(gè)表項(xiàng)占用4字節(jié),故實(shí)際的表項(xiàng)數(shù)為

    (header_end – code_1_segment) / 4


這個(gè)值是在程序編譯階段計(jì)算的酷愧,先用兩個(gè)標(biāo)號(hào)所代表的匯編地址相減驾诈,再除以每個(gè)表項(xiàng)的長(zhǎng)度4。
緊接著表項(xiàng)數(shù)的溶浴,是實(shí)際的段重定位表乍迄,每個(gè)表項(xiàng)用偽指令dd聲明并初始化為1個(gè)雙字。


3.加載器的工作流程

1)初始化和決定加載位置

從大方面來說戳葵,加載器加在一個(gè)用戶程序就乓,需決定兩件事:

  • 內(nèi)存什么地方是空閑的,即從哪個(gè)物理內(nèi)存地址開始加載用戶程序
  • 用戶程序位于硬盤上的什么位置拱烁,它的起始邏輯扇區(qū)號(hào)是多少

app-lba_start equ 100

常熟用偽指令equ聲明的生蚁,意思是“等于”。本句意思是戏自,用標(biāo)號(hào) app_lba_start 來代表數(shù)值100邦投,今后,要用到100擅笔,不需要

mov al,100

而是

mov al,app_lba_start

常熟即程序運(yùn)行期間不變的數(shù)

和其他偽指令 db,dw,dd不同志衣,equ聲明的數(shù)值不占用任何匯編地址,也不在運(yùn)行時(shí)占用任何內(nèi)存位置猛们。僅僅代表一個(gè)數(shù)念脯。


加載用戶程序需確定一個(gè)內(nèi)存物理地址,這是偽指令dd聲明的弯淘,并初始化為 0x10000

phy_base dd 0x10000

要求:后邊的地址的最低四位必須是 0即加載的起始地址必須時(shí)16字節(jié)對(duì)齊的绿店。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市庐橙,隨后出現(xiàn)的幾起案子假勿,更是在濱河造成了極大的恐慌,老刑警劉巖态鳖,帶你破解...
    沈念sama閱讀 207,113評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件转培,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡浆竭,警方通過查閱死者的電腦和手機(jī)浸须,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評(píng)論 2 381
  • 文/潘曉璐 我一進(jìn)店門惨寿,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人羽戒,你說我怎么就攤上這事缤沦。” “怎么了易稠?”我有些...
    開封第一講書人閱讀 153,340評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵缸废,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我驶社,道長(zhǎng)企量,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,449評(píng)論 1 279
  • 正文 為了忘掉前任亡电,我火速辦了婚禮届巩,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘份乒。我一直安慰自己恕汇,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,445評(píng)論 5 374
  • 文/花漫 我一把揭開白布或辖。 她就那樣靜靜地躺著瘾英,像睡著了一般。 火紅的嫁衣襯著肌膚如雪颂暇。 梳的紋絲不亂的頭發(fā)上缺谴,一...
    開封第一講書人閱讀 49,166評(píng)論 1 284
  • 那天,我揣著相機(jī)與錄音耳鸯,去河邊找鬼湿蛔。 笑死,一個(gè)胖子當(dāng)著我的面吹牛县爬,可吹牛的內(nèi)容都是我干的阳啥。 我是一名探鬼主播,決...
    沈念sama閱讀 38,442評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼财喳,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼察迟!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起纲缓,我...
    開封第一講書人閱讀 37,105評(píng)論 0 261
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎喊废,沒想到半個(gè)月后祝高,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,601評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡污筷,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,066評(píng)論 2 325
  • 正文 我和宋清朗相戀三年工闺,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了乍赫。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,161評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡陆蟆,死狀恐怖雷厂,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情叠殷,我是刑警寧澤改鲫,帶...
    沈念sama閱讀 33,792評(píng)論 4 323
  • 正文 年R本政府宣布,位于F島的核電站林束,受9級(jí)特大地震影響像棘,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜壶冒,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,351評(píng)論 3 307
  • 文/蒙蒙 一缕题、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧胖腾,春花似錦烟零、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至性宏,卻和暖如春群井,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背毫胜。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評(píng)論 1 261
  • 我被黑心中介騙來泰國打工书斜, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人酵使。 一個(gè)月前我還...
    沈念sama閱讀 45,618評(píng)論 2 355
  • 正文 我出身青樓荐吉,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國和親口渔。 傳聞我的和親對(duì)象是個(gè)殘疾皇子样屠,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,916評(píng)論 2 344

推薦閱讀更多精彩內(nèi)容