单片机中堆栈指令是什么寻址方式

 我来答
低调侃大山
推荐于2017-09-30 · 家事,国事,天下事,关注所有事。
低调侃大山
采纳数:67731 获赞数:374607

向TA提问 私信TA
展开全部
寄存器间接寻址范围总结:

1、外部RAM 64KB。对外部RAM64KB的间接寻址,应使用@DPTR作间址寻址寄存器,其形式为:@DPTR。

例如MOVX A,@DPTR;其功能是把DPTR指定的外部RAM的单元的内容送入累加器A中。

外部RAM的低256单元是一个特殊的寻址区,除可以用DPTR作间址寄存器寻址外,还可以用R0或R1作间址寄存器寻址。

例如MOVX A,@R0;这条指令的意思是,把R0指定的外部RAM单元的内容送入累加器A。

2、堆栈操作指令(PUSH和POP)也应算作是寄存器间接寻址,即以堆栈指针SP作间址寄存器的间接寻址方式。

3、内部RAM低128单元。对内部RAM低128单元的间接寻址,应使用R0或R1作间址寄存器,其通用形式为@Ri(i=0或1)。

4、内部RAM的高128单元也可以访问。但是注意不能用间接寻址的方式去访问特殊功能寄存器,虽然SFR与内部高128字节RAM地址相同,但是当一个指令访问高于7HF的内部位置时,CPU是根据寻址方式来区分是访问高128字节的内部RAM数据还是访问SFR.
做而论道
高能答主

推荐于2017-09-30 · 把复杂的事情简单说给你听
知道大有可为答主
回答量:3万
采纳率:80%
帮助的人:1.2亿
展开全部
51 单片机:

入栈时,指令是:PUSH dir,其中的源操作数是《直接寻址》,目的是《间接寻址》。

出栈时,指令是:POP dir,其中的源操作数是《间接寻址》,目的是《直接寻址》。

这里使用的间址寄存器是 SP。
----
入栈时:
源操作数,是直接寻址。
可以使用片内RAM的低128字节、SFR。
不可使用:R0~R7、@R0、@R1,和片内RAM的高128字节。

目的操作数,用 SP 间址,可以使用片内RAM的低128字节和高128字节(仅52单片机)。
----
出栈时:
……
追问
那我们一般看一条指令时什么寻址方式是看源操作数还是目的操作数?还有为什么是POP ACC而不是POP A?谢谢帮我回答~
追答
一般,不加以说明,就是讨论《源操作数》的寻址方式。

那么,堆栈指令:
PUSH dir,其中的源操作数是《直接寻址》;
POP dir,其中的源操作数是《间接寻址》。

POP A,理论上成立,写给人看,还可以。
但是,编译软件,只是认得 POP ACC。
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zhang_yi_cheng
2013-03-25 · TA获得超过353个赞
知道小有建树答主
回答量:186
采纳率:100%
帮助的人:133万
展开全部
51的单片机指令只有PUSH/POP direct,从指令上来看,应属直接寻址
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
一剑出血
高粉答主

2013-03-24 · 醉心答题,欢迎关注
知道大有可为答主
回答量:5.7万
采纳率:78%
帮助的人:1.7亿
展开全部
堆是堆,栈是栈,不要混为一谈。
一般入栈出栈都是间接寻址的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式