微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 分析这样一段程序 汇编语言

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

时间:10-02 整理:3721RD 点击:

将程序存储器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 清零吗?        分析下我哪里了解的不够

谢谢分享

带#的是立即数,
你想读程序存储区的内容就要用MOVC的那个指令,
A清零是为了配合MOVC指令

DPTR是数据地址指针,当然要赋值内存单元的地址,你都说是将程序存储器0200H、0201H两个单元中的内容传送到内部RAM,当然传入0200H这个地址而不是0200H里面的内容。第二个理解是正确的,累加器清零。

我知道 带# 是立即数,你先看看 我问的是什么问题 ,我不是问带#的是立即数不

哈哈,没看清楚
MOVC的那个指令只能那么使用

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

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top