加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

Keil 编译ATTEMPT TO DEFINE AN ALREADY DEFINED LA

(2009-03-04 16:04:58)
标签:

to

指令地址

la

pc

寄存器

杂谈

分类: 汇编

出现ATTEMPT TO DEFINE AN ALREADY DEFINED LABEL,表示以前已经定义过一个标号,要换一个标号

movc a,@a+dptr
movc a,@a+pc

对于这两条指令,查了一下网上的兄弟的解释: 

movc a,@a+dptr
从DPTR开始偏移A个地址的数读取到A中.
DPTR一般为数据段的首地址.
movc a,@a+pc
从PC指令地址开始偏移A个地址的数读取到A中.
PC为当前指令地址.

这两个指令都是从程序空间中读取数据.

貌似我也不大听懂,得去问问老师

还有对于PUSH A Keil老是编译出现为什么编译说错,  
  EXPRESSION   TYPE   DOSE   NOT   MATCH   INSTRUCTION

网上的兄弟

1.说应该为PUSH   ACC

2.是编译选项不对,应选择韦福汇编器

3.为什么不是A,而是ACC?  
   
  因为:A表示的是内存地址,ACC表示的是寄存器  
   
  51中,可以将寄存器入栈,不可以将内存入栈。  

4.在51指令中没有PUSH   A,只有PUSH   ACC,同样对累加器A进行位操作时,没有A.0,只有ACC.0  
  A是ACC的缩写,有些地方不能互换,原因我也不知道,书中是这么写的,编译软件也是这么认的,否则就出错。

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有