dragon_ 发表于 2007-4-12 21:25:17

别跟我说你是用6502编译器编译的……

lufeng369 发表于 2007-4-21 19:21:38

8051 ?

POTO 发表于 2007-4-21 20:34:06

代码真漂亮!
看着都不像6502代码啊!

lzjseed 发表于 2007-4-21 23:24:37

当然不是6502的

nicholashui 发表于 2007-4-11 23:41:22

汇编语言的错误解释及解答

本人抄了一段串口程序,出现如下错误,请兄弟姐妹们帮忙分析,不胜感激!

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]
查看完整版本: 汇编语言的错误解释及解答