data segment
f1 db 1
f2 db 1
fnext db 8 dup(?)
sum db ?
table dw 4 dup(?)
data ends
code segment
assume cs:code,ds:data
main proc far
push ds
sub ax,ax
push ax
mov ax,data
mov ds,ax
mov table,offset f1
mov table+2,offset f2
mov table+4,offset fnext
mov table+6,offset sum
mov bx,offset table
call ab
ret
main endp
ab proc near
mov si,[bx]
mov cx,8
xor ax,ax
p1: mov ax,[si]
add bx,ax
add ax,[si+1]
mov [si+2],ax
inc si
loop p1
add bx,[si+1]
add bx,[si+2]
mov sum,offset bx
ret
ab endp
code ends
end main
楼主的这段程序,在main子程序中,还存在堆栈不平衡的问题,开始:
push ds
...
push ax
...
后面却没有相应的出栈操作,这会导致程序在返回时出错。
f1 db 1
f2 db 1
fnext db 8 dup(?)
sum db ?
table dw 4 dup(?)
data ends
code segment
assume cs:code,ds:data
main proc far
push ds
sub ax,ax
push ax
mov ax,data
mov ds,ax
mov table,offset f1
mov table+2,offset f2
mov table+4,offset fnext
mov table+6,offset sum
mov bx,offset table
call ab
ret
main endp
ab proc near
mov si,[bx]
mov cx,8
xor ax,ax
p1: mov ax,[si]
add bx,ax
add ax,[si+1]
mov [si+2],ax
inc si
loop p1
add bx,[si+1]
add bx,[si+2]
mov sum,offset bx
ret
ab endp
code ends
end main
楼主的这段程序,在main子程序中,还存在堆栈不平衡的问题,开始:
push ds
...
push ax
...
后面却没有相应的出栈操作,这会导致程序在返回时出错。