打開文件,數(shù)據(jù)將以如下方式展示在我們面前。左邊是機(jī)器碼,右邊是反編譯文本。

很顯然,反編譯文本只是按照Ascii對二進(jìn)制數(shù)據(jù)進(jìn)行編譯,所以能夠很好地恢復(fù)出來。而剩下的因為在Ascii表中沒有對應(yīng)的編碼,所以也就不能恢復(fù)出來。
在扇區(qū)末尾可以很明顯的看到55aa結(jié)束標(biāo)志,而在之間填充的0完全是times 510 - ($-$$) db 0的功勞。如果不以0填充這些區(qū)域,程序拉起后的行為就不一定是我們所能夠預(yù)想的。
為了看懂剩下的區(qū)域內(nèi)容,使用ndisasm進(jìn)行反編譯。正常來說我們可以得到下列結(jié)果,而從7C28到7DFC中間的內(nèi)容不過是簡單重復(fù),沒有展示出來的必要。


首先程序加載到7C00處,從這里進(jìn)行起跳;
然后數(shù)據(jù)對齊,并調(diào)用7C0B的程序;
7C0B命令裝載7c1E起始地址到ax,從1F到22要求端口傳輸字符串。
insb--輸入字符串到端口。
輸入字符串指令(Input String Instruction)。該指令是從某一指定的端口接受一個字符串,并存入一片存儲單元之中。輸入端口由DX指定,存儲單元的首地址和讀入數(shù)據(jù)的個數(shù)分別由ES:DI和CX來確定。在指令的執(zhí)行過程中,還根據(jù)標(biāo)志位DF對寄存器DI作相應(yīng)增減。該指令不影響任何標(biāo)志位。
Outsw—輸出字符串到端口。
輸出字符串指令(Output String Instruction)。該指令是把一個字符串輸入到指定的輸出端口中。輸出端口由DX指定,其輸出數(shù)據(jù)的首地址和個數(shù)分別由DS:SI和CX來確定。在指令的執(zhí)行過程中,還根據(jù)標(biāo)志位DF對寄存器SI作相應(yīng)增減。該指令的執(zhí)行不影響任何標(biāo)志位。
回到7C0E處,從0E到1D內(nèi)容作用如上文一致,不再解析。
7C0A有一個短跳轉(zhuǎn)到7C0A,即是要程序在此循環(huán),可是該命令存在空耗計算機(jī)資源嫌疑。
至此整個程序解析完畢,而剩余沒有解析的部分希望看客自行查找資料,這對于學(xué)習(xí)匯編與操作系統(tǒng)有好處。
三、運行環(huán)境搭建
運行環(huán)境使用VBox虛擬機(jī),也可以使用物理機(jī)驗證。
Ⅰ.創(chuàng)建虛擬機(jī)。
新建

按圖填寫,下一步






最后點擊創(chuàng)建。
Ⅱ.裝載.bin文件到虛擬硬盤。
使用李忠老師開發(fā)的工具。
打開按照如下方式寫入即可。

Ⅲ.將盤片安裝到虛擬機(jī)。

