1. c語言與畫面顯示的練習
彙編與c
語言結合時能自由使用的寄存區只有
eax,
ecx,
edx3
個,其他寄存區用於記憶非常重要的值,只能讀不能寫。
intel系列
cpu:
8086->80186->286->386->486
->pentium->pentiumpro->pentium2->pentium3->pentium4->.....
286是
16位,
386以後是
32位。
2. char i;是類似al的
1位元組變數,
shorti;
是類似ax
,int i
;是類似
eax4
位元組變數。
char *p;
p = (char *)i; //mov eax,i ;給暫存器賦值
*p = i&0x0f; //mov byte[ecx],i&oxff ;給記憶體位址賦值
3. *p並是不什麼變數,變數只有
p,所謂
*p,就相當於彙編中
byte[p]
這種語句的替換。
char *p;宣告的是
p而不是*p。
char *p
不必看做指標,
p不是指標,而是位址變數!!!他表示的是記憶體的位址。
4. *(
p+i)等同於
p[i];
同樣可寫為
i[p];
都是byte[ ecx+i]
, p[2]
和2[p]
是一樣的。
char a[3]; //resb 3
char a[3]=; //db 1,2,3
cpu的管腳與記憶體相連,可通過管腳讀寫資料。
!cons_nt.bat make clean,make run.
編寫作業系統開始是對bios
控制,取出儲存在
rom裡的程式。
bios
是用來執行
post(power on self test
,自檢)
的。自檢是檢查計算機的完整性
(比如外設是否工作正常、鍵盤是否連線等
)。這一切完成以後,你就會聽到
pc喇叭發出一聲清脆的響聲。如果一切正常,
bios
就會選擇乙個啟動裝置,並且讀取該裝置的第一扇區
(即啟動扇區
),然後控制過程就會轉移到指定位置。啟動裝置可能是乙個軟盤、光碟、硬碟,或者其它所選擇的裝置。在此我們把軟盤作為啟動裝置。如果我們已經在軟盤的啟動扇區裡寫了一些**,這時它就被執行。因此,我們的目的很明確,就是往軟盤的啟動扇區寫一些程式。
web伺服器是什麼?首先,他是乙個伺服器,給終端(客戶端)提高服務。客戶端想伺服器發出請求,伺服器返回相應的資料。
web伺服器在某個埠監聽服務,有請求就回應。 。
5. cyls equ 10 ;定義常量
我們先用bios
設定啟動的顏色模式等,然後我們需要儲存設定值,放入記憶體某個區域
vmode equ 0x0ff2
mov byte[vmode],8 ;8位彩色模式儲存到記憶體
0x0ff2
處。而後我們就可以在此記憶體處讀取顏色模式了(
32位系統不好訪問
bios
函式中斷)。同樣可以儲存解析度以及影象緩衝區的起始位址(
0xa000
)等。不能畫面模式使用的顯示卡記憶體(
vram
)不一樣。
至此啟動區**ipl10.nas
不變了,開始
os編寫,
asmhead.nas, naskfunc.nas
彙編編寫的函式,供
c呼叫。
bootpack.c
:呼叫彙編函式的包。
8086加電或復位後,處理器會執行乙個硬體初始化,將**段暫存器
cs內容設為
0xffff
,其他所有暫存器都設為
0,包括指令指標暫存器ip。
8086的
20根位址線
0000-9ffff
用於訪問
dram
記憶體,f0000-fffff
(頂部64k
)用於訪問
rom。
rom裡固化了開機時要執行的指令。開機第一條指令位址位於cs:
ip=0xffff0
,正好位於
rom裡,那裡固化了開機時需要執行的指令。這個
rom就是
bios-rom,
他執行開機自檢
,然後查詢主引導扇區並主載入主引導扇區的
512位元組內容到記憶體位址
0x7c00-0x7dff。
每個扇區以扇區頭開始,然後是512個位元組的資料區。扇區頭包含了每個扇區自己的資訊,主要有本扇區的磁軌號、磁頭號和扇區號,用來供硬碟定位機構使用。現代的硬碟還會在扇區頭部包括乙個指示扇區是否健康的標誌,以及用來替換該扇區的扇區位址。用於替換扇區的,是一些保留和隱藏的磁軌。
6. 學習了微控制器後對cpu
的運作更容易理解,因為微控制器就是乙個簡單的
cpu。
in,out外部輸入輸出指令。
pushfd :
push flag double-world...
popfd : pop flag double-world...
2013-12-24
《30天自製作業系統》第6天
1.pic 可程式設計中斷控制器 pic 連線 8個中斷訊號,監視輸入管腳的 8個中斷訊號。主 pic irq0 irq7 irq2 連線到從 pic irq8 irq15 中斷發生後,cpu 命令pic傳送2 個位元組的資料,格式是 0xcd 0 cpu收到2 個位元組後把資料當做指令來執行。0x...
30天自製作業系統 第3天
cf 進製標誌,1位暫存器 jc 若進製標誌是1,則跳轉 int 0x13 呼叫磁碟bios ah 0x00 系統復位 0x02 讀盤 0x03 寫盤 0x04 校驗 0x0c 尋道 al 處理物件的扇區數 ch 柱面號 0xff cl 扇區號 0 5位 柱面號 0x300 2 dh 磁頭號 dl ...
30天自製作業系統 第0天
hello os tab 4 標準fat12格式軟盤專用 db 0xeb 0x4e 0x90 db helloipl 啟動區的名稱 可為任意字串 dw 512 每個扇區的大小 必須為512位元組 db 1 簇的大小 必須為1個扇區 dw 1 fat的起始位置 一般從第乙個扇區開始 db 2 fat的...