欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2715|回復: 13
打印 上一主題 下一主題
收起左側(cè)

求解匯編程序指令的運算過程及運算結(jié)果

[復制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:957106 發(fā)表于 2021-7-29 11:38 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
MOV 30H,#12
MOV 31H,#23
PUSH 30H
PUSH 31H
POP 30H
POP 31H

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發(fā)
ID:824490 發(fā)表于 2021-7-29 14:02 | 只看該作者
這只是移數(shù)、入棧、出棧的指令沒有運算。最后的最后,30H=12,31H=23,均為10進數(shù)
回復

使用道具 舉報

板凳
ID:957106 發(fā)表于 2021-7-29 14:16 | 只看該作者
名字不是重點 發(fā)表于 2021-7-29 14:02
這只是移數(shù)、入棧、出棧的指令沒有運算。最后的最后,30H=12,31H=23,均為10進數(shù)

感謝回復!是怎么推出來的呢,我根據(jù)指令的解釋推不出來
回復

使用道具 舉報

地板
ID:668693 發(fā)表于 2021-7-29 14:42 | 只看該作者
把立即數(shù)12送入到30H
回復

使用道具 舉報

5#
ID:668693 發(fā)表于 2021-7-29 14:49 | 只看該作者
將立即數(shù)12送入到30H
將立即數(shù)23送入到31H
將30H里面的立即數(shù)送入到一級堆棧
將31H里面的立即數(shù)送入到二級堆棧
根據(jù)堆棧后入先出原則那么30H先出棧的話那么他的數(shù)就是23,31H就是12
回復

使用道具 舉報

6#
ID:957106 發(fā)表于 2021-7-29 15:53 | 只看該作者
林神經(jīng) 發(fā)表于 2021-7-29 14:49
將立即數(shù)12送入到30H
將立即數(shù)23送入到31H
將30H里面的立即數(shù)送入到一級堆棧

PUSH 30H指令不應該是把12送到31H嗎?然后PUSH 31H指令后又把12給了32H,我理解的,轉(zhuǎn)不過來不知道咋移的
回復

使用道具 舉報

7#
ID:123289 發(fā)表于 2021-7-29 16:18 | 只看該作者
51里有256個快速內(nèi)存,何為快速?有指令直接訪問有內(nèi)存(讀、寫、甚至位操作),它的地址是00-FFH。
1、00-1FH:分成四塊,00-07H,08-0FH,10-17H,18-1FH。它們對應R0-R7。
在PSW寄存器中,有兩位(B43:RS1、RS0)決定R0-R7使用上術(shù)四塊當中的哪一塊。
例如,PSW.43=11時,R0就是18H,R7就是1FH;PSW.43=00時,R0就是00H,R7就是07H;
2、20-2FH:16個字節(jié),128個位,這128個位是可以單獨訪問的(與、或、求反,測試),而其它內(nèi)存就不一定有此特殊待遇了。
這128個位,可以用SBIT進行定義。例如:定義 20H.0 = INPUTMM1。即可以按位使用。
按位使用時,可以定義128個變量。當然也可以按字節(jié)使用。
按字節(jié)使用時,只能定義16個變量。
3、30H-7FH:歸你,按字節(jié)使用。
4、80H-8FH:稱為高端內(nèi)存。低檔的51中沒有這128個字節(jié),高檔的51中有,高端內(nèi)存只能間接訪問!而低端內(nèi)存(00-7FH)是直接、間接都可以訪問。為什么要這樣呢?因為高端存存與特殊寄存器重疊,同用80-8FH地址,要區(qū)分它們,就是用直接訪問和間接訪問來區(qū)分。
下面說到樓主的問題了:
特殊寄存器中有一個叫SP,它是堆棧指針,例如:SP=80H(由你設(shè)置任意設(shè)置):
PUSH 30H
30H就是前面(3、中介紹的),里面已放了一個數(shù)字12,這條指令就將30H中的12,存入SP所指的單元80H中,并將SP+1,讓SP指向81H。
PUSH 31H  ;同理讓31H中的23進入81H,SP+1,SP指向82H。
POP 30H
POP 操作與PUSH相反,PUSH是壓堆,POP是彈棧!它先將SP-1,即SP從82H變成81H,再從81H中取出數(shù)字,送到目標寄存器,即將23送入30H。
POP 31H  ;同理將SP-1,SP=80H,再從80H中取出數(shù)字12,送到目標寄存器31H。
以上書上都有,老師也應該講過,都是不認真學習的結(jié)果。

另出一題:
PUSH P0 是可以的
PUSH R0 是不可以的,為什么?
回復

使用道具 舉報

8#
ID:824490 發(fā)表于 2021-7-29 16:42 | 只看該作者
林神經(jīng) 發(fā)表于 2021-7-29 14:49
將立即數(shù)12送入到30H
將立即數(shù)23送入到31H
將30H里面的立即數(shù)送入到一級堆棧

對的,我也是好久沒整匯編了。
回復

使用道具 舉報

9#
ID:824490 發(fā)表于 2021-7-29 16:45 | 只看該作者
13355423860 發(fā)表于 2021-7-29 15:53
PUSH 30H指令不應該是把12送到31H嗎?然后PUSH 31H指令后又把12給了32H,我理解的,轉(zhuǎn)不過來不知道咋移的

單片機的堆棧,類似彈夾的原理,你細品一下就有白了。
回復

使用道具 舉報

10#
ID:668693 發(fā)表于 2021-7-29 18:15 | 只看該作者
名字不是重點 發(fā)表于 2021-7-29 16:45
單片機的堆棧,類似彈夾的原理,你細品一下就有白了。

很形象
回復

使用道具 舉報

11#
ID:401564 發(fā)表于 2021-7-29 22:38 | 只看該作者
堆棧是一個水管,只有一個入口和一個出口
堆棧的處理就是把東西擠到水管里和取出來的處理,擠得多了,超過水管的長度了,最先擠進去的就會從另一頭給擠掉地上,你永遠找不到了,這叫溢出
擠進去的時候是一個一個擠進去的,取出來肯定也是一個一個取出來,最后擠進去的就先取出來
PUSH和POP就是一個進和出的功能
PUSH A就是把A里頭的東西放入堆棧
POP A就是把最外面一層堆棧的內(nèi)容放到A里頭
如果這樣還不明白,直接放棄匯編
回復

使用道具 舉報

12#
ID:88256 發(fā)表于 2021-7-29 23:03 | 只看該作者
13355423860 發(fā)表于 2021-7-29 15:53
PUSH 30H指令不應該是把12送到31H嗎?然后PUSH 31H指令后又把12給了32H,我理解的,轉(zhuǎn)不過來不知道咋移的

還是得認真仔細的去理解堆棧和出棧
回復

使用道具 舉報

13#
ID:386001 發(fā)表于 2021-8-2 18:42 | 只看該作者
出入棧,均不改變棧里的內(nèi)容,只是改變了SP指針的指向
回復

使用道具 舉報

14#
ID:858964 發(fā)表于 2021-8-2 19:00 | 只看該作者
本帖最后由 Kxuan163 于 2021-8-2 19:07 編輯
林神經(jīng) 發(fā)表于 2021-7-29 14:49
將立即數(shù)12送入到30H
將立即數(shù)23送入到31H
將30H里面的立即數(shù)送入到一級堆棧

正解。
我再補充一下,堆棧的進出次序是“后進先出”:
第5條指令 POP 30H ; 地址為30H的內(nèi)存單元 <--棧頂內(nèi)容#23
第6條指令 POP 31H  ;  地址為31H的內(nèi)存單元 <-- 棧內(nèi)容#12
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表