nasm预处理器(4)

来源:互联网 发布:雅思单词书推荐 知乎 编辑:程序博客网 时间:2024/06/07 12:02

nasm定义了一套标准宏,当开始处理源文件时,这些宏都已经被定义了,如果希望程序在执行前没有预定义的宏存在,可以使用%clear清空预处理器的一切宏。

__NASM_MAJOR__ 主版本号
__NASM_MINOR__ 次版本号
__NASM_SUBMINOR__ 子次版本号
__NASM_PATCHLEVEL__ 补丁号
__NASM_VERSION_ID__ nasm版本id
__NASM_VER__ nasm版本字符串
__FILE__ 文件名
__LINE__ 行号

STRUC 和 ENDSTRUC 声明一个结构数据类型:

struc my_type    long:resd 1    word:resw 1    ten_byte:resb 10    str:resb 32endstruc

如果要在多个结构体中定义相同的元素可以这样定义:

struc my_type    .long:resd 1    .word:resw 1endstruc

由于nasm没有内部结构体支持,所以不支持以句点形式引用结构体中的成员,因此mov ax,[type_val.word]是非法的;.word是一个常数,正确语法为:

mov ax,[type_val+word];或者mov ax,[type_val+my_type.word]

下面是如何定义一个结构的变量:

type_val: istruc my_type    at .long,dd 0x12345678    at .word,dw 1024iend

数据对齐align和alignb
%line操作符用来通知nasm,输入行与另一个文件中指定的行号相关
%! 读取一个环境变量

0 0
原创粉丝点击