首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

单片机中的PUSH和POP的疑问

单片机中的PUSH和POP的疑问

假如单片机中有两个寄存器A和B,我先执行PUSH A, PUSH B,而最后执行POP A, POP B而不是执行POP B, POP A。那么A和B的结果最终是不是B赋值给了A,A赋值给了B?这种用法也许有反常规,但估计是一种特殊的技巧。我的分析对吗?
編譯的時候能通過碼?
我選擇﹐我喜歡﹗常常憤怒的跟人說﹐我不干了﹗
编译的时候可以通过的,我想我的想法是对的。不知各位意见如何?
你的想法很对
想法正确,可用以来做数值交换
正确,好想法
天地人我行
正确,开始PUSH时是变量值赋给栈,开始POP时是栈内容赋给变量
您认为这是很高明的发现吗?
PSHA
PSHB
POPA
POPB
实现A 与 B 的数据交换,用到2个存储单元4条指令。
而:
MOV A,TEMP
MOV B,A
MOV TEMP,B
实现A 与 B 的数据交换,用到1个存储单元3条指令。
孰优孰劣?
这是我以前看到个系统代码时发出的问题的简化描述,并不是说简单地做数据交换。因为我在那代码中看到使用到堆栈的这种技巧做线程堆栈的切换。这仅仅是提出一种技巧,我相信它会有很巧妙的应用的。
返回列表