分析这样一段程序 汇编语言
时间: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将偏移地址读出来。我也说的不好。你先懂得那几种寻址方式和他们的区别吧。
如果不明白再上来问。个人水平有限,只能说个大概。
