分析这样一段程序 汇编语言

2019-07-15 19:13发布

本帖最后由 蓝天ss 于 2014-7-7 10:22 编辑

将程序存储器0200H、0201H两个单元中的内容传送到内部RAM的30H、31H两个单元正,试编程。
MOV   DPTR,#0200H
MOV   R0,#30H
MOV   A,#00H
MOVC  A,@A+DPTR
MOV   @R0,A
INC     DPTR
INC     R0
MOV    A,#00H
MOVC    A,@A+DPTR
MOV    @R0,A

我想问把存储器0200H单元里面的内容传送到30h 单元,既然是里面的内容,我觉得指令应该是
MOV   DPTR, 0200H   不应该有“#”这个符号,请问该怎么理解。还有MOV
A , #00H,意思是把累加器A 清零吗?        分析下我哪里了解的不够
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
6条回答
shanda9577
1楼-- · 2019-07-15 21:44
谢谢分享
阿信509
2楼-- · 2019-07-16 01:16
带#的是立即数,
你想读程序存储区的内容就要用MOVC的那个指令,
A清零是为了配合MOVC指令
ntmusic
3楼-- · 2019-07-16 01:52
DPTR是数据地址指针,当然要赋值内存单元的地址,你都说是将程序存储器0200H、0201H两个单元中的内容传送到内部RAM,当然传入0200H这个地址而不是0200H里面的内容。第二个理解是正确的,累加器清零。
蓝天ss
4楼-- · 2019-07-16 06:45
 精彩回答 2  元偷偷看……
阿信509
5楼-- · 2019-07-16 10:35
哈哈,没看清楚
MOVC的那个指令只能那么使用

依然落叶飘零
6楼-- · 2019-07-16 14:51
不是这样说的,没有MOV   DPTR,0200H这样的指令的。只有MOVDPTR #data16这条指令.
不能单单看MOV   DPTR,#0200H这条指令。其实他是和MOVC  A,@A+DPTR这指令一起的。
这是变址寻址。先通过MOV   DPTR,#0200H将首地址地址0200H保存在DPTR中
再通过MOVC  A,@A+DPTR将偏移地址读出来。我也说的不好。你先懂得那几种寻址方式和他们的区别吧。
如果不明白再上来问。个人水平有限,只能说个大概。

一周热门 更多>