微機原理課程設計32位彙編學習之三(顯示字串)

2021-05-22 02:29:02 字數 1942 閱讀 5571

什麼是「裝置環境」(dc)呢? 它其實是由 windows 內部維護的乙個資料結構。乙個「裝置環境」和乙個特定的裝置相連。像印表機和顯示器。對於顯示器來說,「裝置環境」和乙個個特定的視窗相連。

「裝置環境」中的有些屬性和繪圖有關,像:顏色,字型等。您可以隨時改動那些預設值,之所以儲存預設值是為了方便。您可以把「裝置環境」想象成是windows 為您準備的乙個繪圖環境,而您可以隨時根據需要改變某些預設屬性。

當應用程式需要繪製時,您必須得到乙個「裝置環境」的控制代碼。通常有幾種方法。

您必須牢記的是,在處理單個訊息後你必須釋放「裝置環境」控制代碼。不要在乙個訊息處理中獲得 「裝置環境」控制代碼,而在另乙個訊息處理中在釋放它。

無效區域」。windows 把乙個最小的需要重繪的正方形區域叫做「無效區域」。當 windows 發現了乙個」無效區域「後,它就會向該應用程式傳送乙個 wm_paint 訊息,在 wm_paint 的處理過程中,視窗首先得到乙個有關繪圖的結構體,裡面包括無效區的座標位置等。您可以通過呼叫beginpaint 讓「無效區」有效,如果您不處理 wm_paint 訊息,至少要呼叫預設的視窗處理函式 defwindowproc ,或者呼叫 validaterect 讓「無效區」有效。否則您的應用程式將會收到無窮無盡的 wm_paint 訊息。

.386

.model flat,stdcall

option casemap:none

winmain proto :dword,:dword,:dword,:dword

include /masm32/include/windows.inc

include /masm32/include/user32.inc

includelib /masm32/lib/user32.lib

include /masm32/include/kernel32.inc

includelib /masm32/lib/kernel32.lib

.data?

hinstance hinstance ?

commandline lpstr ?

.code

start:

invoke getmodulehandle, null

mov    hinstance,eax

invoke getcommandline

mov commandline,eax

invoke winmain, hinstance,null,commandline, sw_showdefault

invoke exitprocess,eax

wndproc proc hwnd:hwnd, umsg:uint, wparam:wparam, lparam:lparam

local hdc:hdc

local ps:paintstruct

local rect:rect

.if umsg==wm_destroy

invoke postquitmessage,null

.elseif umsg==wm_paint

invoke beginpaint,hwnd, addr ps

mov    hdc,eax

invoke getclientrect,hwnd, addr rect

invoke drawtext, hdc,addr ourtext,-1, addr rect, /

dt_singleline or dt_center or dt_vcenter

invoke endpaint,hwnd, addr ps

.else

invoke defwindowproc,hwnd,umsg,wparam,lparam

ret

.endif

xor   eax, eax

ret

wndproc endp

end start

8086組合語言課程設計

最近自學了王爽的 組合語言 全書共有兩次課程設計,這是第乙個 給定資料如下 data segment db 1975 1976 1977 1978 1979 1980 1981 1982 1983 db 1984 1985 1986 1987 1988 1989 1990 1991 1992 db ...

《組合語言》課程設計1

最近在學習王爽老師的 組合語言 感覺十分有意思。花了乙個下午做了第十章的課程設計1,對於組合語言新手來說還是有點難的。下面把 貼出來吧。一共200多行,感覺有些地方寫麻煩了,還可以更靈活的應用迴圈assume cs codesg data segment db 1975 1976 1977 1978...

彙編課程設計 閏年判斷程式詳解

程式說明 這是乙個判斷某一年是否為潤年的程式,執行可執行程式ifleap.exe後,輸入具體的年份,可輸出是本年是否為閏年的提示資訊。函式圖 data segment 定義資料段 infon db 0dh,0ah,please input a year infon 雙位元組,回車換行,內容 y db...