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