第5章程序.ppt
《第5章程序.ppt》由会员分享,可在线阅读,更多相关《第5章程序.ppt(60页珍藏版)》请在三一文库上搜索。
1、,第 5 章:程序,2,本章概述,連結外部函式庫 運用程序的程式設計 堆疊運算 定義和使用程序 運用程序的程式設計,3,本書所用的連結函式庫,連結函市庫概觀 呼叫一個函市庫程序 到一個函市庫連結 函市庫程序概觀 六個例子,4,連結函市庫概觀,一個包含已經進入機器之內被編譯的程序的檔案 從一個或更多的 OBJ 檔案構造 建立一間函式庫 . . . 從一或更多的ASM來源檔案開始 組合每個進入一個 OBJ 檔案 創造一個空的函市庫檔案(延長 LIB) 把 OBJ 檔案 (s)加入函市庫檔案,使用微軟 LIB 實效,藉由在這一個螢幕的底部按下例子快看 Irvine32. asm.,5,呼叫一個函市庫
2、程序,INCLUDE Irvine32.inc .code mov eax,1234h ; input argument call WriteHex ; show hex number call Crlf ; end of line,呼叫使用指令的一個函市庫程序.一些程序需要輸入引數.那在程序原型中包括指令的副本(公告). 下列的例子在控制檯上顯示 “1234“ :,6,到一個函市庫連接,對使用一個被命名的檔案裡連接器指令 Irvine32. lib 你的程式連結make32.bat. 注意二個 LIB 檔案:Irvine32. lib, 和kerne 32.lib 後者是微軟贏 32 軟體發
3、展配套的部份(SDK),7,下一章,連結外部函式庫 本書所用的連結函式庫 堆疊運算 定義而且使用程序 運用程序的程式設計,8,函式庫程序概觀(1 of 4),CloseFile 將先前開啟的磁碟檔案予以關閉 Clrscr 清除主控台視窗,並將游標重新定位於左上角 CreateOutputFile 建立一個能在輸出模式下寫入資料的新磁碟檔案 Crlf 寫入一個行末 (end-of-line) 標記到主控台視窗 Delay -將程式的執行暫停個毫秒的時間間隔 DumpMem -以十六進位的表示方式,將一個區塊的記憶體內容寫入到主控台視窗 DumpRegs 以十六進位的方式顯示EAX、EBX、ECX
4、、EDX、ESI、EDI、EBP、ESP、 EFLAGS 及EIP 等暫存器的內容值。同時也顯示最常用到的CPU 狀態旗標 GetCommandtail -複製程式命令列的參數 ( 也稱為command tail) 到一個由位元組所組成的陣列裡 GetMaxXY -取得主控台視窗的緩衝區的行數與列數 GetMseconds -回傳一個從午夜十二點之後所經過的時間值,以毫秒為單位,9,函式庫程序概觀(2 of 4),GetTextColor -回傳現行的主控台視窗的文字顏色和底色 Gotoxy -在主控台視窗中,將游標定位到指定的行與列的位置上 IsDigit -如果AL 暫存器所含有的ASCI
5、I 碼是十進位數字(0-9),則設定零值旗標 MsgBox, MsgBoxAsk 顯示一個彈出式訊息視窗,在彈出式視窗中顯示是/ 否的問題 OpenInputFile 開啟一個現存的磁碟檔案用於輸入 ParseDecimal32 將一個無號的十進位整數字串轉換成32 位元二進位整數 ParseInteger32 -將一個有號的十進位整數字串轉換成32 位元二進位整數 Random32 -產生一個32 位元的擬隨機整數,其數值範圍在到FFFFFFFF 之間 Randomize -以一個唯一值,作為隨機數產生器的種數 RandomRange -產生一個位於某個指定範圍內的擬隨機整數 ReadCha
6、r -等待一個由鍵盤所輸入的單一字元,並且回傳該字元,10,函式庫程序概觀(3 of 4),ReadFromFile 由輸入的磁碟檔案讀取資料到緩衝區中 ReadDec -由鍵盤讀取一個無號的32 位元十進位整數,並且在接收到Enter 鍵時結束讀取動作 ReadHex -由鍵盤讀取一個32 位元的十六進位整數,並在接收到Enter 鍵時結束讀取動作 ReadInt -由鍵盤讀取一個32 位元的有號十進位整數,並且在接收到Enter 鍵時結束讀取動作 ReadKey 在不等待輸入動作的情形下,由鍵盤的輸入緩衝區讀取一個字元 ReadString -由鍵盤讀取一個字串,並且在接收到Enter 鍵
7、時結束讀取的動作 SetTextColor -設定隨後要輸出到主控台的文字的顏色和底色 StrLength 回傳字串的長度 WaitMsg -顯示一個訊息,並且等待一個鍵被按下 WriteBin -以ASCII 二進位格式,寫入一個無號的32 位元整數到主控台視窗 WriteBinB 以位元組、字組或雙字組的格式,將一個二進位整數寫到主控台視窗 WriteChar -將單一個字元寫入到主控台視窗,11,函式庫程序概觀(4 of 4),WriteDec -以十進位格式寫入一個無號的32 位元整數到主控台視窗 WriteHex -以十六進位格式寫入一個無號的32 位元整數到主控台視窗 WriteH
8、exB 以十六進位格式,將一個位元組、字組或雙字組整數寫到主控台視窗 WriteInt -以十進位格式寫入一個有號的32 位元整數到主控台視窗 WriteString -將一個以空字元作為結尾的字串寫到主控台視窗 WriteToFile -將一個緩衝區寫到輸出檔案 WriteWindowsMsg -將含有由MS-Windows 所產生最近一個訊息的字串顯示出來,12,例子1,.code call Clrscr mov eax,500 call Delay call DumpRegs,清除螢幕,為 500 毫秒延遲計畫,而且傾卸暫存器和旗標.,13,例子 2,.data str1 BYTE “A
9、ssembly language is easy!“,0 .code mov edx,OFFSET str1 call WriteString call Crlf,顯示零結束了列而且移動游標到下一個螢幕線的開始.,14,例子 2a,.data str1 BYTE “Assembly language is easy!“,0Dh,0Ah,0 .code mov edx,OFFSET str1 call WriteString,顯示零結束了字串而且移動游標到下一個螢幕線的開始(使用植入的 CRLF),15,例子 3,IntVal = 35 .code mov eax,IntVal call Wri
10、teBin ; display binary call Crlf call WriteDec ; display decimal call Crlf call WriteHex ; display hexadecimal call Crlf,顯示在二進位,十進位和十六進位的一個未被簽署的整數,每個在一條單獨的列上,16,Example 4,.data fileName BYTE 80 DUP(0) .code mov edx,OFFSET fileName mov ecx,SIZEOF fileName 1 call ReadString,輸入來自使用者的字串。 EDX 指向線和 ECX 記載
11、使用者被允許進入的最大字元的數字。,一個無效力的位元組自動地到字串被附加.,17,例子 5,.code mov ecx,10 ; loop counter L1: mov eax,100 ; ceiling value call RandomRange ; generate random int call WriteInt ; display signed int call Crlf ; goto next display line loop L1 ; repeat loop,產生並且顯示十個假散亂在範圍 0-99 中標示整數.在一條單獨的列上通過每個整數給在 EAX 中的 WriteInt
12、而且顯示它。,18,例子 6,.data str1 BYTE “Color output is easy!“,0 .code mov eax,yellow + (blue * 16) call SetTextColor mov edx,OFFSET str1 call WriteString call Crlf,顯示零和在藍色的背景上的黃色的個性結束了字串.,背景顏色在 16 點之前在被加到前景顏色之前被繁殖。,19,下一章,連結外部函式庫 本書所用的連結函式庫 堆疊運算 定義和使用程序 運用程序的程式設計,20,堆疊運算,執行時期堆疊 PUSH 運算 POP 運算 PUSH 和 POP指令
13、使用 PUSH 和 POP 例子:字串倒轉 相關的指令,21,執行時期堆疊,想像板塊的堆疊. . . 板塊只被加到頂端 板塊只從頂端被移動 LIFO結構,22,執行時期堆疊,藉著中央處理器處理,使用二個暫存器 SS (堆疊片段) ESP (堆疊指針) *,* SP in Real-address mode,23,PUSH 運算(1 of 2),一個 32位元推動行動漸減堆疊指針在 4 之前而且拷貝價值進入被堆疊指針指向的地點。,24,PUSH 運算 (2 of 2),相同的堆疊在推動另外二個整數之後:,在 ESP 下面的區域總是可得的。(除非堆疊已經氾濫),25,POP 運算,副本進入一個暫存
14、器或變數之內在堆疊ESP評價. 把 n 加入 ESP, n 是或 2 或 4. n 的價值靠接受資料的運算元的屬性,26,PUSH 和 POP 指令,PUSH 語法: PUSH r/m16 PUSH r/m32 PUSH imm32 POP 語法: POP r/m16 POP r/m32,27,使用 PUSH 和 POP,push esi ; push registers push ecx push ebx mov esi,OFFSET dwordVal ; display some memory mov ecx,LENGTHOF dwordVal mov ebx,TYPE dwordVal
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 章程
链接地址:https://www.31doc.com/p-2550961.html