宏汇编
联合编译:
1. 新建文件mylib.inc, 结构体定义,函数声明等都放在此头文件中,函数声明中加far,例如:
BubbleSort proto far C wCount:word, pAryNumber:word
- 为防止重复包含,可设置头文件保护:
ifndef MYLILB_INC
MYLILB_INC equ 1
...
endif ;MYLILB_INC
- 其他asm文件里写上include mylib.inc
- 编译链接
ml /c a.asm
Ml /c b.asm
link16 a.obj b.obj
结构体定义方式
tagDateOfBirth struct
m_nYear dd ?
m_cMonth db ?
m_wDay dw ?
tagDateOfBirth ends
tagTest struct ;结构体类型定义
m_Id word ?
byte ? ;此处可设定对齐
m_strName byte 8 dup(?)
m_dob tagDateOfBirth <?>
tagTest ends
BubbleSort proto far ;函数BubbleSort声明
结构体变量初始化方式:
g_test tagTest <1234h, ?, 'Hello$', <1999h, 12h, 23h>>
访问结构体的方式:
方法1:
mov bx, offset g_test
mov [bx + tagTest.m_dob.m_cMonth], 10 ;地址+偏移量改变结构体成员的值,结构体类型.成员名 表示该成员偏移量
方法2:
mov g_test.m_dob.m_cMonth, 11h ;改变结构体成员的值, 结构体变量.成员名 表示访问该成员
方法3(一般是通过参数):
mov bx, pAry
assume bx : ptr tagTest ;bx是tagTest类型的指针
mov [bx].m_dob.m_cMonth, 12h ;改变结构体成员的值
函数声明:
BubbleSort proto C wCount:word, pAryNumber:word ;函数声明,参数名可以不需要,只留类型大小