30天自製作業系統day4

2021-07-01 22:03:51 字數 589 閱讀 8110

這章主要講如何在螢幕上進行繪製。

由於一些功能無法用c語言完成,所以這章用到了許多c和彙編的混合程式設計。基本上是在彙編裡定義函式,label比函式名前面多乙個下劃線」_」。函式的引數壓入棧中,可以用[esp+offset]獲得,如果是帶有返回值的函式,在ret前使用pop eax。返回值預設是放在eax中的。

傳引數的例子:

_io_in32:

;void io_in32(int port) 從埠讀入

mov edx,[esp+4]

in eax,dx

ret

帶返回值的例子:

_io_load_eflags:

;int io_load_eflags() 讀取flag暫存器的值

pushfd

pop eax

ret

用cli指令關中斷

將要設定的調色盤序號寫入0x03c8

按r,g,b的順序依次寫入0x03c9,則該調色盤的顏色就是這個rgb值

有了這些基本的功能,我們就能在螢幕上繪製基本圖形了。

《30天自製作業系統》第4天

1.c語言與畫面顯示的練習 彙編與c 語言結合時能自由使用的寄存區只有 eax,ecx,edx3 個,其他寄存區用於記憶非常重要的值,只能讀不能寫。intel系列 cpu 8086 80186 286 386 486 pentium pentiumpro pentium2 pentium3 pent...

30天自製作業系統

第一天的內容很少,是一些簡單的基礎知識,在這裡我就沒有必要寫出來了,只說出大概的輪廓了,然後我會對其中的幾點進行詳細的解釋。文章的第一天的輪廓大概是這樣的,作者首先用二進位制編輯器做了乙個顯示二進位制的程式,然後用彙編完全db的形式,後又進行改善,最後以比較標準的組合語言編寫,但程式主體部分還沒有翻...

30天自製作業系統day01

第一天的標題,從計算機結構到匯程式設計序入門。這一天作者共講了一下內容 1.作者上來就用二進位制編輯器製作了乙個軟盤映象boot.img。像作者一樣,現在已經不需要再去購買軟盤,再說就算想買也不一定買得到。本人使用qemu載入軟盤映象,命令 qemu system i386 fda boot.img...