单片机实现电子表分秒程序 报错 error A39: REGISTER OPERAND EXPECTED

我的程序是这样的
disbuf0 equ 30h
disbuf1 equ 31h
disbuf2 equ 32h
disbuf3 equ 33h
second equ 40h
mind equ 41h
org 0000h
ajmp main
org 000bh
ajmp intert0
main:
mov sp,#70h
mov r2,#0
mov r5,#0
call initt0
loop:
call disp
call delay
ajmp loop
initt0:
mov a,tmod
anl a,#0f0h
orl a,#01h
mov tmod,a
mov tl0,#low(-20000)
mov th0,#high(-20000)
setb et0
setb ea
setb tr0
ret
disp:
mov dptr,#distab
mov a,#disbuf0
add a,r5
mov r0,a
mov a,@r0
movc a,@a+dptr
mov p2,-1
mov p0,a
mov dptr,#seattab
mov a,r5
movc a,@a+dptr
mov p2,a
inc r5
cjne r5,#4,dispend
mov r5,#0
dispend:
ret
intert0:
push acc
push psw
inc r2
cjne r2,#50,next
mov r2,#0
inc second
mov a,second
call hex2bcd
mov disbuf1,a
mov disbuf0,b
cjne second,#60,next
mov second,#0
mov disbuf0,#0
mov disbuf1,#0
inc mind
mov a,mind
call hex2bcd
mov disbuf2,b
mov disbuf3,a
cjne mind,#60,next
mov mind,#0
mov disbuf2,#0
mov disbuf3,#0
next:
mov tl0,#low(-20000)
mov th0,#high(-20000)
pop psw
pop acc
reti
hex2bcd:
mov b,#10
div ab
ret
delay:
mov r7,#10
ll1: mov r6,#-1
djnz r6,$
djnz r7,ll1
ret

distab: db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh
seattab: db 0feh,0fdh,0fbh,0f7h
end

看代码,使用
"cjne second,#60,next
cjne mind,#60,next"
会报告
"REGISTER OPERAND EXPECTED"错误。
而前边的
"cjne r2,#50,next"不报错。
"REGISTER OPERAND EXPECTED"
的意思是需要一个寄存器作为操作对象。
你的正确的语句里r2是寄存器,
错误的语句里,second,mind是变量。
所以,cjne指令操作寄存器而不是变量。
把second,mind先赋值给r2(或别的?)应该可以解决这个错误。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-04-22
没有cjne second,#60,next指令,改为mov a, second
cjne a,#60,next

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网