| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 377 人关注过本帖
标题:求高手帮忙,关于编译的问题
只看楼主 加入收藏
八画小子
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:37
帖 子:709
专家分:2063
注 册:2010-11-11
结帖率:96.55%
收藏
已结贴  问题点数:0 回复次数:1 
求高手帮忙,关于编译的问题
谁能告诉我,下面的代码为什么不能编译通过?
程序代码:
;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 编辑 ]
搜索更多相关主题的帖子: model flat 
2011-06-28 16:46
obstratiker
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:1
帖 子:198
专家分:758
注 册:2011-5-5
收藏
得分:20 
终于搞懂了,很细节,
链接时出现 unresolved external symbol
原因是……end start需要放在过程后面,就是放在程序的最后
把所有过程都“包含”进来,不然就成了程序“外部”的过程了
2011-07-01 10:57
快速回复:求高手帮忙,关于编译的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016410 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved