汇编上级出现stack overflow怎么解决?

来源:百度知道 编辑:UC知道 时间:2024/05/23 10:29:52
代码如下:
EXTRN LOAD:FAR,SAVE:FAR
N EQU 10
STAC SEGMENT STACK
DB 128 DUP (?)
STAC ENDS
DATA SEGMENT
SOURCE DB N DUP(?)
RESULT DB N+1 DUP(0)
NAME0 DB 'INPUT1.DAT',0
NAME1 DB 'OUTPUT1.DAT',0
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE, DS:DATA, SS:STAC
START PROC FAR
PUSH DS
XOR AX,AX
PUSH AX
MOV AX,DATA
MOV DS,AX
LEA DX,SOURCE ; 数据区起始地址
LEA SI,NAME0 ; 原始数据文件名
MOV CX,N ; 字节数
CALL LOAD ; 从 'INPUT1.DAT'中读取数据
; **** BEGIN ****
MOV DI,OFFSET RESULT
MOV BX,0

1、将堆栈的定义改成:
DW 128 DUP (?)

2、在段地址初始化部分,加上下面三条指令
MOV AX,STAC
MOV ss,AX
mov sp,126

堆栈空间不够,可以扩大你定义的堆栈空间。

一开始就注定错误了,先PUSH个DS,再PUSH一个0,没有出栈就RET了
PUSH DS
XOR AX,AX
PUSH AX

这个也就是参考答案,你要说是标准答案,只能说我也不知道题目。
或许写这个题目的人另有什么想法,毕竟汇编比较灵活。
就这段程序来说,错误百出!