汇编 Irvine32链接库中一些过程函数的使用说明
Irvine32鏈接庫過程的使用說明
CloseFile 關閉文件
mov eax, fileHandle call CloseFileClrscr 清屏
call WaitMsg call ClrscrCreateOutputFile 打開文件進行寫
.data filename byte "newfile.txt", 0 .code mov edx, offset filename call CreateOutputFileClrf 將光標定位到下一行的開始位置
call Clrf
Delay 暫停程序指定毫秒數
mov eax, 1000 call DelayDumpMem 用十六進制形式顯示一段內存區域
.data array dword 1, 2, 3, 4, 5, 6, 7, 8, 9, 0Ah, 0Bh .code main procmov esi, offset arraymov ecx, lengthof arraymov ebx, type arraycall DumpMemDumpRegs 用十六進制形式顯示eax, ebx, ecx, edx, esi, edi, ebp, esp, eip【調用DumpRegs的下一條指令】, eflags的內容
GetCommandTail 程序命令行復制到一個空字符結束的字符串中,若命令行為空,則進位置1,否則清零,至少為129個字符
; Ecrypt file1.txt file2.txt.data cmdTail byte 129 dup(0) .code mov edx, offset cmdTail call GetCommandTailGetMaxXY 獲取控制臺窗口緩沖區的大小, dx列數,ax行數,不超過255
.data rows byte ? cols byte ? .code call GetMaxXY mov rows, al mov cols, dlGetMseconds 獲取主機從午夜開始經過的毫秒數,用eax返回值
.data startTime dword ? .code call GetMseconds mov startTime, eax L1: loop L1 call GetMseconds sub eax, startTimeGetTextColor 獲取控制臺當前的前景色和背景色, al高4位是背景色,低4位是前景色
.data color byte ? .code call GetTextColor mov color, alGotoxy 將光標定位到指定位置,x:0到79,y:0到24,x: dl,y:dh
mov dh, 20 mov dl, 20 call GotoxyIsDigit 確定al中的數值是否是一個有效十進制的ascii碼,若是,則零標志為1,否則為0
mov al, somechar call IsDigitMsgBox 顯示一個帶選擇項的圖形界面彈出消息框,運行于控制臺有效。edx傳遞內容偏移量,ebx傳遞標題偏移量,沒有,則ebx為0
.data caption byte "dialog Title", 0 HelloMsg byte "This is a pop-up message box.", 0dh, 0ah,"Click OK to continue...", 0 .code mov ebx, offset caption mov edx, offset HelloMsg call MsgBoxMsgBoxAsk 顯示一個帶有Yes和No按鈕的圖形彈出消息框,運行于控制臺有效。edx傳遞內容偏移量,ebx傳遞標題偏移量,沒有,則ebx為0,eax中的值表示用戶選擇的是哪個按鈕,IDYES(6)和IDNO(7)
.data caption byte "Survey Completed", 0 question byte "Thank you for completing the survey.", 0dh, 0ah,"Would you like to receive the results?", 0 .code mov ebx, offset caption mov edx, offset queston call MsgBoxAskOpeninputFile 打開一個已存在的文件進行輸入
.data filename byte "myfile.txt", 0 .code mov edx, offset filename call OpeninputFileParseDecimal32 將一個無符號十進制數字符串轉換為32位二進制數
.data buffer byte "B193" bufSize = ($ - buffer) .code mov edx, offset buffer mov ecx, bufSize call ParseDecimal32 ; 返回eax; 整數為空或只有空格或整數大于最大值,eax=0 cf=1 ; eax為轉換后的值, cf = 0ParseInteger32 將一個有符號十進制數字符串轉換為32位二進制數
.data buffer byte "-8192" bufSize = ($ - buffer) .data mov edx, offset buffer mov ecx, bufSize call ParseInteger32 ; 返回eax ; 不能表示,則of = 1Random32 生成一個32位隨機整數
.data randVal dword ? .code call Random32 mov randVal, eaxRandomize 為Random32和RandomRange的第一個種子進行初始化
call Randomizemov ecx, 10L1: call Random32loop L1RandomRange 在0到n-1生成一個隨機整數,n是eax傳遞的參數,并用eax返回隨機整數
.data randVal dword ? .code mov eax, 5000 call RandomRange mov randVal, eaxReadChar 從鍵盤讀取一個字符,并用al返回,但不在控制臺窗口回顯
.data char byte ? call ReadChar mov char, al ; ah包含鍵盤掃描碼,al=0ReadDec 從鍵盤讀取一個32位無符號十進制數,用eax返回,返回值為第一個非數字字符之前的所有有效數字,前導空格忽略
.data intVal dword ? .code call ReadDec mov intVal, eax ; 整數為空或只有空格或整數大于最大值,eax=0 cf=1 ; eax為轉換后的值, cf = 0ReadFromFile 讀取存儲緩沖區中的一個輸入磁盤文件,eax傳遞文件的句柄,edx傳遞緩沖區的偏移量,ecx傳遞讀取的最大字節數
- cf為0,則eax為讀取的字節數,否則eax為錯誤代碼,用WriteWindowsMsg獲取錯誤代碼的文本形式
ReadHex 從鍵盤讀取一個32位十六進制整數,用eax返回二進制數。對無效字符不進行錯誤檢查。A到F大小寫都可用,最多為8個字符,超過8個忽略,忽略前導空格
.data hexVal dword ? .code call ReadHex mov hexVal, eaxReadInt 從鍵盤讀取一個32位有符號整數,用eax返回。可用+/-,后跟數字。不能表示, ov=1,返回錯誤信息,返回值為第一個非數字字符之前的所有有效數字,前導空格忽略
.data intVal sdword ? .code call ReadInt mov intVal, eaxReadKey 執行無等待鍵盤檢查。沒有按鍵操作,則zf=1,否則為0。向al送入0或ascii碼。al=0,則為一個特殊鍵。ah為虛擬掃描碼。dx為虛擬鍵碼。ebx為鍵盤標志位
- eax和edx的高16位會被覆蓋
ReadString 從鍵盤讀取一個字符串,直到遇到回國鍵。edx傳遞緩沖區的偏移量,ecx傳遞用戶輸入的字符數+1,eax返回字符數
.data buffer byte 21 dup(0) byteCount dword ? .code mov edx, offset buffer mov ecx, sizeof buffer call ReadString mov byteCount, eax ; 自動加一個null終止符SetTextColor 設置輸出文本的前景色和背景色。給eax分配一個顏色屬性
mov eax, yellow + (blue shl 4) call SetTextColorStr_length 返回空字符結束的字符串的長度,edx傳遞字符串的偏移量,eax返回長度
.data buffer byte "abcde", 0 bufLength dword ? .code mov edx, offset buffer call Str_lengthof mov bufLength, eaxWaitMsg 顯示“Press any key to continue…”,等待用戶按鍵
call WaitMsg
WriteBin 以ascii二進制格式抽控制臺窗口輸出一個整數,用eax傳遞該整數。
mov eax, 12346AF9h call WriteBinWriteBinB 以ascii二進制格式向控制臺窗口輸出 一個32位整數,eax傳遞該整數,ebx表示以字節為單位的顯示大小(1,2,4)
mov eax, 00001234h mov ebx, type word call writeBinBWriteChar 向控制臺窗口寫一個字符,用al傳遞字符
mov al, 'A' call WriteCharWriteDec 以十進制格式向控制臺窗口輸出一個32位無符號整數,且沒有前置0,用eax傳遞該整數
mov eax, 295 call writeDecWriteHex 以8位十六進制格式向控制臺窗口輸出一個32位無符號整數,若需要,應插入前置0,eax傳遞該整數
mov eax, 7fffh call WriteHexWriteHexB 以十六進制格式向控制臺窗口輸出一個32位無符號整數,若需要,應插入前置0,eax傳遞該整數,ebx表示以字節為單位的顯示大小(1,2,4)
mov eax, 7fffh mov ebx, type word call WriteHexBWriteInt 以十進制格式向控制臺窗口輸出一個32位有符號整數,有前置符號,沒有前置0。用eax傳遞整數
mov eax, 216543 call WriteIntWriteString 以窗口輸出一個空字符結束的字符串,edx傳遞字符串的偏移量
.data prompt byte "Enter your name: ", 0 .code mov edx, offset prompt call WriteStringWriteToFile 向一個輸出文件寫入緩沖區內容。用eax傳遞有效文件句柄,edx傳遞緩沖區偏移量,ecx傳遞定稿的字節數,eax>0,則寫入的是字節數,否則錯誤
BUFFER_SIZE = 5000 .data fileHandle dword ? buffer byte BUFFER_SIZE dup(?) .code mov eax, fileHandle mov edx, offset buffer mov ecx, BUFFER_SIZE call WriteToFileWriteWindowsMsg 向控制臺窗口輸出應用程序在調用系統函數時最近產生的錯誤信息
call WriteWindowsMsg
總結
以上是生活随笔為你收集整理的汇编 Irvine32链接库中一些过程函数的使用说明的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 浮点数 IEEE表示 舍入 运算
- 下一篇: Irvine64链接库过程的使用说明 M