匯編語言編程初步

匯編語言編程初步

ID:43522731

大?。?51.00 KB

頁數(shù):33頁

時間:2019-10-09

匯編語言編程初步_第1頁
匯編語言編程初步_第2頁
匯編語言編程初步_第3頁
匯編語言編程初步_第4頁
匯編語言編程初步_第5頁
資源描述:

《匯編語言編程初步》由會員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。

1、第15章Windows匯編語言編程初步15.1Windows基礎(chǔ)15.2Win32匯編源程序的格式15.3Win32匯編可執(zhí)行文件的生成15.4Win32匯編基本語法15.5創(chuàng)建Windows下的窗口程序15.1Windows基礎(chǔ)1.Windows的內(nèi)存管理Windows操作系統(tǒng)為每一個應(yīng)用程序建立一個4GB的線性空間。線性空間中只包含該應(yīng)用程序的數(shù)據(jù)段和代碼段,操作系統(tǒng)使用的代碼和數(shù)據(jù)(如全局描述符表GDT,局部描述符表LDT與頁表等)以及一些共享代碼和數(shù)據(jù)等。2.Win32匯編的內(nèi)存尋址與實(shí)模式的匯編相比,Win32匯編對內(nèi)存數(shù)據(jù)的訪問更加方便。(2)Wind

2、ows操作系統(tǒng)不僅已經(jīng)預(yù)先為要運(yùn)行的用戶應(yīng)用程序的代碼段、數(shù)據(jù)段和堆棧段設(shè)置好描述符,規(guī)定這些段的的段基址都為0,段界限都為FFFFFFFFH。而且程序開始執(zhí)行時,CS,DS,ES,SS里存放的選擇子已經(jīng)指向正確的描述符,程序員不需要給這些段寄存器賦值。在整個程序運(yùn)行期間,程序員也不應(yīng)該修改這些段寄存器的值。(1)在Windows系統(tǒng)中,每個應(yīng)用程序的整個4GB線性地址空間都作為一個段。代碼段和數(shù)據(jù)段/堆棧段的空間統(tǒng)一的,都是00000000H~FFFFFFFFH。在這個4GB的地址空間中,一部分用來存放程序,一部分作為數(shù)據(jù)區(qū),一部分作為堆棧,另外還有一部分被系統(tǒng)

3、使用。這些部分的地址區(qū)域是不重合的。3.Windows下的中斷和異常(1)為了系統(tǒng)的安全,運(yùn)行在特權(quán)級3的應(yīng)用程序是不能像工作在實(shí)模式下一樣,自己來編寫中斷服務(wù)子程序,也不能通過修改中斷描述符表來調(diào)用系統(tǒng)提供的中斷服務(wù)子程序。(2)在Windows操作系統(tǒng)中,使用Windows提供的應(yīng)用程序編程接口(API)來代替中斷服務(wù)子程序提供的系統(tǒng)功能4.Windows系統(tǒng)下的I/O保護(hù)應(yīng)用程序執(zhí)行時,對端口是不能直接進(jìn)行訪問的,也不能使用STI,CLI中斷允許和禁止指令。15.2Win32匯編源程序的格式15.2.1源程序結(jié)構(gòu).586 .MODELFLAT,STDCALL

4、.OPTIONCASEMAP:NONE .DATA <定義有初始化值的變量> .DATA? <定義未初始化值的變量> .CONST <定義常量> .CODE <標(biāo)號> <代碼> ..... END<標(biāo)號>1.方式選擇偽指令.586是一個匯編語言偽指令,含義和DOS匯編相同.2.內(nèi)存模式選擇偽指令.MODEL是用來指定內(nèi)存模式的偽指令。.MODELFLAT匯編程序自動為各種段寄存器做如下段約定:ASSUMECS:FLAT,DS:FLAT,SS:FLAT,ES:FLATSTDCALL告訴匯編程序參數(shù)的傳遞約定。Win32匯編語言采用STDCALL格式。STDCALL格

5、式參數(shù)傳遞順序是從右到左,即最右邊的參數(shù)最先壓棧,由被調(diào)用者(子程序)恢復(fù)堆棧指針。3.OPTION語句OPTIONCASEMAP:TYPE說明程序中的變量和子程序名是否對大小寫敏感,即區(qū)分大小寫。由于WindowsAPI函數(shù)是區(qū)分大小寫,選項(xiàng)應(yīng)設(shè)置為“OPTIONCASEMAP:NONE”。4.段定義偽指令WIN32中只包含代碼段和數(shù)據(jù)段:DATA和CODE其中數(shù)據(jù)段又分為三種.DATA.DATA?.CONST.DATA定義已初始化的變量。這些變量的值在程序的執(zhí)行中可以被更改。.DATA?定義未初始化的變量。.CONST定義常量,這些常量在程序運(yùn)行過程中是不能更

6、改的.CODE定義代碼段。格式:END標(biāo)號功能:通知匯編程序,源程序到此結(jié)束,標(biāo)號所對應(yīng)的指令是程序的啟動指令。5.匯編結(jié)束語句Win32匯編語言經(jīng)典源程序例子.586.MODELFLAT,STDCALLOPTIONCASEMAP:NONEINCLUDEWINDOWS.INCINCLUDEKERNEL32.INCINCLUDELIBKERNEL32.LIBINCLUDEUSER32.INCINCLUDELIBUSER32.LIB.DATAMsgBoxCaptionDB'Exampleofwin32',0;消息框標(biāo)題顯示字符串MsgBoxTextDB'Hello,你

7、好!',0;消息框內(nèi)顯示字符串.CODESTART:INVOKEMessageBox,NULL,addrMsgBoxText,addrMsgBoxCaption,MB_OKINVOKEExitProcess,NULLENDSTART15.3Win32匯編可執(zhí)行文件的生成匯編源程序*.asm資源腳本文件*.rc匯編程序資源編譯程序目標(biāo)程序*.obj資源文件*.res鏈接程序Win32可執(zhí)行文件*.exeWin32匯編軟件的開發(fā)可分源程序開發(fā)和資源開發(fā)兩部分匯編鏈接步驟(以教材例15.1為例)(1)?匯編源程序hello.asmml/c/coffhello.asm(2

8、)鏈接目標(biāo)

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動畫的文件,查看預(yù)覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負(fù)責(zé)整理代發(fā)布。如果您對本文檔版權(quán)有爭議請及時聯(lián)系客服。
3. 下載前請仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時可能由于網(wǎng)絡(luò)波動等原因無法下載或下載錯誤,付費(fèi)完成后未能成功下載的用戶請聯(lián)系客服處理。