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

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

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

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

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

jf_78858299 ? 來(lái)源:硬件底褲酸奶蓋子 ? 作者:酸奶蓋子 ? 2023-02-01 15:53 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

本文匯編程序是X86環(huán)境下的,移植其他平臺(tái)可能產(chǎn)生錯(cuò)誤。

一、匯編Demo解析

在前面的文章中建立了一個(gè)簡(jiǎn)單的匯編Demo,令虛擬機(jī)輸出一個(gè)“Helloworld!”字符串。

org 0x7c00     ;程序起始位07c00h

此處的org是Origin的縮寫(xiě),意為起源位置、起始位置。

在此前不管是桌面還是移動(dòng)端,甚至是嵌入式系統(tǒng)的開(kāi)發(fā),工程師都是使用如C,C++,Java等類(lèi)似的高級(jí)語(yǔ)言;而撰寫(xiě)好程序源文件后剩下的事情便交由編譯器去做。

類(lèi)似于程序運(yùn)行需要多少內(nèi)存空間,分配多少時(shí)鐘周期,程序加載位置與棧內(nèi)存等瑣碎的問(wèn)題,我們卻不太關(guān)心。這些操作都由編譯器根據(jù)工程要求進(jìn)行分配。

如果使用Windows環(huán)境,我們通過(guò)屬性可以獲取我們電腦簡(jiǎn)單參數(shù)。如:處理器,系統(tǒng)版本之類(lèi)的。

在其中我們必然會(huì)看到這樣一行:機(jī)帶RAM。其實(shí)這就是通常所說(shuō)的運(yùn)行內(nèi)存,簡(jiǎn)稱(chēng):內(nèi)存。(我的機(jī)器內(nèi)存8G)

我們的程序編譯好后是存放在硬盤(pán)中的。如果沒(méi)有啟用,它與其他千千萬(wàn)萬(wàn)個(gè)文件表現(xiàn)形式一樣,也沒(méi)辦法區(qū)分。

如果我們喚起該程序便會(huì)產(chǎn)生差異。

首先CPU向硬盤(pán)發(fā)送查詢(xún)命令,在硬盤(pán)中找尋該程序機(jī)器碼,在獲知該文件存在后硬盤(pán)向CPU報(bào)告找尋文件就緒;其次CPU向硬盤(pán)發(fā)送將該程序機(jī)器碼拷貝到運(yùn)行內(nèi)存(硬盤(pán)太慢);內(nèi)存就緒后CPU使用IP寄存器指向該地址并步進(jìn)執(zhí)行。

Org作用出現(xiàn)在第二步,硬盤(pán)將程序復(fù)制到內(nèi)存哪個(gè)位置呢?org如是說(shuō):到0x7c00處!于是便復(fù)制到此。

簡(jiǎn)單來(lái)說(shuō)org命令就是標(biāo)志程序加載位置的,此前我們進(jìn)行的程序設(shè)計(jì)沒(méi)有做過(guò)這類(lèi)工作完全歸功于編譯器的功勞。

為什么是0x7c00處呢?深究起來(lái)也并無(wú)其他高深道理,不過(guò)是為保持兼容性,硬件廠商共同約定的事情而已。但是如系統(tǒng)開(kāi)發(fā)不遵循這樣的約定卻又無(wú)法正常啟動(dòng)。畢竟如果所有廠商都遵循的約定就會(huì)成為行業(yè)規(guī)范。

(我下一步計(jì)劃設(shè)計(jì)一個(gè)RISV指令集的CPU,到時(shí)我將不遵循這個(gè)約定。那真是海闊憑魚(yú)躍,天高任鳥(niǎo)飛)

在我們學(xué)習(xí)匯編寫(xiě)操作系統(tǒng)的過(guò)程中還會(huì)有其他耐人尋味的約定,當(dāng)有所涉及再進(jìn)行介紹。

mov ax,cs
mov ds,ax
mov es,ax

從前面的介紹可知:

AX是通用寄存器,在此例中用來(lái)做數(shù)據(jù)拷貝。

CS是代碼段寄存器,用來(lái)存儲(chǔ)該段代碼的入口地址。

ES的附加段寄存器,存放當(dāng)前執(zhí)行程序中一個(gè)輔助數(shù)據(jù)段的段地址。

