欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

nasm實現(xiàn)的用vmware運(yùn)行自做的linux啟動盤的引導(dǎo)代碼

 更新時間:2013年04月24日 12:12:03   作者:  
這個小的代碼的編寫和運(yùn)行還是能讓自己對系統(tǒng)啟動有一個更深的認(rèn)識,不過有個不懂的就是怎么用ISO鏡像文件啟動,怎么將引導(dǎo)代碼寫入ISO鏡像文件,依然沒有找到很好的方法解決

當(dāng)計算機(jī)電源被打開后,它會先進(jìn)行加電自檢(POST),然后尋找啟動盤,如果是選擇從軟盤啟動,計算機(jī)就會查找軟盤的0面0磁道1扇區(qū),如果發(fā)現(xiàn)它以0xAA55結(jié)束,則BIOS認(rèn)為它是一個引導(dǎo)扇區(qū),然后BIOS就會把引導(dǎo)扇區(qū)的前512字節(jié)的引導(dǎo)代碼拷貝到內(nèi)存的0000:7c00處并將控制器徹底交給這段引導(dǎo)代碼。

簡單的引導(dǎo)代碼如下所示:

復(fù)制代碼 代碼如下:

org 07c00h ;告訴編譯器加載到07c00h處

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

call DispStr ;調(diào)用顯示字符串函數(shù)

jmp $; 無限循環(huán)

DispStr:
mov ax, BootMessge
mov bp, ax
mov cx, 16
mov ax, 01301h
mov bx, 000ch
mov dl, 0
int 10h
ret
BootMessge: db "hello, OS world!"
times 510 - ($ - $$) db 0
dw 0aa55h


這段代碼時用nasm寫的,它類似于masm的語言。org 07c00h命令就是將命令后面的代碼中的偏移地址都加上07c00h,這樣程序就相當(dāng)于在0000:7c00出執(zhí)行了。按書中所講的,用命令nasm bootsector.asm -o boot.bin生成引導(dǎo)代碼boot.bin,然后將boot.bin寫入軟盤的0面0磁道1扇區(qū)就可以了。問題就來了,我沒有軟盤怎么搞,不過在wmware虛擬機(jī)中貌似可以用軟盤的映像文件來啟動,所以就想到自己制作一個映像文件來代替軟盤來作為啟動盤,不過怎么創(chuàng)建這個映像文件呢?

以前記得用linux下的dd命令做過linux的啟動盤,dd應(yīng)該是可以制作的,于是在網(wǎng)上找了下dd制作映像文件,果然是可以的,制作方法如下:

1 先制作一個空的軟盤映像文件diska.img(1.44Mb的軟盤映像文件):

dd if=/dev/zero of=diska.img bs=512 count=2880

2 制作一個包含boot.bin的映像文件boot.img:

dd if=boot.bin of=boot.img bs=512 count=1

3 將diska.img中1個扇區(qū)后面的數(shù)據(jù)拷貝到boot.img的后面

dd if=diska.img of=boot.img skip=1 seek=1 bs=512 count=2879

這樣就做成了一個大小為1.44Mb的包含引導(dǎo)代碼的映像文件。

后面的事就好辦了,直接在wmware創(chuàng)建一個空的虛擬機(jī),在設(shè)置中將Floppy的路徑設(shè)置為上面制作的引導(dǎo)扇區(qū)的路徑就ok了,如下圖那樣:

設(shè)置Floppy連接,斷開CD/DVD連接,啟動虛擬機(jī)就可以看到下面的畫面了:

 

總結(jié):這個小的代碼的編寫和運(yùn)行還是能讓自己對系統(tǒng)啟動有一個更深的認(rèn)識,不過有個不懂的就是怎么用ISO鏡像文件啟動,怎么將引導(dǎo)代碼寫入ISO鏡像文件,依然沒有找到很好的方法解決。

相關(guān)文章

  • 詳解敏捷過程中的需求管理

    詳解敏捷過程中的需求管理

    企業(yè)在做敏捷轉(zhuǎn)型中,需求無法按時交付的困擾你是否也遇到過呢?
    2021-05-05
  • 分享Git常用7大技巧和命令

    分享Git常用7大技巧和命令

    Git 是一個非常強(qiáng)大的工具,它包含豐富的工具用以維護(hù)項目,我們在日期工作中會經(jīng)常用到一些常用命令,本文先為大家介紹下面七個Git常用技巧和命令
    2018-09-09
  • 淺談服務(wù)發(fā)現(xiàn)和負(fù)載均衡的來龍去脈

    淺談服務(wù)發(fā)現(xiàn)和負(fù)載均衡的來龍去脈

    單機(jī)時代,傳統(tǒng)軟件大多是單體/巨石架構(gòu)(Monolithic)。大家往一個代碼倉庫提交CODE,這會導(dǎo)致應(yīng)用膨脹,以及擴(kuò)展受限,無法按需伸縮等諸多問題。單體架構(gòu)怎么解決多人合作的問題?模塊化,按功能拆分,模塊之間定義編程接口(API)。本篇文章帶你詳細(xì)了解。
    2021-05-05
  • 300行代碼讓外婆實現(xiàn)語音搜索購物功能

    300行代碼讓外婆實現(xiàn)語音搜索購物功能

    這篇文章主要介紹了300行代碼讓外婆實現(xiàn)語音搜索購物功能,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-03-03
  • 淺談遷移學(xué)習(xí)

    淺談遷移學(xué)習(xí)

    遷移學(xué)習(xí)(Transfer Learning)是一種機(jī)器學(xué)習(xí)方法,是把一個領(lǐng)域(即源領(lǐng)域)的知識,遷移到另外一個領(lǐng)域(即目標(biāo)領(lǐng)域),使得目標(biāo)領(lǐng)域能夠取得更好的學(xué)習(xí)效果
    2021-06-06
  • 淺談如何降低軟件復(fù)雜性

    淺談如何降低軟件復(fù)雜性

    軟件的復(fù)雜性是我們程序員在日常開發(fā)中所必須面對的東西,學(xué)會如何 “弄清楚什么是軟件復(fù)雜性,找到導(dǎo)致軟件復(fù)雜的原因,并利用各種手法去戰(zhàn)勝軟件的復(fù)雜性” 是一門必備的能力。
    2021-05-05
  • Cordova插件實現(xiàn)JavaScript與Java的通信的詳細(xì)過程

    Cordova插件實現(xiàn)JavaScript與Java的通信的詳細(xì)過程

    本文將結(jié)合最常用的華為推送服務(wù)Cordova插件,介紹HMS Core用到的JS-Java消息交互方式,講解在JS側(cè)如何調(diào)用Java側(cè)接口,最終實現(xiàn)HMS Core能力,感興趣的朋友一起學(xué)習(xí)下吧
    2021-06-06
  • Pascal Move的用法

    Pascal Move的用法

    這篇文章主要介紹了Pascal Move的用法,需要的朋友可以參考下
    2021-11-11
  • 詳解Python OpenCV數(shù)字識別案例

    詳解Python OpenCV數(shù)字識別案例

    信用卡識別的案例用到了圖像處理的一些基本操作,對剛上手CV的人來說還是比較友好的。
    2021-05-05
  • ascii碼表(二進(jìn)制 十進(jìn)制 十六進(jìn)制)詳細(xì)介紹

    ascii碼表(二進(jìn)制 十進(jìn)制 十六進(jìn)制)詳細(xì)介紹

    這篇文章主要介紹了ascii碼表二進(jìn)制 十進(jìn)制 十六進(jìn)制詳細(xì)介紹的相關(guān)資料,需要的朋友可以參考下
    2017-01-01

最新評論