《組合語言》學習(十八)

2021-07-24 23:11:14 字數 1451 閱讀 2148

本文主要介紹《組合語言》一書中的兩個課程設計題。課程設計1位於第10章,要求在dos下用彩色顯示一張資料**。課程設計2位於第17章,要求製作乙個系統啟動盤。

對於課程設計2,由於時間原因,我暫時不做了,後面有需要的時候,我會補上。在此,我根據網路搜尋的結果,推薦兩個鏈結,上面有針對這兩個課程設計的答案,如下:

1,2,

3,注:鏈結2中要用到的「軟碟機**軟體」,僅限於在xp下使用,win7 32位系統下也用不了。

一、課程設計2,資料解讀

1,任務

這次課程設計的任務是編寫乙個可以自行啟動計算機,不需要在現有作業系統環境中執行的程式。

該程式的功能如下:

1)列出功能選項,讓使用者通過鍵盤進行選擇;

2)使用者輸入「1」,後重新啟動計算機;

3)使用者輸入「2」後引導現有的作業系統;

4)使用者輸入「3」後,執行動態顯示當前日期、時間的程式;

5)使用者輸入「4」後,可更改當前日期、時間。

2,bios、作業系統和程式啟動過程

要實現以上功能,我們需要了解bios、作業系統和應用程式的啟動原理。

1)bios的啟動

bios,即基本輸入輸出系統(basic input/output system),它是被固化在主機板和各類介面卡(如顯示卡、網絡卡等)的rom晶元上的一組程式。系統bios(位於主機板的rom晶元中)是計算機加電後第乙個執行的程式。

開機後,cpu自動進入到ffff:0單元執行(bios內),此處有一條跳轉指令。cpu執行該指令後,轉去執行bios中的硬體系統檢測和初始化程式。

初始化程式將建立bios所支援的中斷向量,即將bios提供的中斷例程的入口位址登記在中斷向量表中。

硬體系統檢測和初始化完成後,呼叫int 9進行作業系統的引導。

基於以上內容,我們要實現功能1——重啟計算機,實際上就是要讓cpu的執行流重新跳轉到fff:0處執行,也就是說,使用者輸入「1」後,我們需要修改cs:ip,讓它指向fff:0(用jmp指令就可辦到)。 注:

關於bios的知識,可以參考1.4、13.4和課程設計2的閱讀材料。此外,下面兩個鏈結,第1個介紹了bios的啟動過程,第2個給出了bios的記憶體分布圖。

2)作業系統的啟動引導

硬體系統檢測和初始化完成後,呼叫int 19進行作業系統的引導。

int 19的最主要的一項工作,就是根據cmos中的設定,將某個磁碟的0道0面0扇區的內容讀取到0:7c00,然後將cs:ip執行0:7c00。

故此,要實現功能2,我們需要先設定cmos,讓int 19最開始從軟盤引導啟動我們的程式,然後再在我們的程式中修改cmos,將它改回從c盤引導啟動,最後,在我們的程式中呼叫int 19指令。

注:bios的使用者設定,一般儲存在cmos中。

3)應用程式

應用程式是通過作業系統的shell來呼叫的,作業系統將應用程式裝載到記憶體空間後,shell將cs:ip的值設為該應用程式的入口位址,然後cpu開始執行該應用程式。

組合語言學習

參考書籍 組合語言 王爽 著 清華大學出版社 選單導航 一 彙編基礎知識 二 暫存器和常見彙編指令演示 一 基礎知識 1 彙編指令是機器指令的助記符,同機器指令一一對應 2 每一種cpu都有自己的彙編指令集 3 cpu可以直接使用的資訊在儲存器中存放 4 在儲存器中指令和資料沒有任何區別,都是二進位...

組合語言學習

持續更新 彙編指令 1.mov指令 mov是乙個傳送指令,可以實現以下操作 有一點需要注意,資料不能直接傳給段暫存器,比如mov ds,100h就是錯誤的。但是可以將其他暫存器中的值賦給段暫存器。段暫存器有cs,ds,ss,es等。如果你想知道為什麼,那就可以去了解一下關於每條指令的硬體實現。後面還...

組合語言學習筆記

學習參考資料 大灰狼 講彙編 資料匯流排,位址匯流排,控制匯流排。位址匯流排有多少條就決定了cpu最大的記憶體使用量。80386有32位位址匯流排,所以它的定址能力就是4g.暫存器 通用暫存器,段暫存器,ax暫存器 通用暫存器,存放資料。高位位元組ah,低位位元組al。實體地址表示方法 位址加法器,...