关于汇编语言问题,入栈出栈什么用

一个程序开始的时候,下面指令什么意思PUSHDSSUBAX,AXPUSHAXMOVAX,DATMOVDS,AX... 一个程序开始的时候,下面指令什么意思
PUSH DS
SUB AX, AX
PUSH AX
MOV AX, DAT
MOV DS, AX
展开
 我来答
娃哈哈AB钙奶
推荐于2017-11-23 · TA获得超过246个赞
知道小有建树答主
回答量:101
采纳率:0%
帮助的人:133万
展开全部
PUSH DS ;把DS压入栈中
SUB AX, AX ;AX—AX 结果存放在AX中,就是把0放在AX中
PUSH AX ;把AX压入栈中
MOV AX, DAT ;把DAT段地址放到AX中
MOV DS, AX ;把AX值放到DS中
POP入栈是把数据压入栈段中;PUSH出栈是把数据从栈段中拿出来;入栈与出栈是遵循先进后出的原则!入栈出栈其实是个临时存储数据作用!SS指向栈段的段地址,SP指向栈段的顶端。
希望我的回答对您有帮助,呵呵!
47okey
推荐于2018-02-27 · TA获得超过1.2万个赞
知道大有可为答主
回答量:5900
采纳率:75%
帮助的人:2353万
展开全部
保护数据用。就是将DS AX 里的数据先暂存在堆栈里,这就是入栈(指令为PUSH)。然后,可以对它们进行操作而不会影响原来的数据。到需要原来的数据时,再出栈(POP) 。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
thebabe
2016-01-29 · TA获得超过829个赞
知道小有建树答主
回答量:729
采纳率:66%
帮助的人:515万
展开全部
用于缓存数据,保护寄存器或者进行寄存器与寄存器间数据传输。而且有些寄存器的值只能通过堆栈操作完成。比如程序寄存器的值CS只能通过堆栈操作完成读取:
push cs
pop bx; 或者 pop ds之类。
也用于子函数(子例程,通过Call指令调用)的参数传递。
CALL _SUB
_SUB: PUSH AX ; 保存AX
PUSH BX ; 保存BX
mov AX, 128; 因为下面会改写这两个寄存器
mov BX, 125;
.... ; 进行相关功能操作
POP BX ; 完成后恢复BX值
POP AX ; 完成后恢复AX值
RET
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zhxiufan
2015-05-25 · 知道合伙人软件行家
zhxiufan
知道合伙人软件行家
采纳数:14923 获赞数:38381
国家科技进步奖

向TA提问 私信TA
展开全部
汇编语言中堆栈的操作有专门的语句指令。
入栈指令是:PUSH
出栈指令是:POP
比如:

MOV A,30H ;将一个压缩BCD码送累加器A
PUSH ACC ;压栈保护
ANL A,#0FH ;保留低四位
MOV 30H,A ;回送给30H
POP ACC ;出栈
SWAP A ;高低四位互换
ANL A,#0FH ;保留低四位
MOV B,#10 ;B送10
MUL AB ;乘10
ADD A,30H ;与个位相加
MOV 30H,A ;回送给30H

以上程序段将一个压缩BCD码转换为十六进制。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
做而论道
高能答主

2015-05-20 · 把复杂的事情简单说给你听
知道大有可为答主
回答量:3万
采纳率:80%
帮助的人:1.1亿
展开全部
以上的回答,全都是错误的。

楼主的所问的这些指令:

PUSH DS
SUB AX, AX
PUSH AX

具有特定的含义,是不能简单的解释为:保护数据。

这几句,是和 DOS 操作系统配合使用的。
这几句,是为了正确结束应用程序,而编写的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式