汇编语言-学习

一个标准的汇编语言程序



.386
.model flat , stdcall             //cs=FLAT、 ds=FLAT、 es=FLAT、 fs=ERROR、 gs=ERROR
option casemap:none

include windows.inc
include user32.inc
include kernel32.inc
includelib user32.lib
include kernel32.lib

.data  //数据段
    szCaption db 'a MessageBox !' ,0
    szText        db 'Hello,World!',0

.code  //代码段
start:
    invoke MessageBox , NULL,offset szText, offset szCaption , MB_OK
    invoke ExitProcess, NULL

end start

各段与PE文件的节区对应
.data   ==   _DATA
.data? ==   _BSS
.code  ==   _TEXT   此段默认不可写,可设置PE头部中的属性来打开可写属性

API函数的返回值类型是DWORD,存放在EAX中

函数声明 MessageBox Proto hWnd:dword , lpText:dword .....
标号 @@: -简明标号  @F - 下一个@@标号 @B - 上一个@@标号

全局变量定义在.data  或.data?节中

局部变量,子程序中的局部变量存放在堆栈中,在子程序中必须在最前面定义,定义: local  lo1:byte、  local lov2[1024]:dword

结构的定义:
结构名  struct
  变量名 数据类型  ?
结构名 ends

stWnd WNDCLASS <>
stWnd WNDCLASS <1,1,1,1,1,1,1,1>

mov movzx movsx
sizeof   lengthof
offset addr

子程序
子程序名 proc ...
子程序名 endp

高级语法
条件测试语句
.if  .else  .elseif  .endif
CARRY?  OVERFLOW?  PARITY? SIGN? ZERO?
循环语句
.whild  条件表达式
  .break .if 条件
  .continue
.endw

.repeat
   .break  .if 条件
   .continue
.until  条件表达式

代码风格
b 字节 w 字  dw 双字
h  句柄  lp 指针 sz 字符串 lpsz 字符串指针 f 浮点数 st 数据结构

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值