求高手帮忙,关于编译的问题
谁能告诉我,下面的代码为什么不能编译通过?程序代码:
;MASMPlus 代码模板 - 控制台程序 .386 .model flat, stdcall option casemap :none include windows.inc include user32.inc include kernel32.inc include masm32.inc include gdi32.inc includelib gdi32.lib includelib user32.lib includelib kernel32.lib includelib masm32.lib include macro.asm IntegerToString PROTO int32:DWORD, str_ptr:PTR BYTE .data lpMsg BYTE 10 dup('0'),0 .data? buffer db MAX_PATH dup(?) .CODE START: mov eax,5 add eax,6 invoke IntegerToString,eax,addr lpMsg invoke locate,2,2 ;设定输出文本的坐标 invoke StdOut,offset lpMsg ;暂停显示,回车键关闭 invoke StdIn,addr buffer,sizeof buffer invoke ExitProcess,0 end START ;------------------------------------------------------ IntegerToString PROC USES eax ecx edx esi, int32:DWORD,str_ptr:PTR BYTE ; ;把二进制表示的整数转换成相应的字符串 ;Receives: int32=32位无符号整数,str_ptr=指向输出字符串地址的指针 ;Return: str_ptr=指向输出字符串地址的指针 ------------------------------------------------------ mov edx,int32 ;save eax mov esi,9 mov ecx,10 label_next: mov edx,eax and al,0fh ;分离al低4位 shl edx,4 ;消除edx低4位 cmp al,9 ;al<=9? jbe label_small ;是:跳转 inc edx ;否:进位 label_small: add al,6 ;分离 add al,30h mov str_ptr[esi],al ;传送到指定字符串 inc esi ;指向前一个字符 loop label_next ;转换前一位 ret IntegerToString ENDP主要问题出在对IntegerToString过程的调用,如果我把 invoke IntegerToString,eax,addr lpMsg 这一句注释掉之后编译通过
[ 本帖最后由 八画小子 于 2011-6-28 16:48 编辑 ]