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 32
endstruc
如果要在多个结构体中定义相同的元素可以这样定义:
struc my_type
.long:resd 1
.word:resw 1
endstruc
由于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 1024
iend
数据对齐align和alignb
%line操作符用来通知nasm,输入行与另一个文件中指定的行号相关
%! 读取一个环境变量
时间: 2024-08-01 22:48:03