一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

計(jì)算機(jī)啟動(dòng)的細(xì)節(jié)與匯編Demo的拆解2

jf_78858299 ? 來(lái)源:酸奶蓋子 硬件底褲 ? 作者:酸奶蓋子 硬件底褲 ? 2023-02-01 15:53 ? 次閱讀

第2行為將BootMessage復(fù)制給AX。

BP為指針寄存器,第3行將指針寄存器指向字符串起始地址。指針寄存器不能被直接操作,所以依靠AX寄存器進(jìn)行值傳遞。

CX為計(jì)數(shù)器寄存器,11為“Helloworld!”字符串長(zhǎng)度。

mov  ax,01301h    ;AH  = 13,AL = 01h

該行是本函數(shù)的核心,是向屏幕輸出字符的關(guān)鍵。

BIOS通過(guò)軟件中斷接收?qǐng)?zhí)行功能的請(qǐng)求。用nnh調(diào)用特定類型的中斷服務(wù)函數(shù)。

例如10h用于顯示服務(wù) - 由BIOS或操作系統(tǒng)設(shè)定以供軟件調(diào)用:

AH=00h 設(shè)定顯示模式;

AH=01h 設(shè)定游標(biāo)形態(tài);

AH=02h 設(shè)置游標(biāo)位置;

AH=03h 獲取光標(biāo)位置與形態(tài);

AH=04h 獲取光標(biāo)位置;

AH=05h 設(shè)置顯示頁(yè);

AH=06h 清除或滾動(dòng)欄畫面(上);

AH=07h 清除或滾動(dòng)欄畫面(下);

AH=08h 讀取游標(biāo)處字符與屬性;

AH=09h 更改游標(biāo)處字符與屬性;

AH=0Ah 更改游標(biāo)處字符;

AH=0Bh 設(shè)定邊界顏色;

AH=0Eh 在TTY模式下寫字符;

AH=0Fh 獲取當(dāng)前顯示模式;

AH=13h 寫字符串。

AL寄存器一共有8位,但是只使用低2位,高6位并不使用:

如果AL=0,表示目標(biāo)字符串僅僅包含字符,屬性在BL中包含,不移動(dòng)光標(biāo)。

如果AL=1,表示目標(biāo)字符串僅僅包含字符,屬性在BL中包含,移動(dòng)光標(biāo)。

如果AL=2,表示目標(biāo)字符串包含字符和屬性,不移動(dòng)光標(biāo)。

如果AL=3,表示目標(biāo)字符串包含字符和屬性,移動(dòng)光標(biāo)。

mov  bx,000ah     ;黑底綠字

BX寄存器可分為高八位和低八位。

BH為頁(yè)號(hào),BL主要是用來(lái)定義一些顏色屬性格式:

若 BIT7 = 1 ,背景閃爍。

若 BIT3 = 1 ,前景色高亮顯示。

BIT4~BIT6 表示背景色。

BIT0~BIT2 表示前景色。

BH=00,BL=0Ah 即頁(yè)號(hào)為0,不閃爍,背景色為黑色,前景色高亮顯示,前景色為綠色

RET是return縮寫,標(biāo)示該函數(shù)調(diào)用結(jié)束并返回。

times 510 -  ($-$$)  db  0     ;生成一串512字節(jié)二進(jìn)制代碼
dw  0xaa55     ;結(jié)束標(biāo)志

這兩行是編寫引導(dǎo)扇區(qū)的規(guī)范。

理解主引導(dǎo)扇區(qū)前需要先闡述什么是扇區(qū)。在現(xiàn)代馮諾依曼結(jié)構(gòu)計(jì)算機(jī)中,存儲(chǔ)器一般由機(jī)械硬盤與內(nèi)存擔(dān)任。

機(jī)械硬盤內(nèi)部由若干盤片、可移動(dòng)讀寫頭、電機(jī)、數(shù)據(jù)傳輸接口以及一個(gè)控制電路組合而成。

磁盤盤片磁道上覆蓋著導(dǎo)磁物質(zhì),讀寫頭是一枚電磁鐵懸空在盤片上方距離0.1μm~0.5μm處,通過(guò)變化的電流產(chǎn)生變化的磁場(chǎng)改變磁道上面的導(dǎo)磁物質(zhì)極性記錄數(shù)據(jù),通過(guò)磁生電讀取盤片數(shù)據(jù)。

一個(gè)盤片有兩個(gè)磁頭,正面盤片磁頭編號(hào)0,反面為1,若有多個(gè)盤片磁頭編號(hào)便會(huì)繼續(xù)累加。磁道是是盤片內(nèi)同心圓,在盤片正反兩面的磁道構(gòu)成一個(gè)柱面,從0開(kāi)始編號(hào),最邊緣為0,編號(hào)往內(nèi)逐步累加。每個(gè)磁道以512字節(jié)劃分為若干扇區(qū),編號(hào)由1開(kāi)始。

