日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Win32汇编基本编程框架

發布時間:2025/4/14 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Win32汇编基本编程框架 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Win32匯編編程框架如下;

.386
.model flat,stdcall
option casemap:none
<一些include語句>
.stack [堆棧段的大小]
.data
<一些初始化過的變量定義>
.data?
<一些沒有初始化過的變量定義>
.const
<一些常量定義>
.code
? ? ?<代碼>
? ? ?<開始標號>
? ? <其它語句>
end 開始標號

開頭幾句解釋如下;

指令集
? ? .386 語句是匯編語句的偽指令,類似指令有:.8086 、 .186 ?、.286 ?、.386/.386p ?、 .486/.486p ?和 .586/.586p 用于告訴編譯器在本程序中使用的指令集。
? ? 后面帶p的偽指令則表示程序中可以使用特權指令,如:mov cr0,eax ?這一類指令必須在特權極0上運行。?
? ? 如果我們要寫的程序是VxD等驅動程序,中間要用到特權指令,那么必須定義.386p ,在應用程序級別的Win32編程中,程序都是運行在優先級3上,不會用到特權指令,只需定義 .386就夠了。
? ? 如果程序要用到80486處理器 或 Pentium處理器的指令,則必須定義 .486 或 .586。
? ? 如果使用了MMX指令,除了定義 .586之外,還要 .mmx偽指令。
? ? 其它一些簡單程序,.386就可以了。

.model 語句 模式定義
? ? .model 內存模式 [,語言模式] [,其它模式] ? (用中括號括起來的是可選)
? ? 內存模式的定義影響最后生成的可執行文件,執行文件的規模從小到大,可以很多類型。
? ? 語言模式即子程序調用方式,它指出了調用子程序或Win32 API時參數傳遞的次序和堆棧平衡的方法。
? _ stdcall調用——是Pascal程序的缺省調用方式,參數采用從右到左的壓棧方式(倒序壓入),被調用函數 自身在返回前清空堆棧。Win32 API 都采用這種調用方式。
? _cdecl 調用 ——是C/C++的缺省調用方式,參數從右到左的壓棧方式,調用者 清空堆棧。 所以產生的可執行文件大小會比調用_stdcall函數大。

option 語句
?option casemap:none 的意義是告訴編譯器程序中變量名和子程序名是否對大小寫敏感。 none 對大小寫敏感。
? ?Win32 API的函數名稱本質是區分大小寫的,所以必須指定這個選項。

下面是最基本Win32匯編示例;

要先保存為.asm文件才能構建;.asm文件保存在masm32目錄下,非bin目錄下,masm32環境自己處理;

程序啥也不干,調用?ExitProcess 直接退出;

.386 .model flat,stdcall option casemap:noneinclude s:\masm32\include\windows.inc include s:\masm32\include\kernel32.inc includelib s:\masm32\lib\kernel32.lib.data .code start: invoke ExitProcess,0 end start

.model flat,stdcall

? ? 這句如果把逗號半角寫成全角,將出現錯誤:

?error A2119: language type must be specified

invoke ExitProcess,0
? ? 這句如果把逗號半角寫成全角,將出現錯誤:

?error A2044: invalid character in file

option casemap:none

? ? 這句如果把冒號半角寫成全角,將出現如下面多個錯誤:

windows.inc(156) : error A2004: symbol type conflict : bool

A2004錯誤見此:

? ??https://blog.csdn.net/bcbobo21cn/article/details/108494279

總結

以上是生活随笔為你收集整理的Win32汇编基本编程框架的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。