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 [email protected]:far
----
extern伪指令用于在调用 当前模块之外的过程时使用,它可以指定外部过程的名字和外部过程堆栈框架的大小.
如extern [email protected]:proc
如果proc伪指令声明中没有参数,[email protected]?明过程时使用的是参数的扩展的proc伪指令,[email protected]
----引用<intel 汇编语言程序设计>(P259)