DS是數(shù)據(jù)段寄存器,在此用于標(biāo)示數(shù)據(jù)段其實(shí)地址。

X86架構(gòu)計(jì)算機(jī)在實(shí)模式下尋址方式是:段+偏移。而這涉及到絕對(duì)地址和邏輯地址概念,這是以后的內(nèi)容,再此我們先簡(jiǎn)單記住這三行是確保三個(gè)寄存器指向同一地址,以便后續(xù)進(jìn)行數(shù)據(jù)操作能定位到正確位置。

這種操作可以總結(jié)為“寄存器對(duì)齊”。

call DispStr

Call是匯編語(yǔ)言中進(jìn)行函數(shù)調(diào)用的助記符,該行意義是跳轉(zhuǎn)到名為DispStr的位置并繼續(xù)執(zhí)行。

call DispStr
mov ax,BootMessage
mov  bp,ax                ;串地址
mov  cx,11                ;串長(zhǎng)度
mov  ax,01301h        ;AH = 13,AL = 01h
mov  bx,000ah         ;黑底綠字
mov dl,0
int  10h                ;10h號(hào)中斷
ret

上述便是DispStr主體,在程序末位我們使用BootMessage替代"Helloworld!"字符串,此時(shí)BootMessage為存儲(chǔ)Helloworld!內(nèi)存的首地址。

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(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

    文章

    7650

    瀏覽量

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

    關(guān)注

    2

    文章

    214

    瀏覽量

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

    關(guān)注

    1

    文章

    966

    瀏覽量

    29258
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(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ī)服務(wù)器出臺(tái)新生態(tài)設(shè)計(jì)要求

    、2014年7月1日和 2016年7月1日。涉及的產(chǎn)品包括可以直接從交流電網(wǎng)取電(包括外部或內(nèi)部電源供應(yīng)): ?● 臺(tái)式計(jì)算機(jī)● 一體式計(jì)算機(jī) ● 筆記本
    發(fā)表于 03-31 18:14

    什么是微型計(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ì)算
    發(fā)表于 07-22 09:06

    計(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ī)
    發(fā)表于 07-23 09:18

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

    計(jì)算機(jī)組成原理期末考試復(fù)習(xí)題,很給力的?。?!一、選擇題(c)1、在下列四句話中,最能準(zhǔn)確反映計(jì)算機(jī)主要功能的是下面哪項(xiàng)。A.計(jì)算機(jī)可以存儲(chǔ)大量信息B.
    發(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ù)是一門(mén)實(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次乘法
    發(fā)表于 09-10 08:17

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

    計(jì)算機(jī)組成原理與匯編語(yǔ)言程序設(shè)計(jì)是為中央電大計(jì)算機(jī)組成原理與匯編語(yǔ)言程序設(shè)計(jì)課程編寫(xiě)的教材。在開(kāi)始學(xué)習(xí)本書(shū)之前,請(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í)題一   硬盤(pán)低格格式化是對(duì)硬盤(pán)最徹底的初始化方式,經(jīng)過(guò)低格后的硬盤(pán),原來(lái)保護(hù)的數(shù)據(jù)將全部丟失
    發(fā)表于 04-15 16:16 ?582次閱讀

    計(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è)可以匯編我們程序的匯編器。 ? 在我 之前的專(zhuān)欄 中,我們介紹了在計(jì)算機(jī)內(nèi)存
    發(fā)表于 08-01 17:52 ?1011次閱讀
    構(gòu)建 4 位<b class='flag-5'>計(jì)算機(jī)</b>:<b class='flag-5'>匯編</b>語(yǔ)言和<b class='flag-5'>匯編</b>器(第 2 部分)

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

    我們已經(jīng)到了需要為 4 位 HRRG 計(jì)算機(jī)定義匯編語(yǔ)言的地步,但首先我們需要考慮某些概念。 如今,我們習(xí)慣于使用 C/C++、Java、Python 等高級(jí)語(yǔ)言對(duì)我們的計(jì)算機(jī)和微控制器進(jìn)行編程,但
    發(fā)表于 08-01 17:39 ?1228次閱讀
    構(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'>1</b> 部分)

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

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

    計(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 ?872次閱讀