求助!汇编语言keil编译报错error A39: REGISTER OPERAND EXPECTED

报错内容截图原程序:ORG0000HMOVDPTR,#TABLEMOVR0,#30HLOOP:MOVA,@R0MOVCA,@DPTRINCACJNEA,@R0,NEXT1... 报错内容截图

原程序:
ORG 0000H
MOV DPTR,#TABLE
MOV R0,#30H
LOOP: MOV A,@R0
MOVC A,@DPTR
INC A
CJNE A,@R0,NEXT1
NEXT1: JC NEXT2
SJMP NEXT3
NEXT2: ADD A,#1FH
MOV @R0,A
NEXT3: INC R0
CJNE @R0,#00H,LOOP
RET
ORG 0100H
TABLE: DB 41H,42H,43H,44H,45H,46H,47H,48H,49H,4AH,4BH,4CH,4DH,4EH,4FH,50H,51H,52H,53H,54H,55H,56H,57H,58H,59H,5AH
END
展开
 我来答
lycdl
高粉答主

2015-11-24 · 醉心答题,欢迎关注
知道大有可为答主
回答量:2万
采纳率:94%
帮助的人:4955万
展开全部
你这就是一个主程序,也不是什么子程序,怎么能有RET指令呢?删掉这行。
如果想回到LOOP行,就改成AJMP LOOP
那个TABLE的起始行也不用ORG定义,就接着写就行,编译时会自动编排TABLE的起始地址的,不必定义,有点多余了。
追问
但是这些地方并不是error存在的地方呀。删掉这行error也还是存在
而且改成AJMP LOOP 不就无条件一直跳回去了吗我需要判断如果R0指向的内容不等于0才跳回去。等于0就不跳回去了
追答
MOVC A,@DPTR  
这行错误,应该是MOVC A,@A+DPTR
CJNE A,@R0,NEXT1
这行也错误,没有这条指令,A不能和@R0比较
可以写成CJNE @R0, #0, NEXT1
或者:CJNE A,单元地址,NEXT1
可以把@R0中的数放在一个单元里,指令中给出单元地址
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式