宏汇编

联合编译:

1. 新建文件mylib.inc, 结构体定义,函数声明等都放在此头文件中,函数声明中加far,例如:

BubbleSort proto far C  wCount:word, pAryNumber:word

 

  1. 为防止重复包含,可设置头文件保护:

ifndef MYLILB_INC

MYLILB_INC equ 1

...

endif ;MYLILB_INC

 

  1. 其他asm文件里写上include mylib.inc
  2. 编译链接

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 ;bxtagTest类型的指针

mov  [bx].m_dob.m_cMonth, 12h ;改变结构体成员的值

 

 

 

 

函数声明:

BubbleSort proto C  wCount:word, pAryNumber:word ;函数声明,参数名可以不需要,只留类型大小

 

 

 

 

 

 

posted @ 2020-09-29 07:03  八转达人  阅读(284)  评论(0编辑  收藏  举报