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

代码如下:EXTRNLOAD:FAR,SAVE:FARNEQU10STACSEGMENTSTACKDB128DUP(?)STACENDSDATASEGMENTSOURCE... 代码如下:
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
MOV CX,N
MOV DL,0
PRO: MOV AL,SOURCE[BX]
sub AL,30H
MOV [DI],AL
inc di
ADD AL,DL
daa ;BCD码调整
MOV DL,AL
INC BX
dec cx
JNZ PRO
mov [di],dl
; **** END ****
LEA DX,RESULT ; 结果数据区首址
LEA SI,NAME1 ; 结果文件名
MOV CX,N+1 ; 结果字数
CALL SAVE ; 保存结果到文件
RET
START ENDP
CODE ENDS
END START
急求答案!若需要其他的东西,把邮箱发上来!
那该定义多少呢?
再补充一下,这个是标准答案,是三级pc模拟上的标准答案,但是运行不了!
展开
 我来答
汤旺河边
2009-09-12 · TA获得超过2.9万个赞
知道大有可为答主
回答量:2675
采纳率:0%
帮助的人:2913万
展开全部
1、将堆栈的定义改成:
DW 128 DUP (?)

2、在段地址初始化部分,加上下面三条指令
MOV AX,STAC
MOV ss,AX
mov sp,126
威孚半导体技术
2024-08-19 广告
威孚(苏州)半导体技术有限公司是一家专注生产、研发、销售晶圆传输设备整机模块(EFEM/SORTER)及核心零部件的高科技半导体公司。公司核心团队均拥有多年半导体行业从业经验,其中技术团队成员博士、硕士学历占比80%以上,依托丰富的软件底层... 点击进入详情页
本回答由威孚半导体技术提供
百度网友05f3bb8
2009-09-10 · TA获得超过217个赞
知道小有建树答主
回答量:134
采纳率:0%
帮助的人:71.7万
展开全部
堆栈空间不够,可以扩大你定义的堆栈空间。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
海狮2D
2009-09-13 · TA获得超过3018个赞
知道大有可为答主
回答量:1904
采纳率:55%
帮助的人:976万
展开全部
一开始就注定错误了,先PUSH个DS,再PUSH一个0,没有出栈就RET了
PUSH DS
XOR AX,AX
PUSH AX

这个也就是参考答案,你要说是标准答案,只能说我也不知道题目。
或许写这个题目的人另有什么想法,毕竟汇编比较灵活。
就这段程序来说,错误百出!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式