參考文獻(xiàn):
[1] General Software.[EB/OL]. https://cdn.embeddedts.com/resource-attachments/x86-edio-41.pdf
[2] 謝煥強.精簡32位Linux操作系統(tǒng)在X86上的設(shè)計與實現(xiàn)[D].2022.23-24.
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。
舉報投訴
-
計算機(jī)
+關(guān)注
關(guān)注
19文章
7803瀏覽量
93140 -
匯編
+關(guān)注
關(guān)注
2文章
214瀏覽量
27353 -
虛擬機(jī)
+關(guān)注
關(guān)注
1文章
972瀏覽量
30401
發(fā)布評論請先 登錄
相關(guān)推薦
熱點推薦
計算機(jī)安全使用常識
計算機(jī)安全使用常識 (1)使用符合額定電壓的電源。電壓高于額定電壓會燒毀硬件,低于額定電壓計算機(jī)不能正常啟動或系統(tǒng)運行不正常,甚至也會燒毀硬件。(2)正確開關(guān)計算機(jī)。正確的開機(jī)方法是:
發(fā)表于 03-10 12:10
什么是計算機(jī)系統(tǒng)、計算機(jī)硬件和計算機(jī)軟件?
第一章 計算機(jī)系統(tǒng)概論1. 什么是計算機(jī)系統(tǒng)、計算機(jī)硬件和計算機(jī)軟件?硬件和軟件哪個更重要?解:P3計算
發(fā)表于 07-22 09:06
計算機(jī)組成原理 精選資料分享
計算機(jī)組成原理第一章 計算機(jī)系統(tǒng)概述1.1 計算機(jī)系統(tǒng)簡介計算機(jī)系統(tǒng):硬件、軟件軟件:系統(tǒng)軟件、應(yīng)用軟件計算機(jī)系統(tǒng)的層次結(jié)構(gòu)(由高到低):高
發(fā)表于 07-23 06:15
計算機(jī)開機(jī)啟動過程詳解 精選資料分享
計算機(jī)的開機(jī)啟動過程(1) 啟動過程總攬(二)詳細(xì)說明1、CPU 供電按下主機(jī)的電源鍵后,計算機(jī)開始啟動,為主板部分芯片和CPU進(jìn)行供電。主
發(fā)表于 07-23 09:18
計算機(jī)組成期末復(fù)習(xí) 精選資料分享
機(jī)D.計算機(jī)可實現(xiàn)高速運算(c)2、計算機(jī)硬件能直接執(zhí)行的只能是下面哪項。A.符號語言 B.匯編語言C.機(jī)器語言 D.機(jī)器語言和匯編語言(c)3
發(fā)表于 07-26 07:14
微型計算機(jī)原理及應(yīng)用
前言微機(jī)原理主要內(nèi)容包括微型計算機(jī)體系結(jié)構(gòu)、8088微處理器和指令系統(tǒng)、匯編語言設(shè)計以及微型計算機(jī)各個組成部分介紹等內(nèi)容。微機(jī)原理接口技術(shù)是一門實踐性強的學(xué)科,不但要求較高的理論水平,而且還要求有實際的動手能力。這次項目設(shè)計的主
發(fā)表于 09-10 07:38
計算機(jī)應(yīng)用
、計算機(jī)四代分別是:電子管計算機(jī),晶體管計算機(jī),小、中規(guī)模集成電路計算機(jī),大規(guī)模和超大規(guī)模集成電路計算機(jī)。
發(fā)表于 09-10 08:17
計算機(jī)組成原理與匯編語言程序設(shè)計
計算機(jī)組成原理與匯編語言程序設(shè)計是為中央電大計算機(jī)組成原理與匯編語言程序設(shè)計課程編寫的教材。在開始學(xué)習(xí)本書之前,請大家務(wù)必先認(rèn)真閱讀這篇前言,它將告訴你本課
發(fā)表于 10-21 17:56
?0次下載
計算機(jī)組成原理與匯編語言習(xí)題一
計算機(jī)組成原理與匯編語言習(xí)題一
硬盤低格格式化是對硬盤最徹底的初始化方式,經(jīng)過低格后的硬盤,原來保護(hù)的數(shù)據(jù)將全部丟失
發(fā)表于 04-15 16:16
?712次閱讀
計算機(jī)的機(jī)器語言和匯編語言與高級語言的詳細(xì)資料介紹
計算機(jī)語言通常是一個能完整、準(zhǔn)確和規(guī)則地表達(dá)人們的意圖,并用以指揮或控制計算機(jī)工作的“符號系統(tǒng)”。計算機(jī)語言通常分為三類:即機(jī)器語言、匯編語言和高級語言。
構(gòu)建 4 位計算機(jī):匯編語言和匯編器(第 2 部分)
一旦我們構(gòu)建了一臺計算機(jī),下一步就是開發(fā)一種匯編語言,然后是一個可以匯編我們程序的匯編器。 ? 在我 之前的專欄 中,我們介紹了在計算機(jī)內(nèi)存
發(fā)表于 08-01 17:52
?2483次閱讀
構(gòu)建 4 位計算機(jī):匯編語言和匯編器(第 1 部分)
我們已經(jīng)到了需要為 4 位 HRRG 計算機(jī)定義匯編語言的地步,但首先我們需要考慮某些概念。 如今,我們習(xí)慣于使用 C/C++、Java、Python 等高級語言對我們的計算機(jī)和微控制器進(jìn)行編程,但
發(fā)表于 08-01 17:39
?1502次閱讀
計算機(jī)啟動的細(xì)節(jié)與匯編Demo的拆解1
本文匯編程序是X86環(huán)境下的,移植其他平臺可能產(chǎn)生錯誤。
一、匯編Demo解析
在前面的文章中建立了一個簡單的匯編Demo,令虛擬機(jī)
計算機(jī)啟動的細(xì)節(jié)與匯編Demo的拆解2
本文匯編程序是X86環(huán)境下的,移植其他平臺可能產(chǎn)生錯誤。
一、匯編Demo解析
在前面的文章中建立了一個簡單的匯編Demo,令虛擬機(jī)
計算機(jī)啟動的細(xì)節(jié)與匯編Demo的拆解3
評論