汇编 如何使用多个堆栈 30

就是如何才能在一个程序里,定义一个堆栈,同时使用一个系统堆栈或者说同时使用多个堆栈?... 就是如何才能在一个程序里,定义一个堆栈,同时使用一个系统堆栈
或者说同时使用多个堆栈?
展开
 我来答
cao199338
2013-11-26 · TA获得超过737个赞
知道小有建树答主
回答量:497
采纳率:100%
帮助的人:503万
展开全部
堆栈也只是一种特殊的存储结构,如果你愿意,你可以任意定义一片内存地址为你的堆栈,只要你遵循FILO就可以了啊。
何必非要用堆栈呢?你将你想入栈的存放在内存中就好了。
发明堆栈的人,是想让人们编程更加简单,而不是更加复杂。
追问
说是这样说,这只是为了更加了解汇编吧,PS:具体的话该怎么实现呢?16位堆栈。
追答
ss sp
直接更改SS 和SP 就好了。记得保存SS SP。

ASSUME CS:CODE, DS:DATA, SS:STACK

DATA SEGMENT
DW 1,2,3,4,5,6,7,8
DATA ENDS

STACK SEGMENT
DW 0,0,0,0,0,0,0,0
STACK ENDS

STACK1 SEGMENT
DW 0,0,0,0,0,0,0,0
STACK1 ENDS

CODE SEGMENT
START: MOV AX,DATA ;这里将自定义的数据段 DATA 与 DS 联系起来
MOV DS,AX

MOV AX,STACK ;这里将自定义的堆栈段 STACK 与 SS 联系起来
MOV SS,AX
MOV SP,1000H
MOV CX,9999H
PUSH CX
MOV AX,8888H
PUSH AX
MOV BX,7777H
PUSH BX

MOV AX,STACK1 ;这里将自定义的堆栈段 STACK1 与 SS 联系起来
MOV SS,AX
PUSH SP
MOV SP,1000H

MOV BX,1111H
PUSH BX
MOV AX,2222H
PUSH AX
MOV CX,3333H
PUSH CX

; MOV AX,STACK ;这里将自定义的堆栈段 STACK 与 SS 联系起来
; MOV SS,AX
; POP CX
; POP AX
; POP BX

; MOV AX,STACK1 ;这里将自定义的堆栈段 STACK1 与 SS 联系起来
; MOV SS,AX

; POP BX
; POP AX
; POP CX

MOV AX,004CH
INT 21H
CODE ENDS

END START
可以直接用但是,SP 的保存是一件比较纠结的事情,你存了不好取。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
空雪梦见
2013-11-26 · TA获得超过5597个赞
知道大有可为答主
回答量:2522
采纳率:75%
帮助的人:1195万
展开全部
win32汇编的话,
esp和ebp改了就行了。
只要你之后知道怎么改回来……

16位汇编因为那个分段寻址的缘故,我对分段寻址实在是不熟,只改sp和bp的话估计不行,ss也要跟着改,怎么改我就不知道了
追问
考的就是16位的π_π
追答
16位汇编我不会……
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
madaraii
2013-11-27 · TA获得超过668个赞
知道小有建树答主
回答量:842
采纳率:41%
帮助的人:285万
展开全部
16位的汇编,自己搞堆栈的话要自己分配一段内存,再弄几字节空间存下SS SP的数据,PUSH POP操作前恢复,操作后备份SP SS俩寄存器。

别忘了给系统的堆栈SP SS也这样弄。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式