看着都不像6502代码啊! 当然不是6502的
汇编语言的错误解释及解答
本人抄了一段串口程序,出现如下错误,请兄弟姐妹们帮忙分析,不胜感激!EMAIL:NICHOLASHUI@163.COMMSN:NICHOLASHUI@163.COM
QQ:35387758文字
*******************
SERIES.ASM(23): error A10: ATTEMPT TO DEFINE AN ALREADY DEFINED SYMBOL
SERIES.ASM(50): error A10: ATTEMPT TO DEFINE AN ALREADY DEFINED SYMBOL
SERIES.ASM(104): error A9: SYNTAX ERROR
SERIES.ASM(104): error A9: SYNTAX ERROR
SERIES.ASM(119): error A45: UNDEFINED SYMBOL (PASS-2)
SERIES.ASM(122): error A45: UNDEFINED SYMBOL (PASS-2)
SERIES.ASM(123): error A45: UNDEFINED SYMBOL (PASS-2)
SERIES.ASM(136): error A45: UNDEFINED SYMBOL (PASS-2)
SERIES.ASM(138): error A45: UNDEFINED SYMBOL (PASS-2)
SERIES.ASM(145): error A45: UNDEFINED SYMBOL (PASS-2)
SERIES.ASM(148): error A45: UNDEFINED SYMBOL (PASS-2)
SERIES.ASM(157): error A45: UNDEFINED SYMBOL (PASS-2)
SERIES.ASM(176): error A42: PHASE ERROR (PASS-2)
SERIES.ASM(210): error A45: UNDEFINED SYMBOL (PASS-2)
SERIES.ASM(215): error A45: UNDEFINED SYMBOL (PASS-2)
SERIES.ASM(228): error A45: UNDEFINED SYMBOL (PASS-2)
SERIES.ASM(238): error A45: UNDEFINED SYMBOL (PASS-2)
SERIES.ASM(241): error A45: UNDEFINED SYMBOL (PASS-2)
SERIES.ASM(340): error A45: UNDEFINED SYMBOL (PASS-2)
SERIES.ASM(364): error A45: UNDEFINED SYMBOL (PASS-2)
SERIES.ASM(374): error A45: UNDEFINED SYMBOL (PASS-2)
SERIES.ASM(383): error A45: UNDEFINED SYMBOL (PASS-2)
SERIES.ASM(385): error A45: UNDEFINED SYMBOL (PASS-2)
SERIES.ASM(389): error A45: UNDEFINED SYMBOL (PASS-2)
SERIES.ASM(391): error A45: UNDEFINED SYMBOL (PASS-2)
SERIES.ASM(393): error A45: UNDEFINED SYMBOL (PASS-2)
SERIES.ASM(422): error A45: UNDEFINED SYMBOL (PASS-2)
SERIES.ASM(426): error A45: UNDEFINED SYMBOL (PASS-2)
SERIES.ASM(428): error A45: UNDEFINED SYMBOL (PASS-2)
SERIES.ASM(491): error A45: UNDEFINED SYMBOL (PASS-2)
SERIES.ASM(493): error A45: UNDEFINED SYMBOL (PASS-2)
SERIES.ASM(495): error A45: UNDEFINED SYMBOL (PASS-2)
SERIES.ASM(510): error A45: UNDEFINED SYMBOL (PASS-2)
SERIES.ASM(511): error A45: UNDEFINED SYMBOL (PASS-2)
SERIES.ASM(512): error A45: UNDEFINED SYMBOL (PASS-2)
SERIES.ASM(513): error A45: UNDEFINED SYMBOL (PASS-2)
SERIES.ASM(515): error A45: UNDEFINED SYMBOL (PASS-2)
SERIES.ASM(522): error A45: UNDEFINED SYMBOL (PASS-2)
SERIES.ASM(530): error A42: PHASE ERROR (PASS-2)
SERIES.ASM(564): warning A73: TEXT FOUND BEYOND END STATEMENT - IGNORED
*****************************
源程序附下:
****************************
CR EQU 0dh ;carriage return
LF EQU 0ah ;line feed
ACK EQU 6h ;respones to remote system
NAK EQU 15h ;
CAN EQU 18h ;
BAUD_1200 EQU 0e8h ;
BAUD_2400 EQU 0f4h ;
BAUD_9600 EQU 0fdh ;
OK EQU '2' ;
RINGING EQU '5' ;
CONNECT_1200 EQU '10' ;
CONNECT_2400 EQU '13' ;
MTRIES EQU '5' ;
ERASE_1 EQU 0ach ;
ERASE_2 EQU 04h ;
DUMMY EQU 55h ;
WRITE_CODE EQU 02h ;
READ_CODE EQU 01h ;
WRITE_DATA EQU 06h ;
READ_DATA EQU 05h ;
it0_lo EQU r2 ;
it0_hi EQU r3 ;
it1 EQU r4 ;
index EQU r0 ;
chksum EQU r5 ;
temp EQU r6 ;
kount EQU r7 ;
DSR_ BIT p3.3 ;
DTR_ BIT p3.7 ;
RST BIT p1.7 ;
SHUTDN_ BIT p1.6 ;
SCK BIT p1.4 ;
MOSI BIT p1.3 ;
MISO BIT p1.2 ;
DSEG AT 20h
flags DATA20h ;
LT0F BIT flags.0;
LT1F BIT flags.1;
ORG 30h
rec_type: DS 1 ;
laddr_io: DS 1 ;
laddr_hi: DS 1 ;
data_len: DS 1 ;
data_buff: DS 32 ;
ORG 60h ;
stack: DS 20h ;
PCON DATA87h ;
CSEG
ORG 0000h ;
jmp init ;
ORG 0003h ;
reti
ORG 000Bh ;
jmp timer_int ;
ORG 0013h ;
reti
ORG 001Bh ;
reti ;
ORG 0023h ;
jmp serial_int;
ORG 40h
attn_cmd: DB '+++',0 ;
reset_cmd: DB 'ATZ',CR,0 ;
;
init_cmd: DB 'AT&R1&A0',CR,0
hangup_cmd: DB 'ATH',CR,0
ORG 0080h
USING0
init:
mov sp,#(stack-1)
callinitialize
setbLT0F
setbLT1F
setbT1
setbET0
callmodem_init
clr ET0
jnc m1
clr EA
orl PCON,#1
M1:
jnb TI,$
clr TI
clr RI
setbES
clr F0
idle:
orl PCON,#1
jnb F0,idle
clr ES
setbTI
clr F0
setbET0
m2:
callinit_longtimer()
m3:
callget_char
jc m8
cjnea,#'.',m8
callget_record
jnc m4
mov a,#NAK
callsend_char
jmp m2
m4: cjnea,#0,m6
jb F0,m5
callshutdown
callerase_chip
callerase_pgm
setbF0
m5:
callwrite_record
callverify_record
jnc m7
mov a,#CAN
callsend_char
jmp m9
m6:
callclear_pgm
clr F0
m7:
mov a,#ACK
callsend_char
jmp m2
m8:
jnb LTOF,m3
m9:
callhang_up
clr ET0
jmp m1
serial_int:
clr F0
clr TI
jnb RI,si2
mov a,SUBF
jc si1
anl a,#7fh
cjnea,#CONNECT_1200,si
clr RI
mov a,#2
calldelay_ms
jnb RI,si2
mov a,SBUF
mov c,p
jc si1
anl a,#7fh
cjnea,#(LOW CONNECT_9600),si1
setbF0
si1:
clr RI
si2:
reti
timer_int:
pushpsw
setbRS0
jb LT0F,ti2
cjneit0_lo,#0,ti1
dec it0_hi
ti1:
djnzit0_lo,ti2
cjneit0_hi,#0,ti2
setbLT0F
ti2:
jb LT1F,ti3
djnzIt1,Ti3
setbLT1F
ti3:
pop psw
reti
initialize:
mov PCON,#0
mov IE,#0
mov SCON,#010000000b
mov TMOD,#001000001b
mov TH1,#BAUD_1200
mov TH1,#BAUD_9600
mov TCON,#01000000b
mov TL0,#0
mov TH0,#0
setbTR0
setbREN
setbEA
setbDTR_
setbSHUTDN_
setbMISO
setbMOSI
clr SCK
clr RST
ret
modem_init:
clr DTR_
mov a,#1
calldelay_sec
mov dptr,#attn_cmd
callsend_string
mov a,#1
calldelay_sec
mov dptr,#reset_cmd
callmodem_cmd
jc nn1
mov a,#1
calldelay_sec
mov dptr,#init_cmd
callmodem_cmd
jnc nn2
nn1:
setbDTR_
nn2:
ret
mov a,#1
calldelay_sec
mov dptr,#attn_cmd
callsend_string
mov a,#1
calldelay_sec
mov dptr,#hangup_cmd
callmodem_cmd
jnc hh
setbDTR_
hh:
ret
pushb
mov b,#MTRIES
mm1:
callget_char
jc mm3
cjnea,#OK,mm2
callget_char
jc mm3
cjnea,#CR,mm2
clr c
jmp mm4
mm3:
djnzb, mm1
setbc
mm4:
pop b
ret
send_string:
pushacc
pushdpl
pushdph
ss1:
clr a
movca,@a+dptr
jz ss2
callsend_char
inc dptr
jmp ss1
ss2:
pop dph
pop dpl
pop acc
ret
send_char:
jnb TI,$
clr TI
pushacc
mov c,p
mov acc.7,c
mov SBUF,a
pop acc
ret
get_char:
jb RI,gc2
callinit_longtimer1
gc1:
jb RI,gc2
jnb LT1F,gc1
setbc
jmp gc3
gc2:
mov a,SBUF
mov c,p
anl a,#7fh
clr RI
gc3:
ret
get_byte:
callget_char
jc gb
callascii2bin
jc gb
swapa
mov b,a
callget_char
jc gb
callascii2bin
jc gb
orl a,b
gb:
ret
ascii2bin:
mov temp,a
clr c
subba,#('9'+1)
jnc a1
mov a,temp
clr c
subba,#'0'
jmp a4
a1:
mov a,temp
subba,#('F'+1)
cpl c
jc a4
a2:
mov a,temp
subba,#'A'
jc a4
a3:
add a,#10
a4:
ret
get_record:
mov chksum,#0
callget_byte
jc rr4
mov data_len,a
clr c
subba,#(16+1)
jnc rr4
callget_byte
jc rr4
callget_byte
mov laddr_hi,a
callget_byte
jc rr4
mov laddr_lo,a
callget_byte
jc rr4
mov rec_type,a
cjnea,#0,rr2
mov index,#data_buff
mov kount,data_len
rr1:
callget_byte
jc rr4
mov @index,a
add a,chksum
mov chksum,a
inc index
djnzkount,rr1
jmp rr3
rr2:
mov a,rec_type
cjnea,#1,rr4
rr3:
callget_byte
jc rr4
add a,chksum
add a,data_len
add a,laddr_lo
add a,laddr_hi
add a,rec_type
jnz rr4
callget_byte
jc rr4
callget_byte
jc rr4
mov a,rec_type
clr c
jmp rr5
rr4:
mov r2,laddr_io
mov r3,laddr_hi
mov a,r3
anl a,#00011111b
rl a
rl a
rl a
orl a,#WRTTE_CODE
mov temp,a
mov index,#data_buf
mov kount,data_len
pp1:
mov a,temp
callshout
mov a,r2
callshout
mov a,@index
callshout
mov a,#3
calldelay_ms
mov a,r2
add a,#1
mov r2,a
jnc pp2
mov a,r3
add a,#1
mov r3,a
anl a,#00011111b
rl a
rl a
rl a
orl a,#WRITE_CODE
mov temp,a
pp2:
inc index
djnzkount,pp1
ret
mov r2,laddr_io
mov r3,laddr_hi
mov a,r3
anl a,#00011111b
rl a
rl a
rl a
orl a,#READ_CODE
mov temp,a
mov index,#data_buf
mov kount,data_len
W1:
mov a,temp
callshout
mov a,r2
callshout
callshin
mov b,@index
cjnea,b,w2
jmp w3
W2:
setbc
jmp w5
w3:
mov a,r2
add a,#1
mov r2,a
jnc w4
mov a,r3
add a,#1
mov r3,a
anl a,#00011111b
rl a
rl a
rl a
orl a,#READ_CODE
mov temp,a
W4:
inc index
djnzkount,w1
clr c
W5:
ret
pushb
mov b,#8
x42:
rlc a
mov MOSI,c
nop
nop
setb SCK
nop
nop
nop
nop
clr SCK
djnz b,x42
pop b
ret
shin:
push b
mov b,#8
x43:
setb SCK
mov c,MISO
rlc a
nop
nop
clr SCK
nop
nop
djnz b,x43
pop b
ret
erase_chip:
setb RST
mov a,#ERASE_1
call shput
mov a,#ERASE_2
call shout
mov a,#DUMMY
call shout
mov a,#10
call delay_ms
clr RST
ret
shutdown:
clr SHUTDN_
mov a,#5
call delay_ms
setb SHUTDN_
ret
set_pgm:
setb RST
mov a,#1
call delay_ms
mov a,#ENABLE_1
call shout
mov a,#ENABLE-2
call shout
mov a,#DUMMY
call shout
ret
clear_pgm:
clr RST
ret
setb LT0F
setb RS0
mov it1_lo,#0c8h
mov it0_hi,#1
clr RS0
clr LT0F
ret
init_longtimer1:
setb LT1F
setb RS0
mov it1,#17
clr RS0
clr LT1F
ret
delay_ms:
push acc
push b
mov b,#0
dd:
djnz b,$
djnz b,$
djnz acc,dd
pop b
pop acc
ret
delay_sec:
push acc
push b
mov b,a
ddd:
mov a,#250
call delay_ms
call delay_ms
call delay_ms
call delay_ms
djnz b,ddd
pop b
pop acc
ret
END
anl a,#7fh
cjnea,#(HIGH CONNECT_9600),
页:
[1]