1 2 3 下一页 声明数组实例: ; Test5_1.asm .386 .model flat, stdcall include msVCrt.inc includelib msvcrt.lib .data szFmt db ''%d'', 0DH, 0AH, 0 ;声明并初始化有五个元素的 DWORD 数组; 该数组每个元素是 4 字节 val dd 11,22,33,44,55 .code start: invoke crt_printf, addr szFmt, val ;11 invoke crt_printf, addr szFmt, val+4 ;22 invoke crt_printf, addr szFmt, val+8 ;33 invoke crt_printf, addr szFmt, val+12 ;44 invoke crt_printf, addr szFmt, val+16 ;55 ret end start
上面的例子也可以这样写: ; Test5_2.asm .386 .model flat, stdcall include msvcrt.inc includelib msvcrt.lib .data szFmt db ''%d'', 0DH, 0AH, 0 val dd 11 dd 22 dd 33,44,55 .code start: invoke crt_printf, addr szFmt, val[0] ;11 invoke crt_printf, addr szFmt, val[4*1] ;22 invoke crt_printf, addr szFmt, val[4*2] ;33 invoke crt_printf, addr szFmt, val[4*3] ;44 invoke crt_printf, addr szFmt, val[4*4] ;55 ret end start
使用伪指令 DUP: ; Test5_3.asm .386 .model flat, stdcall include msvcrt.inc includelib msvcrt.lib .data szFmt db ''%d'', 0DH, 0AH, 0 ;声明有五个元素的 DWORD 数组, 并把每个元素初始化为 6 v1 dd 5 dup(6) ;声明有五个元素的 DWORD 数组, 无初始化; 对全局变量, 没有初始化的将用 0 填充 v2 dd 5 dup(?) .data? ;声明有五个元素的 DWORD 数组 v3 dd 5 dup(?) .code start: invoke crt_printf, addr szFmt, v1[0] ;6 invoke crt_printf, addr szFmt, v1[4*1] ;6 invoke crt_printf, addr szFmt, v1[4*2] ;6 invoke crt_printf, addr szFmt, v1[4*3] ;6 invoke crt_printf, addr szFmt, v1[4*4] ;6 invoke crt_printf, addr szFmt, v2[0] ;0 invoke crt_printf, addr szFmt, v2[4*1] ;0 invoke crt_printf, addr szFmt, v2[4*2] ;0 invoke crt_printf, addr szFmt, v2[4*3] ;0 invoke crt_printf, addr szFmt, v2[4*4] ;0 invoke crt_printf, addr szFmt, v3[0] ;0 invoke crt_printf, addr szFmt, v3[4*1] ;0 invoke crt_printf, addr szFmt, v3[4*2] ;0 invoke crt_printf, addr szFmt, v3[4*3] ;0 invoke crt_printf, addr szFmt, v3[4*4] ;0 ret end start (责任编辑:admin)
|