易码技术论坛

 找回密码
 加入易码
搜索
查看: 265629|回复: 4

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

[复制链接]
发表于 2007-4-12 21:25:17 | 显示全部楼层
别跟我说你是用6502编译器编译的……
发表于 2007-4-21 19:21:38 | 显示全部楼层
8051 ?
发表于 2007-4-21 20:34:06 | 显示全部楼层
代码真漂亮!
看着都不像6502代码啊!
发表于 2007-4-21 23:24:37 | 显示全部楼层
当然不是6502的
 楼主| 发表于 2007-4-11 23:41:22 | 显示全部楼层 |阅读模式
  本人抄了一段串口程序,出现如下错误,请兄弟姐妹们帮忙分析,不胜感激!

EMAIL:NICHOLASHUI@163.COM  MSN: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        DATA  20h    ;
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         DATA  87h    ;

            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
            USING  0
init:
            mov   sp,#(stack-1)
            call  initialize
            setb  LT0F
            setb  LT1F

            setb  T1

            setb  ET0
            call  modem_init
            clr   ET0
            jnc   m1
            clr   EA
            orl   PCON,#1
M1:
            jnb   TI,$
            clr   TI
            clr   RI
            setb  ES
            clr   F0
idle:
            orl   PCON,#1
            jnb   F0,idle

            clr   ES
            setb  TI
            clr   F0
            setb  ET0
m2:
            call  init_longtimer()
m3:
            call  get_char
            jc    m8
            cjne  a,#'.',m8
            call  get_record
            jnc   m4
            mov   a,#NAK
            call  send_char
            jmp   m2
m4:          cjne  a,#0,m6

            jb    F0,m5
            call  shutdown
            call  erase_chip
            call  erase_pgm
            setb  F0
m5:
            call  write_record
            call  verify_record
            jnc   m7
            mov   a,#CAN
            call  send_char
            jmp   m9
m6:
            call  clear_pgm
            clr   F0
m7:
            mov   a,#ACK
            call  send_char
            jmp   m2
m8:
            jnb   LTOF,m3
m9:
            call  hang_up
            clr   ET0
            jmp   m1
serial_int:
            clr   F0
            clr   TI
            jnb   RI,si2
            mov   a,SUBF
            jc    si1
            anl   a,#7fh
            cjne  a,#CONNECT_1200,si
            clr   RI
            mov   a,#2
            call  delay_ms
            jnb   RI,si2
            mov   a,SBUF
            mov   c,p
            jc    si1
            anl   a,#7fh
            cjne  a,#(LOW CONNECT_9600),si1
            setb  F0
si1:
            clr   RI
si2:
            reti
timer_int:
            push  psw
            setb  RS0
            jb    LT0F,ti2
            cjne  it0_lo,#0,ti1
            dec   it0_hi
ti1:
            djnz  it0_lo,ti2
            cjne  it0_hi,#0,ti2

            setb  LT0F
ti2:
            jb    LT1F,ti3
            djnz  It1,Ti3
            setb  LT1F
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
            setb  TR0
            setb  REN
            setb  EA
            setb  DTR_
            setb  SHUTDN_
            setb  MISO
            setb  MOSI
            clr   SCK
            clr   RST
            ret
modem_init:
            clr   DTR_
            mov   a,#1
            call  delay_sec
            mov   dptr,#attn_cmd
            call  send_string
            mov   a,#1
            call  delay_sec
            mov   dptr,#reset_cmd
            call  modem_cmd
            jc    nn1
            mov   a,#1
            call  delay_sec
            mov   dptr,#init_cmd
            call  modem_cmd
            jnc   nn2
nn1:
            setb  DTR_
nn2:
            ret
            mov   a,#1
            call  delay_sec
            mov   dptr,#attn_cmd
            call  send_string
            mov   a,#1
            call  delay_sec
            mov   dptr,#hangup_cmd
            call  modem_cmd
            jnc   hh
            setb  DTR_
hh:
            ret
            push  b
            mov   b,#MTRIES
mm1:
            call  get_char
            jc    mm3
            cjne  a,#OK,mm2
            call  get_char
            jc    mm3
            cjne  a,#CR,mm2
            clr   c
            jmp   mm4
mm3:
            djnz  b, mm1
            setb  c
mm4:
            pop   b
            ret
send_string:
            push  acc
            push  dpl
            push  dph
ss1:
            clr   a
            movc  a,@a+dptr
            jz    ss2
            call  send_char
            inc   dptr
            jmp   ss1
ss2:
            pop   dph
            pop   dpl
            pop   acc
            ret
send_char:
            jnb   TI,$
            clr   TI
            push  acc
            mov   c,  p
            mov   acc.7,c
            mov   SBUF,a
            pop   acc
            ret
get_char:
            jb    RI,gc2
            call  init_longtimer1
gc1:
            jb    RI,gc2
            jnb   LT1F,gc1
            setb  c
            jmp   gc3
gc2:
            mov   a,SBUF
            mov   c,p
            anl   a,#7fh
            clr   RI
gc3:
            ret
get_byte:
            call  get_char
            jc    gb
            call  ascii2bin
            jc    gb
            swap  a
            mov   b,a
            call  get_char
            jc    gb
            call  ascii2bin
            jc    gb
            orl   a,b
gb:
            ret
ascii2bin:
            mov   temp,a
            clr   c
            subb  a,#('9'+1)
            jnc   a1
            mov   a,temp
            clr   c
            subb  a,#'0'
            jmp   a4
a1:
            mov   a,temp
            subb  a,#('F'+1)
            cpl   c
            jc    a4
a2:
            mov   a,temp
            subb  a,#'A'
            jc    a4
a3:
            add   a,#10
a4:
            ret
get_record:
            mov   chksum,#0
            call  get_byte
            jc    rr4
            mov   data_len,a
            clr   c
            subb  a,#(16+1)
            jnc   rr4
            call  get_byte
            jc    rr4
            call  get_byte
            mov   laddr_hi,a
            call  get_byte
            jc    rr4
            mov   laddr_lo,a
            call  get_byte
            jc    rr4
            mov   rec_type,a
            cjne  a,#0,rr2
            mov   index,#data_buff
            mov   kount,data_len
rr1:
            call  get_byte
            jc    rr4
            mov   @index,a
            add   a,chksum
            mov   chksum,a
            inc   index
            djnz  kount,rr1
            jmp   rr3
rr2:
            mov   a,rec_type
            cjne  a,#1,rr4
rr3:
            call  get_byte
            jc    rr4
            add   a,chksum
            add   a,data_len
            add   a,laddr_lo
            add   a,laddr_hi
            add   a,rec_type
            jnz   rr4
            call  get_byte
            jc    rr4
            call  get_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
            call  shout
            mov   a,r2
            call  shout
            mov   a,@index
            call  shout
            mov   a,#3
            call  delay_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
            djnz  kount,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
            call  shout
            mov   a,r2
            call  shout

            call  shin
            mov   b,@index
            cjne  a,b,w2
            jmp   w3
W2:
            setb  c
            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
            djnz  kount,w1
            clr   c
W5:
            ret
            push  b
            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
            cjne  a,#(HIGH CONNECT_9600),[p:4]
您需要登录后才可以回帖 登录 | 加入易码

本版积分规则

Archiver|手机版|小黑屋|EMAX Studio

GMT+8, 2024-3-29 22:45 , Processed in 0.010675 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表