PDA

View Full Version : DATA area in code


Pierpaolo
07-31-02, 11:56 AM
Hello to everyone,
this time I've come up with something I don't understand and that could be
a trifle for some more experienced coders. Here is an extract from a .lst file:

000001 0000 ;TABELLA INDIRIZZI DATI
000002 0000 ;
000003 0000 ;9000 0A stp1
000004 0000 ;9001 09 stp2
000005 0000 ;9002 05 stp3
000006 0000 ;9003 06 stp4
000007 0000 ;9004 00 D step del tratto orizzontale
000008 0000 ;9005 00 x/y contatore ascissa
000009 0000 ;9006 00 RL risultato prodotto Dord*asc Byte basso
000010 0000 ;9007 00 RH risultato prodotto Dord*asc Byte alto
000011 0000 ;9008 00 PR risultato precedente step dell'ordinata
000012 0000 ;9009 00 AT risultato attuale step dell'ordinata
000013 0000 ;900A 00 I risultato divisione (Dord*asc)/DEN
000014 0000 ;900B 00 DEN denominatore della pendenza (DX/DY o DY/DX)
000015 0000 ;900C 00 OUT Byte da mandare in output sulla porta P1
000016 0000 ;900D 00 CSL contatore segmenti fatti basso
000017 0000 ;900E 00 CSH contatore segmenti fatti alto
000018 0000 ;900F 00 RCL numero segmenti da fare basso
000019 0000 ;9010 00 RCH numero segmenti da fare alto
000020 0000 ;9011 00 h'A0 Byte alto del DPTR per puntare i DXi, DYi
000021 0000 ;
000022 0000 ;9014 00 null
000023 0000 ;9015 DX1
000024 0000 ;9016 DY1
000025 0000 ;
000026 0000 ;
000027 0000 ;9333 DX400
000028 0000 ;9334 DY400
000029 8000 .org h'8000
000030 8000
000031 8000 start:
000032 8000 909004 mov DPTR,#h'9004
000033 8003 ; metto in a la distanza del tratto orizzontale
000034 8003 ; iniziale in step per il motore X
000035 8003 E0 movx a,@DPTR
000036 8004 FA mov R2,a ; metto in R2 gli step da contare
000037 8005 7C00 mov R4,#h'00 ; azzero R4 che e' il puntatore agli step
000038 8007 ; da mandare in output al motore X
000039 8007 7D00 mov R5,#h'00 ; azzero R5 che e' il puntatore agli step
000040 8009 ; da mandare in output al motore Y
000041 8009 90900C mov DPTR,#h'900C
000042 800C 74AA mov a,#h'AA ; inizializzo agli step iniziali 0A e A0
000043 800E F0 movx @DPTR,a ; i valori di output per i motori X e Y
000044 800F F590 mov P1,a ; invio il segnale ai motori X e Y
000045 8011 ;
000046 8011 ; ============ PRIMO TRATTO ORIZZONTALE ====================================
000047 8011 ;
000048 8011 tratto1:
000049 8011 909000 mov DPTR,#h'9000
000050 8014 EC mov a,R4

bla

bla !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! BELOW IS THE PROBLEM

bla

000448 825C loop7:
000449 825C DFFE djnz R7,loop7
000450 825E D9FA djnz R1,loop1
000451 8260 22 ret
000452 8261 ;******************************* D A T I *************
000453 8261 000000 .org h'8300
^
***** Warning ***** undefined opcode
000454 8264 000000 db h'0A
^
***** Warning ***** undefined opcode
000455 8267 000000 db h'09
^
***** Warning ***** attempt to redefine symbol
^
***** Warning ***** undefined opcode

bla

bla TRY WITHOUT THE PERIOD BUT NO DICE

bla
^
***** Warning ***** undefined opcode
000460 8276 000000 .db h'00
^
***** Warning ***** attempt to redefine symbol
^
***** Warning ***** undefined opcode
000461 8279 000000 .db 00h
^
***** Warning ***** attempt to redefine symbol
^
***** Warning ***** undefined opcode
000462 827C 000000 .db 00h
^
***** Warning ***** attempt to redefine symbol

etc

etc

Could anyone be so kind and explain to me where I am mistaking.
Thanks a lot for any help

nmitech
07-31-02, 10:41 PM
Email me nmitech@newmicros.com the complete program if possible. I am happy to take a look.

chris
------

nmitech
08-01-02, 10:24 AM
Pier,

From your original program, You must remove the .data from line 453 in your program since the compiler does not support this directive. Also all the assembler directives such as .org, .db, etc... must start from the second column of the page or use a TAB key to start the new line for all the directives.