日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > windows >内容正文

windows

最小操作系统的代码解释、NASM的初步使用

發(fā)布時(shí)間:2025/4/14 windows 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 最小操作系统的代码解释、NASM的初步使用 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

一、最小操作系統(tǒng)的代碼解釋

?

? ? 很多資料上都有最小操作系統(tǒng)代碼,即從裸機(jī)開始運(yùn)行、引導(dǎo)機(jī)器、顯示 hello world 并進(jìn)入循環(huán)等待的代碼;下面對(duì)代碼進(jìn)行一下大體的解釋;

?

org 07c00h; 告訴編譯器程序加載到7c00處 mov ax, cs mov ds, ax call DispStr; 調(diào)用顯示字符串例程 jmp $; 無(wú)限循環(huán) DispStr: mov ax, BootMessage mov bp, ax; ES:BP = 串地址 mov cx, 16; CX = 串長(zhǎng)度 mov ax, 01301h; AH = 13, AL = 01h mov bx, 000ch; 頁(yè)號(hào)為0(BH = 0) 黑底紅字(BL = 0Ch,高亮) mov dl, 0 int 10h; 10h 號(hào)中斷 ret BootMessage:db "Hello, OS world!" times 510-($-$$) db 0; 填充剩下的空間,使生成的二進(jìn)制代碼恰好為512字節(jié) dw 0xaa55; 結(jié)束標(biāo)志

?

?

1 ORG和07C00h

ORG偽指令告訴匯編器: ?我的程序?qū)?lái)會(huì)被加載到某某地址A;

ORG是Origin的縮寫:起始地址,源。在匯編語(yǔ)言源程序的開始通常都用一條ORG偽指令來(lái)實(shí)現(xiàn)規(guī)定程序的起始地址。如果不用ORG規(guī)定則匯編得到的目標(biāo)程序?qū)?000H開始。
匯編語(yǔ)言源程序中若沒(méi)有ORG偽指令,則程序執(zhí)行時(shí),指令代碼被放到自由內(nèi)存空間的CS:0處;若有ORG偽指令,編譯器則把其后的指令代碼放到ORG偽指令指定的偏移地址。

?

FFFF0h與07C00h,這兩個(gè)都是機(jī)器啟動(dòng)后默認(rèn)訪問(wèn)的內(nèi)存地址。

bios是用來(lái)初始化硬件的最底層的軟件(然后才是操作系統(tǒng)),因此計(jì)算機(jī)啟動(dòng)后必須最先被執(zhí)行。
CPU只能執(zhí)行內(nèi)存中的內(nèi)容的,而內(nèi)存中的數(shù)據(jù)是斷電之后內(nèi)容就會(huì)消失。工程師的解決方法是:將存放bios的rom芯片與內(nèi)存芯片統(tǒng)一編址(不明白的話去看微機(jī)原理與接口的書)。這樣就可以把存放bios的ROM芯片看作是數(shù)據(jù)永遠(yuǎn)不會(huì)消失不允許被更改的內(nèi)存了。
開機(jī)啟動(dòng)后默認(rèn)的CS=FFFFh IP=0000h。這個(gè)地址就是bios的地址。這段內(nèi)存空間很小,不能夠容下操作系統(tǒng)等大型程序。
機(jī)器啟動(dòng)后自動(dòng)執(zhí)行bios使其完成硬件初始化。bios完成硬件初始化的任務(wù)后,就要把權(quán)力移交給操作系統(tǒng)。
工程師進(jìn)行了強(qiáng)制性的規(guī)定:到內(nèi)存中的07c00h 處尋找系統(tǒng)的引導(dǎo)程序,即CS=0000h IP=7c00h。也就是說(shuō)任何系統(tǒng),他的引導(dǎo)程序都必須安排在07c00h開始的地方,否則就不能被正確的引導(dǎo)。當(dāng)引導(dǎo)程序完成后我們就進(jìn)入了Linux Windows等系統(tǒng)了。

(還可以把org 07c00h改為0100h,生成 com文件就能直接在dos下運(yùn)行。)cx表示的是字符串的個(gè)數(shù),10進(jìn)制的,可以自行修改,boot sector的結(jié)束地址也是固定的,為0xAA55。
?

2 10h中斷

10H中斷是由BIOS對(duì)顯示器和屏幕所提供的服務(wù)程序。使用int 10h服務(wù)程序時(shí),必須先指定ah寄存器為顯示服務(wù)編號(hào)之一,以指定需要調(diào)用的功用。
ah=13h, 在Teletype模式下顯示字符串。


AH=13H
BH=頁(yè)碼
BL=屬性(若AL=00H或 01H)
CX=顯示字符串長(zhǎng)度
(DH、DL)=坐標(biāo)(行、列)
ES:BP=顯示字符串的地址 AL=顯示輸出方式
0—— 字符串中只含顯示字符,其顯示屬性在BL中。顯示后,光標(biāo)位置不變
1——字符串中只含顯示字符,其顯示屬性在BL中。顯示后,光標(biāo)位置改變

?

3 JMP $

$,代表當(dāng)前地址。
$ 放在 LJMP 之后,它就代表這條指令本身的地址。
JMP $,就是轉(zhuǎn)移到該指令的本身地址。
JMP $,就是原地轉(zhuǎn)移的意思,即 死循環(huán)。
一旦有中斷發(fā)生,就可以去執(zhí)行中斷程序。

