測試修改cmd背景顏色,輸入輸出整數,輸出字串,列印記憶體內容等函式。
;// 測試 irvine32 庫
;// clrscr 清空控制台
;// crlf 輸出回車換行
;// dumpmem 列印記憶體內容
;// readint 輸入32位整數
;// settextcolor 設定背景和字型顏色
;// waitmsg 暫停執行,輸出等待資訊
;// writebin 輸出整數(二進位制)
;// writehex 輸出整數(十六進製制)
;// writestring 輸出字串
include irvine32.inc
.data
count = 4 ;// 迴圈輸入4個整數
bluetextongray = blue + (lightgray * 16) ;// 灰底藍字
defaultcolor = lightgray + (black * 16) ;// 黑底灰字
arrayd sdword 12345678h, 1a4b2000h, 3434h, 7ab9h ;// 有符號32位陣列
prompt byte "enter a 32-bit signed integer: ", 0 ;// 提示輸入
.code
main proc
;// 設定灰底藍字
mov eax, bluetextongray
call settextcolor
call clrscr
mov esi, offset arrayd
mov ebx, type arrayd
mov ecx, lengthof arrayd
call dumpmem
;// 迴圈 count 次,輸入32位整數,依次輸出十進位制、十六進製制、二進位制形式
call crlf
mov ecx, count
l1:mov edx, offset prompt
call writestring
call readint ;// 讀取整數到 eax
call crlf
call writeint ;// 輸出 eax 中的整數
call crlf
call writehex
call crlf
call writebin
call crlf
call crlf
loop l1
call waitmsg
;// 恢復預設背景顏色和字型顏色
tab = 9 ;// tab 的 ascii 碼
.code
main proc
call randomize ;// 初始化隨機數種子
call rand1
call rand2
exit
main endp
;// 生成10個隨機數
rand1 proc
mov ecx, 10
l1:call random32 ;// 生成隨機整數,儲存到 eax
call writedec
mov al, tab
call writechar ;// 輸出tab
loop l1
call crlf ;// 回車換行
retrand1 endp
;// 生成10個 -50 到 +49 的隨機數
rand2 proc
mov ecx, 10
l1:mov eax, 100 ;// 數值範圍 0~99
call randomrange ;// 生成隨機整數
sub eax, 50
call writeint
mov al, tab
call writechar
loop l1
call crlf
retrand2 endp
end main
Win32彙編基礎
常用指令 mov 目標運算元,源運算元 mov eax,0x0 進行資料傳遞 movzx mov zero x 以0填充高位,用法同上,push poppushad 所有暫存器壓棧 8個 popad 所有暫存器出棧 8個 lea 取位址指令,類似c語言中的 call 呼叫函式指令 add 加 sub...
Win32彙編 實數
386 選擇的處理器 model flat,stdcall option casemap none 指明識別符號大小寫敏感 include kernel32.inc 要引用的標頭檔案 includelib kernel32.lib 要引用的庫檔案 includelib msvcrt.lib 引用c庫...
開始學習win32彙編
前段時間對於csdn的部落格系統徹底失望,在我現在寫的東西都還不知道能不能正常發出去,鬱悶,加上過年有這麼久沒有來了。這段時間開始學習彙編,說到彙編,大學開過兩門相關課程,微機原理和微控制器都是學這方面的,不過那都是8086,51級別的彙編,感覺根本跟不上時代,那時候學的還不錯 現在想學習學習win...