2020.3.28
1. 用c語言實現記憶體寫入
2. 條形圖案(harib01b)
3. 挑戰指標(harib01c)
c語言小知識
4. 指標的應用(1)(harib01d)
5. 指標的應用(2)(harib01e)
6. 色號設定(harib01f)
projects/04_day下的harib01f的naskfunc.nas:
; naskfunc
; tab=4
[format "wcoff"] ; 製作目標檔案的模式
[instrset "i486p"] ; 使用486為止的指令
[bits 32] ; 製作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);
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);
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);
mov edx,[esp+4] ; port
mov eax,[esp+8] ; data
out dx,eax
ret_io_load_eflags: ; int io_load_eflags(void);
pushfd ; push eflags
pop eax
ret_io_store_eflags: ; void io_store_eflags(int eflags);
mov eax,[esp+4]
push eax
popfd ; pop eflags
ret
in: cpu從裝置取得電氣訊號的指令
out: cpu向裝置傳送電訊號的指令
沒有mov eax, eflags
的命令,所以,只能借助棧來實現,pushfd和popfd。
pushfd: push flags double-word,將標誌位按雙字長壓入棧。
其實,它所做的就是push eflags
。
popfd: push flags double-word,將標誌位按雙字長彈出棧。
其實,它所做的就是pop eflags
。
io_load_eflags**含義
pushfd
:將標誌位壓入棧;pop eax
,將棧中的資料(標誌位)彈出給eax。
注意到:這個函式是有返回值的。
根據c語言的規約,執行ret時,eax中的值就被看做成函式的返回值。
io_store_eflags**含義
mov eax,[esp+4]
:將eflags放入eax中;push eax
:將eax彈入棧中;popfd
:將棧中的資料彈出,給eflags
make run
:
條紋的顏色改變了。這證明程式正確。
7. 繪製矩形(harib01g)
8. 今天的成果(harib01f)
9. 拓展:畫心(harib01i_ex)
10. 題外話:使用mfc畫心(harib01i_ex)
第4天 函式 函式的應用(練習01)
class funcationdemo3 需求1 定義個功能,完成兩個整數的和的獲取 思路 既然可以定義功能,就可以用函式來體現 如何頂乙個函式呢?通過兩個明確來完成。明確一 這個功能的結果是什麼?是和,功能的結果,所以該功能的返回值型別是int 其實就是在明確函式的返回值型別。明確二 這個功能實現...
C語言的模擬練習(4)
程式 include include 完成猜數字遊戲 void chaishuzi else if value 0 else else if key printf 大了!n else 寫 可以在整型有序陣列中查詢想要到數字,找到了返回下標,找不到返回 1 折半查詢 int baniry sort i...
c語言程式設計第4周程式設計練習(素數和)
1 素數和 5分 題目內容 我們認為2是第乙個素數,3是第二個素數,5是第三個素數,依次類推。現在,給定兩個整數n和m,0輸入格式 兩個整數,第乙個表示n,第二個表示m。輸出格式 乙個整數,表示第n個素數到第m個素數之間所有的素數的和,包括第n個素數和第m個素數。輸入樣例 2 4輸出樣例 進步 在使...