4 填充
$-$$可能會(huì)經(jīng)常被用到,它表示本行距離程序開始處的相對(duì)距離。
times 510-($-$) ?db ?0 ?的意思就是將0這個(gè)字節(jié)重復(fù)510-($-$)遍,知道程序有510B為止。這樣,加上結(jié)束標(biāo)志0XAA55占用2B,恰好是512B

?

5 引導(dǎo)扇區(qū)
Boot Sector原理如下:當(dāng)計(jì)算機(jī)被電源打開時(shí),他先會(huì)進(jìn)行加電自檢(POST),然后尋找啟動(dòng)盤,如果選擇是從軟盤啟動(dòng),計(jì)算機(jī)就會(huì)檢查軟盤的0面0磁道1扇區(qū),如果發(fā)現(xiàn)它是以0xAA55結(jié)束,則BIOS就會(huì)認(rèn)為他是一個(gè)引導(dǎo)扇區(qū)。
一旦BIOS發(fā)現(xiàn)了引導(dǎo)扇區(qū),就會(huì)將這512B的內(nèi)容裝載到內(nèi)存0000:7c00處;

?

二 NASM的初步使用

上面代碼是NASM語(yǔ)法,和微軟的MASM有所區(qū)別。需要用NASM編譯。

masm是微軟專門為windows下匯編而寫的,而nasm可以在windows、linux等系統(tǒng)下匯編。

安裝NASM;

把上述代碼保存為boottest.asm,然后用NASM構(gòu)建;

如下圖構(gòu)建為.bin文件;

nasm boottest.asm -o boottest.bin

此段代碼如果放到emu8086中編譯;

times 510-($-$$) ? db ? 0,這句會(huì)出錯(cuò);

emu8086的編譯是MASM語(yǔ)法,沒(méi)有times指令;

?

三 看一下boot文件大小

看一下構(gòu)建成功以后的引導(dǎo)文件大小,正好是512字節(jié);

一個(gè)引導(dǎo)扇區(qū)是512個(gè)字節(jié),并且以0xAA55為結(jié)束標(biāo)識(shí)的扇區(qū);

這個(gè)就是最小操作系統(tǒng)的含義,以及?times 510-($-$) ?db ?0 這句填充的作用;

《新程序員》:云原生和全面數(shù)字化實(shí)踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀

總結(jié)

以上是生活随笔為你收集整理的最小操作系统的代码解释、NASM的初步使用的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 九九碰 | 一二区精品 | 免费色网| 日韩精品一区二区三区中文字幕 | 欧美一区二区在线观看视频 | 色呦呦 | 亚洲精品久久久蜜桃网尤妮丝 | 免费激情网 | 欧美午夜精品久久久久久人妖 | 九九视频在线播放 | av色综合 | 国内免费av | 在线免费观看av网站 | 综合网在线视频 | 无码人妻精品一区二区蜜桃视频 | 91在线精品李宗瑞 | 超碰caopeng | 91免费.| 国产精品日韩欧美一区二区三区 | av动漫天堂 | 国产精品制服诱惑 | 日日噜噜噜 | 国产精品乱轮 | 中文字幕一区二区精品 | 偷偷操av| 色屁屁一区二区三区 | 成人av在线网站 | 日韩字幕在线 | 香蕉色视频| 成人免费在线视频网站 | 日本伦理一区二区三区 | 欧美精品久久久久久久自慰 | 俄罗斯丰满熟妇hd | av尤物在线 | 日本少妇性高潮 | 日韩高清影视在线观看 | 尤果网福利视频在线观看 | 美女扒开内裤让男人捅 | 久久视频免费看 | 超鹏在线视频 | 夜夜久久久 | 警察高h荡肉呻吟男男 | 国产a视频精品免费观看 | 精品久久久久久久久久久aⅴ | 超碰这里只有精品 | 97久久精品 | 蜜臀av一区二区 | 999久久久精品 | 欧美国产乱视频 | 欧美激情videos | 羞视频在线观看 | 黄色美女片 | 日韩欧美在线视频播放 | 亚欧洲精品视频在线观看 | 国产在线精品播放 | 三级黄色网络 | 国产裸体无遮挡 | 久久久久久少妇 | 小草av在线| 香蕉av777xxx色综合一区 | 国产精品一卡 | 日韩精品免费一区 | 国产野外作爱视频播放 | 成人欧美一区二区三区在线播放 | 一级片免费视频 | 婷婷av一区二区三区 | 亚洲成熟毛多妇女av毛片 | 人妖黄色片 | 欧美成人性色 | 久久国产精品电影 | 婷婷狠狠 | 久久偷看各类女兵18女厕嘘嘘 | 日日夜夜天天综合 | 欧美第一页草草影院 | 日本精品免费一区二区三区 | www.黄在线观看 | 91自啪| 中文字幕在线播 | 在线综合av | 少妇喷白浆 | 欧美激情一区二区三区 | www.黄色.| 射久久 | xxsm.com| 免费91视频 | 波多野结衣国产在线 | 最新黄色av网址 | 国产香蕉av | 91玉足脚交嫩脚丫在线播放 | 狠狠爱夜夜操 | 中文字幕高清在线免费播放 | 滋润少妇h高h | 亚洲一区二区天堂 | 久久日视频 | www.久久av | 久久久国产精品久久久 | 成av人片在线观看www | 先锋av资源网| 色呦呦网站在线观看 |