国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

30天自制操作系統(tǒng) day 1 寫一個可以在沒有操作系統(tǒng)的計算機(jī)上輸出字符串的程序,并在計算機(jī)上運(yùn)行

這篇具有很好參考價值的文章主要介紹了30天自制操作系統(tǒng) day 1 寫一個可以在沒有操作系統(tǒng)的計算機(jī)上輸出字符串的程序,并在計算機(jī)上運(yùn)行。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報違法"按鈕提交疑問。

day 1

工具:qemu 模擬器

今日任務(wù)

計算機(jī)啟動后,在屏幕打印一串字符串。

理論

顯示字符的原理

把一些機(jī)器指令寫在第一扇區(qū)。通過int 0x10中斷,讓顯卡在屏幕上顯示字符。只需要在0x10之前按照規(guī)定準(zhǔn)備好寄存器,顯卡就能正確顯示字符。

顯卡顯示字符的規(guī)定

30天自制操作系統(tǒng) day 1 寫一個可以在沒有操作系統(tǒng)的計算機(jī)上輸出字符串的程序,并在計算機(jī)上運(yùn)行,30天自制操作系統(tǒng),操作系統(tǒng)

流程

計算機(jī)會按照規(guī)定的流程自行啟動,初始化結(jié)束后,執(zhí)行物理內(nèi)存0x7c00處的指令。在這一步之前硬件會把磁盤上的第一個扇區(qū)(前512字節(jié))裝載到0x7c00處。打印字符串的指令和數(shù)據(jù),就是寫在這里的。

ORG指令

ORG 0x7c00

ORG指令是偽指令,它不會被CPU指令,是知道匯編器把匯編代碼編譯成機(jī)器碼的。這條指令告訴匯編器,下面內(nèi)容的起始地址是0x7c00。這樣做的目的是確定標(biāo)號的具體地址。比如如果有個標(biāo)號為entry,entry具體是多少地址,會受到ORG的影響。

實現(xiàn)代碼

這個代碼和書中的不一樣,但是能夠?qū)崿F(xiàn)同樣的功能。

    ORG 0x7c00 ;偽指令,告訴編譯器第一條指令的地址是0x7c00,cpu并不執(zhí)行
    MOV SI,data
putloop:
    ;為顯卡中斷做參數(shù)準(zhǔn)備
    MOV AL,[SI] ;AL 要打印的字符
    CMP AL,0
	JE end
    MOV AH,0x0e ;操作碼,0x0e是打印字符
    MOV BL,15   ;顏色碼
    MOV BH,0    ;規(guī)定填0
    INT 0x10    ;顯卡中斷,填充好AL,AH,BL,BH,進(jìn)行顯卡中斷將顯示一個字符
    ADD SI,1
    JMP putloop
end:
    HLT
    JMP end
data:
    DB 0x0a ;換行
    DB "hello_world!"
    DB 0x0a ;換行
    DB 0 ;結(jié)束符
fill:
    RESB 0x7dfe-$
    DB 0x55,0xaa

編寫代碼時的錯誤

  1. 兩個操作數(shù)的指令,操作數(shù)與操作數(shù)間應(yīng)該用逗號隔開
  2. CMP指令比較時,操作數(shù)不能是內(nèi)存。

編譯執(zhí)行

我已經(jīng)把tolset里的ztool添加到了環(huán)境變量,所以我可以在任何地方通過命令行運(yùn)行那些工具
30天自制操作系統(tǒng) day 1 寫一個可以在沒有操作系統(tǒng)的計算機(jī)上輸出字符串的程序,并在計算機(jī)上運(yùn)行,30天自制操作系統(tǒng),操作系統(tǒng)

編譯

nask hello_world.asm hello_world.img

把編譯結(jié)果作為qemu磁盤的第一扇區(qū)

copy hello_world.img tolset\z_tools\qemu\fdimage0.bin

運(yùn)行qemu

make -C tolset\z_tools\qemu

運(yùn)行結(jié)果

30天自制操作系統(tǒng) day 1 寫一個可以在沒有操作系統(tǒng)的計算機(jī)上輸出字符串的程序,并在計算機(jī)上運(yùn)行,30天自制操作系統(tǒng),操作系統(tǒng)文章來源地址http://www.zghlxwxcb.cn/news/detail-601648.html

