之前学习过win32汇编数组;还不熟悉;继续熟悉;
先做几个基本的对话框,有一个静态文本框;
定义数组之后,用 wsprintf 函数格式化,然后调用 SetDlgItemText 赋值给静态文本框;
arr1 dd 101,202,303,607,903
定义一个数组并赋初值,每个元素占4字节;
arr2 dd 3 dup(77)
定义一个数组,3个元素,每元素占4字节,每个元素初始化为77;
arr3 dd 3 dup(?)
定义数组,未初始化,将用0填充;
arr4 dd 2 dup(3 dup(7,9))
定义嵌套数组,数组值依次是:7 9 7 9 7 9 7 9 7 9 7 9,一共占 48 字节;
格式化符;
fmt1 db '%d, %d, %d, %d, %d',0dh,0ah
db '%d, %d, %d', 0dh,0ah
db '%d, %d, %d', 0dh,0ah,0
0dh,0ah 是换行; 到0结束;
本来是想4个数组的值都显示在一个静态文本框;
但是4个数组的值一起格式化的时候,总显示这个错误;
根据资料,说要分行写,
invoke wsprintf,addr szbuf,addr fmt1,arr1, arr1[4], arr1[8], arr1[12], arr1[16],\
arr2, arr2[4], arr2[8],\
arr3, arr3[4], arr3[8],\
arr4,arr4[4],arr4[8],\
arr4[12],arr4[16],arr4[20],\
arr4[24],arr4[28],arr4[32],\
arr4[36],arr4[40],arr4[44]
已经分了多行;还是报这个错;
使用2个静态文本框,把arr4的值显示在第2个静态文本框;
asm,
.386.model flat, stdcalloption casemap :noneinclude windows.inc
include user32.inc
includelib user32.lib
include kernel32.inc
includelib kernel32.libICO_MAIN equ 1000
DLG_MAIN equ 100
IDC_INFO equ 101
IDC_INFO2 equ 102.data
arr1 dd 101,202,303,607,903
arr2 dd 3 dup(77)
arr3 dd 3 dup(?)
arr4 dd 2 dup(3 dup(7,9))szbuf db 500 dup(0).data?hInstance dd ?
hWinMain dd ?.const
fmt1 db '%d, %d, %d, %d, %d',0dh,0ahdb '%d, %d, %d', 0dh,0ahdb '%d, %d, %d', 0dh,0ah,0
fmt2 db '%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d', 0dh,0ah,0.code_ProcDlgMain proc uses ebx edi esi hWnd,wMsg,wParam,lParammov eax,wMsg.if eax == WM_CLOSEinvoke KillTimer,hWnd,1invoke EndDialog,hWnd,NULL.elseif eax == WM_INITDIALOGpush hWndpop hWinMaininvoke LoadIcon,hInstance,ICO_MAINinvoke SendMessage,hWnd,WM_SETICON,ICON_BIG,eaxinvoke wsprintf,addr szbuf,addr fmt1,arr1, arr1[4], arr1[8], arr1[12], arr1[16],\arr2, arr2[4], arr2[8],\arr3, arr3[4], arr3[8]invoke SetDlgItemText,hWinMain,IDC_INFO,addr szbufinvoke wsprintf,addr szbuf,addr fmt2,arr4,arr4[4],arr4[8],\arr4[12],arr4[16],arr4[20],\arr4[24],arr4[28],arr4[32],\arr4[36],arr4[40],arr4[44]invoke SetDlgItemText,hWinMain,IDC_INFO2,addr szbuf.elsemov eax,FALSEret.endifmov eax,TRUEret_ProcDlgMain endpstart:invoke GetModuleHandle,NULLmov hInstance,eaxinvoke DialogBoxParam,hInstance,DLG_MAIN,NULL,offset _ProcDlgMain,NULLinvoke ExitProcess,NULLend start
rc文件,
#include <resource.h>#define ICO_MAIN 1000
#define DLG_MAIN 100
#define IDC_INFO 101
#define IDC_INFO2 102ICO_MAIN ICON "Main.ico"DLG_MAIN DIALOG 188, 193, 140, 120
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "数组示例"
FONT 9, "宋体"
{LTEXT "", IDC_INFO, 6, 6, 135, 65LTEXT "", IDC_INFO2, 6, 80, 135, 45
}
结果;