硬件廠商約定MBR分區(qū)位于0面0道1扇區(qū),占512字節(jié)儲(chǔ)存主引導(dǎo)程序。計(jì)算機(jī)上電后BIOS會(huì)從主硬盤0面0道1扇區(qū)尋找并執(zhí)行MBR程序,最終通過(guò)MBR拉起操作系統(tǒng)。

第1行中表示當(dāng)前位置,$表示程序起始位置。一個(gè)扇區(qū)512字節(jié),該表達(dá)式的意義就是將這個(gè)扇區(qū)除了寫有代碼的區(qū)域外全部填寫0。并留下2個(gè)字節(jié)位置。

標(biāo)準(zhǔn)的MBR結(jié)構(gòu)如下圖,這也就解釋了第2行代碼的0xaa55了,它是MBR分區(qū)的結(jié)束標(biāo)志!

二、Demo機(jī)器碼解析

如無(wú)意外,經(jīng)過(guò)編譯后我們將得到一個(gè).bin文件,如果是Windows下使用Vscode作為編譯環(huán)境,在編輯器中安裝Hex Editor擴(kuò)展就能正常顯示。而Linux使用Vim/Vi就能打開(kāi)。

作為該項(xiàng)目參考書作者李忠老師也開(kāi)發(fā)了一個(gè)小工具,如有必要可以在http://www.lizhongc.com/index.php/91.html下載使用。
現(xiàn)在我的電腦是云主機(jī),限于現(xiàn)實(shí)環(huán)境將使用Vscode進(jìn)行講解。
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 計(jì)算機(jī)
    +關(guān)注

    關(guān)注

    19

    文章

    7611

    瀏覽量

    89882
  • 匯編
    +關(guān)注

    關(guān)注

    2

    文章

    214

    瀏覽量

    26365
  • 虛擬機(jī)
    +關(guān)注

    關(guān)注

    1

    文章

    956

    瀏覽量

    28896