到了這里,關(guān)于30天自制操作系統(tǒng) day 1 寫一個可以在沒有操作系統(tǒng)的計算機(jī)上輸出字符串的程序,并在計算機(jī)上運(yùn)行的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點(diǎn)擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Python入門教程30:(Win系統(tǒng))下PyCharm常用的快捷鍵操作

    pycharm快捷鍵及一些常用設(shè)置 1、編輯(Editing) Ctrl + Space 基本的代碼完成(類、方法、屬性) Ctrl + Alt + Space 快速導(dǎo)入任意類 Ctrl + Shift + Enter 語句完成 Ctrl + P 參數(shù)信息(在方法中調(diào)用參數(shù)) Ctrl + Q 快速查看文檔 Shift + F1 外部文檔 Ctrl + 鼠標(biāo) 簡介 Ctrl + F1 顯示錯誤描述或警告信

    2024年02月10日
    瀏覽(25)
  • 操作系統(tǒng) day03(運(yùn)行機(jī)制)

    操作系統(tǒng) day03(運(yùn)行機(jī)制)

    機(jī)器指令 二進(jìn)制機(jī)器指令就是處理器(CPU)能識別、執(zhí)行的最基本命令 程序運(yùn)行的過程就是CPU執(zhí)行一條一條的機(jī)器指令的過程 應(yīng)用程序和內(nèi)核程序 操作系統(tǒng)的最重要角色是:系統(tǒng)資源的管理者,而操作系統(tǒng)的對系統(tǒng)資源的管理工作就是在內(nèi)核部分實現(xiàn)的 特權(quán)指令和非特權(quán)

    2024年02月06日
    瀏覽(17)
  • 操作系統(tǒng) day01(概念和功能)

    操作系統(tǒng) day01(概念和功能)

    作為系統(tǒng)資源的管理者 向上層提供方便易用的服務(wù) 操作系統(tǒng)給普通用戶使用的接口 GUI/圖形化界面 聯(lián)機(jī)命令接口/交互式命令接口:用戶說一句,系統(tǒng)跟著做一句,如CMD 脫機(jī)命令接口/批處理命令接口:用戶說一堆,系統(tǒng)跟著做一堆,如 *.bat 操作系統(tǒng)給軟件/程序員使用的接口

    2024年02月06日
    瀏覽(49)
  • 操作系統(tǒng) day05(體系結(jié)構(gòu)、開機(jī)過程、虛擬機(jī))

    操作系統(tǒng) day05(體系結(jié)構(gòu)、開機(jī)過程、虛擬機(jī))

    內(nèi)核 內(nèi)核是操作系統(tǒng)最基本、最核心的部分,實現(xiàn)操作系統(tǒng)內(nèi)核功能的那些程序就是內(nèi)核程序 這其中:時鐘、中斷、原語是與硬件關(guān)聯(lián)最緊密的模塊,而進(jìn)程管理、存儲器管理、設(shè)備管理更多的是對數(shù)據(jù)結(jié)構(gòu)的操作,不會直接涉及硬件 兩種設(shè)計CPU內(nèi)核的方式 對微內(nèi)核來說:

    2024年02月06日
    瀏覽(44)
  • 操作系統(tǒng)備考學(xué)習(xí) day1 (1.1.1-1.3.1)

    操作系統(tǒng)備考學(xué)習(xí) day1 (1.1.1-1.3.1)

    年初做了一個c++的webserver 的項目,在學(xué)習(xí)過程中已經(jīng)解除部分操作系統(tǒng)的知識,在已接觸熟識的部分,可能會有所跳過 操作系統(tǒng)的概念、功能和目標(biāo) 操作系統(tǒng)的定義:操作系統(tǒng)(OS)是指 控制 和管理整個計算機(jī)系統(tǒng)的 硬件和軟件 資源,并合理地組織調(diào)度計算機(jī)的工作和資源的

    2024年02月10日
    瀏覽(38)
  • 【操作系統(tǒng)】半小時寫一個微型操作系統(tǒng)-寫一個啟動扇區(qū)并且導(dǎo)入到軟盤鏡像中

    【操作系統(tǒng)】半小時寫一個微型操作系統(tǒng)-寫一個啟動扇區(qū)并且導(dǎo)入到軟盤鏡像中

    ????????我們使用軟盤來啟動操作系統(tǒng)時,系統(tǒng)首先就是從軟盤的第一個扇區(qū)中開始讀取數(shù)據(jù),也就是第0面,0磁道的第0個扇區(qū),軟盤的每個扇區(qū)為512個字節(jié)的大小,如果最后兩個字節(jié)為0xaa55(當(dāng)BIOS看到這兩個字節(jié)時,就認(rèn)為是引導(dǎo)扇區(qū)的結(jié)束標(biāo)志),則代表該兩個字節(jié)

    2023年04月15日
    瀏覽(26)
  • 操作系統(tǒng)實驗-添加一個內(nèi)核模塊

    操作系統(tǒng)實驗-添加一個內(nèi)核模塊

    參考用書: 《操作系統(tǒng)實踐:基于Linux的應(yīng)用與內(nèi)核編程》 一.添加一個內(nèi)核模塊 1.1需求分析 對于一個應(yīng)用程序而言,源代碼經(jīng)編譯后與標(biāo)準(zhǔn)運(yùn)行庫鏈接,通過系統(tǒng)調(diào)用執(zhí)行操作系統(tǒng)內(nèi)核中的特權(quán)指令,指令返回的結(jié)果通過系統(tǒng)調(diào)用返回給用戶,完成程序。 由于Linux是單內(nèi)

    2024年02月05日
    瀏覽(27)
  • 在vm虛擬機(jī)里面創(chuàng)建一個操作系統(tǒng)用戶

    在vm虛擬機(jī)里面創(chuàng)建一個操作系統(tǒng)用戶

    以下代碼在xshell下面運(yùn)行,遠(yuǎn)程創(chuàng)建。 這里我創(chuàng)建的是一個用戶名為 dada 的用戶 遠(yuǎn)程登陸普通用戶后,需要切換到root用戶 [redhat@localhost ~]$ su - root ?輸入密碼后進(jìn)入root用戶,接下來就是創(chuàng)建操作系統(tǒng)用戶了 [root@localhost ~]# 進(jìn)入root用戶后輸入以下命令: vim /etc/passwd 按 i 鍵,編

    2024年02月05日
    瀏覽(22)
  • 從頭開發(fā)一個RISC-V的操作系統(tǒng)(一)計算機(jī)系統(tǒng)漫游

    從頭開發(fā)一個RISC-V的操作系統(tǒng)(一)計算機(jī)系統(tǒng)漫游

    目標(biāo):通過這一個系列課程的學(xué)習(xí),開發(fā)出一個簡易的在RISC-V指令集架構(gòu)上運(yùn)行的操作系統(tǒng)。 這個系列的大部分文章和知識來自于:[完結(jié)] 循序漸進(jìn),學(xué)習(xí)開發(fā)一個RISC-V上的操作系統(tǒng) - 汪辰 - 2021春,以及相關(guān)的github地址。 在這個過程中,這個系列相當(dāng)于是我的學(xué)習(xí)筆記,做

    2024年04月09日
    瀏覽(21)
  • HDU 操作系統(tǒng)實驗二 -設(shè)計一個系統(tǒng)調(diào)用,返回指定進(jìn)程的相關(guān)時間信息

    HDU 操作系統(tǒng)實驗二 -設(shè)計一個系統(tǒng)調(diào)用,返回指定進(jìn)程的相關(guān)時間信息

    目錄 一、實驗思路 二、準(zhǔn)備工作——Linux內(nèi)核編譯步驟 1.實驗環(huán)境配置 2.下載內(nèi)核源碼 3.解壓縮內(nèi)核源碼文件 4.清除殘留的.config和.o文件 5.配置內(nèi)核 6.編譯內(nèi)核,生成啟動映像文件 7.編譯模塊 8.安裝內(nèi)核 9.配置grub引導(dǎo)程序 10.重啟系統(tǒng) 三、設(shè)計系統(tǒng)調(diào)用,返回指定進(jìn)程的相關(guān)

    2024年02月03日
    瀏覽(24)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包