找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 4304|回復(fù): 6
打印 上一主題 下一主題
收起左側(cè)

為什么DJNZ R7,LOOP匯編指令在這最多只能循環(huán)0x20次

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主

這個(gè)程序是將片內(nèi)RAM60H~0AH單元的內(nèi)容送到片外RAM1000H開始的單元中,但我在keil里面調(diào)試好像只將0X60~0X80的內(nèi)容移過(guò)去了,這是為什么?



這個(gè)是仿真結(jié)果,片內(nèi)RAM 84H的內(nèi)容并沒有移過(guò)去。并發(fā)現(xiàn)DJNZ R7,LOOP循環(huán)好像只循環(huán)了0x20次
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:401564 發(fā)表于 2020-3-21 15:18 | 只看該作者
你確定你能看得懂下面那紅色圈圈里頭是什么意思嗎?
我用了幾年的匯編,都看不懂那玩意
匯編不仿真,仿真沒用的
直接燒錄看結(jié)果,匯編是直接操作硬件的,硬件不用,結(jié)果也不同,那么仿真就沒有意義了
你確定R7那只循環(huán)了20次嗎?
回復(fù)

使用道具 舉報(bào)

板凳
ID:480251 發(fā)表于 2020-3-21 17:39 | 只看該作者
錯(cuò)誤的原因是您并沒有好好去了解單片機(jī)內(nèi)部RAM的寄存器分布,對(duì)于51單片機(jī),一般RAM區(qū)是30-7FH,80-FFH地址 是有特殊寄存器的,是不能讀值的,建議您把起始地址60H改為40H即可成功。

解答4.PNG (89.65 KB, 下載次數(shù): 111)

解答4.PNG

解答3.PNG (46.94 KB, 下載次數(shù): 104)

解答3.PNG

解答1.PNG (219.06 KB, 下載次數(shù): 103)

解答1.PNG

解答.PNG (316.18 KB, 下載次數(shù): 110)

解答.PNG
回復(fù)

使用道具 舉報(bào)

地板
ID:235200 發(fā)表于 2020-3-21 21:05 | 只看該作者
程序在R7減為0后的語(yǔ)句是RET,這是子程序的返回指令,不應(yīng)該有,程序DPTR初始是1000H,請(qǐng)問(wèn)你的外存存儲(chǔ)器支持最大地址1040H嗎?
回復(fù)

使用道具 舉報(bào)

5#
ID:693671 發(fā)表于 2020-3-22 10:15 | 只看該作者
csmyldl 發(fā)表于 2020-3-21 21:05
程序在R7減為0后的語(yǔ)句是RET,這是子程序的返回指令,不應(yīng)該有,程序DPTR初始是1000H,請(qǐng)問(wèn)你的外存存儲(chǔ)器 ...

選用的是AT89C51,外部RAM應(yīng)該可以訪問(wèn)到0XFFFFFF
回復(fù)

使用道具 舉報(bào)

6#
ID:693671 發(fā)表于 2020-3-22 10:48 | 只看該作者
19857119144 發(fā)表于 2020-3-21 17:39
錯(cuò)誤的原因是您并沒有好好去了解單片機(jī)內(nèi)部RAM的寄存器分布,對(duì)于51單片機(jī),一般RAM區(qū)是30-7FH,80-FFH地址  ...

明白了,萬(wàn)分感謝!

我又試了一下,想將片內(nèi)80H開始的內(nèi)容移到片外去,仿真都出不來(lái)結(jié)果
C:\Users\DELL\Desktop
C:\Users\DELL\Desktop
回復(fù)

使用道具 舉報(bào)

7#
ID:693671 發(fā)表于 2020-3-22 10:51 | 只看該作者
Y_G_G 發(fā)表于 2020-3-21 15:18
你確定你能看得懂下面那紅色圈圈里頭是什么意思嗎?
我用了幾年的匯編,都看不懂那玩意
匯編不仿真,仿真沒 ...

紅色圈里面的應(yīng)該是存儲(chǔ)器內(nèi)容值吧
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表