這一章只要是寫了如何讓螢幕顯示我們想要的畫面;
彙編檔案nasfunc.nas是用來寫一些要用彙編開實現的一些功能:
; naskfunc
; tab=
4[format "wcoff"
]; 製作目標檔案的模式
[instrset "i486p"
]; 使用到486為止的指令
[bits 32];
3製作32位模式用的機器語言
[file "naskfunc.nas"
]; 檔名
global _io_hlt, _io_cli, _io_sti, _io_stihlt ;定義其函式名
global _io_in8, _io_in16, _io_in32
global _io_out8, _io_out16, _io_out32
global _io_load_eflags, _io_store_eflags
[section .text]
_io_hlt:
;void
io_hlt
(void
); cpu暫停執行
hltret
_io_cli:
;void
io_cli
(void
); 關閉中斷
cliret
_io_sti:
;void
io_sti
(void
); 開啟中斷
stiret
_io_stihlt:
;void
io_stihlt
(void);
stihlt
ret_io_in8:
;int
io_in8
(int port)
;//寫入乙個位元組資料
mov edx,
[esp+4]
; port
mov eax,
0 in al,dx
ret_io_in16:
;int
io_in16
(int port)
;//寫入兩個位元組資料
mov edx,
[esp+4]
; port
mov eax,
0 in ax,dx
ret_io_in32:
;int
io_in32
(int port)
;//寫入4個位元組資料
mov edx,
[esp+4]
; port
in eax,dx
ret_io_out8:
;void
io_out8
(int port,
int data)
;//讀取乙個位元組資料
mov edx,
[esp+4]
; port
mov al,
[esp+8]
; data
out dx,al
ret_io_out16:
;void
io_out16
(int port,
int data)
;//讀取兩個位元組資料
mov edx,
[esp+4]
; port
mov eax,
[esp+8]
; data
out dx,ax
ret_io_out32:
;void
io_out32
(int port,
int data)
;//讀取4個位元組資料
mov edx,
[esp+4]
; port
mov eax,
[esp+8]
; data
out dx,eax
ret_io_load_eflags:
;int
io_load_eflags
(void);
//然後將32位標誌暫存器eflags壓入堆疊
pushfd ; push eflags
pop eax
ret_io_store_eflags:
;void
io_store_eflags
(int eflags)
;//恢復eflags暫存器
mov eax,
[esp+4]
push eax
popfd ; pop eflags
ret
設定調色盤
1)關閉中斷
2)在調色盤寫入0x3c8
3 ) 根據r g b的順序將其寫入0x03c9,如果要設定下乙個調色盤,再次直接寫入即可
(注:如果是要讀出調色盤的資料,先將調色盤的號碼寫入0x3c7,在從0x03c9讀出3次資料,資料依次就是r g b)
void
init_palette
(void);
set_palette(0
,15, table_rgb)
;return
;/* c語言中的static char語句只能用於資料,相當於彙編中的db指令 */
}void
set_palette
(int start,
int end,
unsigned
char
*rgb)
io_store_eflags
(eflags)
;/* 復原中斷許可標誌 */
return
;}
設定好調色盤之後,就可以在視訊記憶體0xa000寫入對應的顏色即可
void
harimain
(void
)}
Python系統學習第四課
while 迴圈 當乙個條件成立就可以迴圈 不知道具體的迴圈次數,但是知道迴圈的成立條件 benjin 1000 year 0while benjin 2000 benjin benjin 1 0.1 year 1print 第年拿了塊錢。format year,benjin 第1年拿了1100.0...
30天自製作業系統之 第四天
c語言與畫面顯示的練習 依舊先起個部落格隨筆,目前通過這樣的方式才能讓我保持繼續看這本書的動力。脫了好幾天,差點就又放棄了,趁著國慶放假的日子來從新拾起。第四章的主要內容就是利用c語言呼叫組合語言的畫圖介面,然後在c方法中對螢幕進行繪畫,進而達到一種類似window的圖形化介面的功能。這部分還是涵蓋...
C 學習第四課 串
字串 兩種形式,一種是c模式,一種是c 模式 c模式 char a 6 char a hello 幾種函式 strcpy str1,str2 將str2的內容複製到str1上 strcat str1,str2 將str2連到str1的後面 strlen str1 求取字串str1的長度 strcmp...