欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

主程序跟子程序不在同一模块-出错了

更新时间: 2014-01-05 03:17:47 责任编辑: Author_N1

 

主程序和子程序不在同一模块-出错了!
extrn proadd:far 
DATAS SEGMENT common
    array   dw 1,2,3,4,5
    account dw ($-array)/2
    sum     dw  ?
DATAS ENDS

STACKS SEGMENT
    ;此处输入堆栈段代码
STACKS ENDS

CODES SEGMENT
main proc far
    ASSUME CS:CODES,DS:DATAS,SS:STACKS

    MOV AX,DATAS
    MOV DS,AX
    call far ptr proadd
    MOV AH,4CH
    INT 21H
main endp
CODES ENDS
    END main



public proadd
DATAS SEGMENT common
array dw 1,2,3,4,5
count dw ($-array)/2
sum   dw ?
DATAS ENDS

STACKS SEGMENT
    ;此处输入堆栈段代码
STACKS ENDS

CODES SEGMENT 
pradd proc far
    ASSUME CS:CODES,DS:DATAS,SS:STACKS
    MOV AX,DATAS
    MOV DS,AX
    push ax
    push cx
    push si
    lea si,array
    mov cx,count
    xor ax,ax
next:
    add ax,[si]
    add si,2
    loop next
    mov sum,ax
    pop si
    pop cx
    pop ax
ret
proadd endp
CODES ENDS
    end


运行出错了,求解啊!
--参考方法--
第二个程序31行应该是retf吧
--参考方法--
运行时出错了?编译都通不过吧?pradd proc far 里应该是 proadd proc far
--参考方法--
调用不对
extrn proadd@0:far 
----
extern伪指令用于在调用 当前模块之外的过程时使用,它可以指定外部过程的名字和外部过程堆栈框架的大小. 
   如extern mysub@0:proc
   如果proc伪指令声明中没有参数,那么extern伪指令中每个过程名的后缀就是@0.如果声明过程时使用的是参数的扩展的proc伪指令,那么对每个参数@后面的数值要加4.
                                                    ----引用<intel 汇编语言程序设计>(P259)
上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-01-05 03:17:47
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/20525/
本文WWW.DOC100.NET DOC100.NET版权所有。