Win32汇编_基础

Win32汇编_基础

包含全部段的源程序结构:
.386
.model flat, stdcall
Option casemap:none
;<
一些include语句>
.stack [
堆栈段的大小]
.data
;<
一些初始化过的变量定义>
.data?
;<
一些没有初始化过的变量定义>
.const
;<
一些常量定义>
.code
;<
代码>
;<
开始标号>
;  <
其它语句>
end 
开始标号


调用API:
push uType
push lpCaption
push lpText
push hWnd
call MessageBox

;MASM
编译器的伪指令
invoke MessageBox, NULL, offset szText, offset lpCaption, MB_OK

函数的返回值:
一般放在eax.如果返回的内容不是一个eax所能容纳的,一般是eax中返回一个指向返回数据的指针,或者用参数提供一个缓冲区地址,数据直接返回到缓冲区中去.

函数的声明:
函数名 proto [距离] [调用方式] [参数1]: 数据类型, [参数2]: 数据类型, …
参数名可以省略.

标号:
当在程序使用一条跳转指令的时候,可以用标号来表示跳转的目的地,在编译的时候会把它替换成地址,标号既可以定义在目标指令同一行的头部,也可以在目标指令前一行单独用一行定义.

标号: 目标指令    ;方法1
标号:: 目标指令   ;方法2
方法1(一个冒号),作用域是当前子程序,方法2(一个冒号),作用域是整个程序

@@:
当用@@做标号时,可以用@F@B来引用它,@F表示本条指令后的第一个@@标号,@B表示本条指令前的第一个@@标号,程序中可以有多个@@标号,@F@B只寻找匹配最近的一个.

原文地址:https://www.cnblogs.com/w413133157/p/1803398.html