收藏 人收藏

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    計(jì)算機(jī)安全使用常識(shí)

    計(jì)算機(jī)安全使用常識(shí) (1)使用符合額定電壓的電源。電壓高于額定電壓會(huì)燒毀硬件,低于額定電壓計(jì)算機(jī)不能正常啟動(dòng)或系統(tǒng)運(yùn)行不正常,甚至也會(huì)燒毀硬件。(2)正確開(kāi)關(guān)
    發(fā)表于 03-10 12:10

    什么是微型計(jì)算機(jī)?微型計(jì)算機(jī)有什么用處?

    匯編語(yǔ)言是什么?什么是微型計(jì)算機(jī)?微型計(jì)算機(jī)有什么用處?
    發(fā)表于 07-16 09:59

    什么是計(jì)算機(jī)系統(tǒng)、計(jì)算機(jī)硬件和計(jì)算機(jī)軟件?

    第一章 計(jì)算機(jī)系統(tǒng)概論1. 什么是計(jì)算機(jī)系統(tǒng)、計(jì)算機(jī)硬件和計(jì)算機(jī)軟件?硬件和軟件哪個(gè)更重要?解:P3計(jì)算機(jī)系統(tǒng):由
    發(fā)表于 07-22 09:06

    計(jì)算機(jī)組成原理 精選資料分享

    計(jì)算機(jī)組成原理第一章 計(jì)算機(jī)系統(tǒng)概述1.1 計(jì)算機(jī)系統(tǒng)簡(jiǎn)介計(jì)算機(jī)系統(tǒng):硬件、軟件軟件:系統(tǒng)軟件、應(yīng)用軟件計(jì)算機(jī)系統(tǒng)的層次結(jié)構(gòu)(由高到低):高
    發(fā)表于 07-23 06:15

    計(jì)算機(jī)開(kāi)機(jī)啟動(dòng)過(guò)程詳解 精選資料分享

    計(jì)算機(jī)的開(kāi)機(jī)啟動(dòng)過(guò)程(1) 啟動(dòng)過(guò)程總攬(二)詳細(xì)說(shuō)明1、CPU 供電按下主機(jī)的電源鍵后,計(jì)算機(jī)開(kāi)始啟動(dòng),為主板部分芯片和CPU進(jìn)行供電。主
    發(fā)表于 07-23 09:18

    計(jì)算機(jī)組成期末復(fù)習(xí) 精選資料分享

    機(jī)D.計(jì)算機(jī)可實(shí)現(xiàn)高速運(yùn)算(c)2計(jì)算機(jī)硬件能直接執(zhí)行的只能是下面哪項(xiàng)。A.符號(hào)語(yǔ)言 B.匯編語(yǔ)言C.機(jī)器語(yǔ)言 D.機(jī)器語(yǔ)言和匯編語(yǔ)言(c
    發(fā)表于 07-26 07:14

    微型計(jì)算機(jī)原理及應(yīng)用

    前言微機(jī)原理主要內(nèi)容包括微型計(jì)算機(jī)體系結(jié)構(gòu)、8088微處理器和指令系統(tǒng)、匯編語(yǔ)言設(shè)計(jì)以及微型計(jì)算機(jī)各個(gè)組成部分介紹等內(nèi)容。微機(jī)原理接口技術(shù)是一門實(shí)踐性強(qiáng)的學(xué)科,不但要求較高的理論水平,而且還要求有實(shí)際的動(dòng)手能力。這次項(xiàng)目設(shè)計(jì)的主
    發(fā)表于 09-10 07:38

    計(jì)算機(jī)應(yīng)用

    1、第一臺(tái)計(jì)算機(jī):1946年2月14日,在美國(guó)賓西尼亞大學(xué)的莫爾電機(jī)學(xué)院,世界第一臺(tái)現(xiàn)代電子計(jì)算機(jī)“埃尼阿克”ENIAC誕生,重達(dá)30t,在1s內(nèi)能進(jìn)行5000次加法運(yùn)算和500次乘法運(yùn)算。2
    發(fā)表于 09-10 08:17

    5. 電子計(jì)算機(jī)的應(yīng)用,計(jì)算機(jī)應(yīng)用基礎(chǔ)(試卷版)5|計(jì)算機(jī)應(yīng)用基礎(chǔ)試卷 精選資料分享

    計(jì)算機(jī)應(yīng)用基礎(chǔ)5一、單選題1、第二代計(jì)算機(jī)不僅能夠處理文字,而且能夠方便處理______。A:視頻信息B:圖形信息C:動(dòng)畫信息D:語(yǔ)音信息答案: B2、電子計(jì)算機(jī)按規(guī)模劃分,可以分為_(kāi)
    發(fā)表于 09-13 09:08

    計(jì)算機(jī)組成原理與匯編語(yǔ)言程序設(shè)計(jì)

    計(jì)算機(jī)組成原理與匯編語(yǔ)言程序設(shè)計(jì)是為中央電大計(jì)算機(jī)組成原理與匯編語(yǔ)言程序設(shè)計(jì)課程編寫的教材。在開(kāi)始學(xué)習(xí)本書之前,請(qǐng)大家務(wù)必先認(rèn)真閱讀這篇前言,它將告訴你本課
    發(fā)表于 10-21 17:56 ?0次下載
    <b class='flag-5'>計(jì)算機(jī)</b>組成原理與<b class='flag-5'>匯編</b>語(yǔ)言程序設(shè)計(jì)

    計(jì)算機(jī)組成原理與匯編語(yǔ)言習(xí)題一

    計(jì)算機(jī)組成原理與匯編語(yǔ)言習(xí)題一   硬盤低格格式化是對(duì)硬盤最徹底的初始化方式,經(jīng)過(guò)低格后的硬盤,原來(lái)保護(hù)的數(shù)據(jù)將全部丟失
    發(fā)表于 04-15 16:16 ?563次閱讀

    計(jì)算機(jī)學(xué)習(xí)教程之指令系統(tǒng)與匯編語(yǔ)言程序設(shè)計(jì)課件免費(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是計(jì)算機(jī)學(xué)習(xí)教程之指令系統(tǒng)與匯編語(yǔ)言程序設(shè)計(jì)課件免費(fèi)下載包括了:1.匯編語(yǔ)言程序設(shè)計(jì),2.程序設(shè)計(jì)舉例,
    發(fā)表于 01-03 08:00 ?0次下載

    構(gòu)建 4 位計(jì)算機(jī)匯編語(yǔ)言和匯編器(第 2 部分)

    一旦我們構(gòu)建了一臺(tái)計(jì)算機(jī),下一步就是開(kāi)發(fā)一種匯編語(yǔ)言,然后是一個(gè)可以匯編我們程序的匯編器。 ? 在我 之前的專欄 中,我們介紹了在計(jì)算機(jī)內(nèi)存
    發(fā)表于 08-01 17:52 ?967次閱讀
    構(gòu)建 4 位<b class='flag-5'>計(jì)算機(jī)</b>:<b class='flag-5'>匯編</b>語(yǔ)言和<b class='flag-5'>匯編</b>器(第 <b class='flag-5'>2</b> 部分)

    計(jì)算機(jī)啟動(dòng)細(xì)節(jié)匯編Demo拆解1

    本文匯編程序是X86環(huán)境下的,移植其他平臺(tái)可能產(chǎn)生錯(cuò)誤。 一、匯編Demo解析 在前面的文章中建立了一個(gè)簡(jiǎn)單的匯編Demo,令虛擬機(jī)
    的頭像 發(fā)表于 02-01 15:53 ?927次閱讀
    <b class='flag-5'>計(jì)算機(jī)</b><b class='flag-5'>啟動(dòng)</b>的<b class='flag-5'>細(xì)節(jié)</b>與<b class='flag-5'>匯編</b><b class='flag-5'>Demo</b>的<b class='flag-5'>拆解</b>1

    計(jì)算機(jī)啟動(dòng)細(xì)節(jié)匯編Demo拆解3

    本文匯編程序是X86環(huán)境下的,移植其他平臺(tái)可能產(chǎn)生錯(cuò)誤。 一、匯編Demo解析 在前面的文章中建立了一個(gè)簡(jiǎn)單的匯編Demo,令虛擬機(jī)
    的頭像 發(fā)表于 02-01 15:53 ?810次閱讀