8051 assembler prog.

Do you have a question? Post it now! No Registration Necessary

Translate This Thread From Danish to

Threaded View
Hej

Er der nogen der ved om det er muligt at ændre/erstatte en talværdi i en
tekst linje med en anden?

Jeg bruger ASEM-51 som assembler til 8051.

Det jeg er ude efter er at kunne gøre fx. følgende:

CJNE    A,#5,ABC_21
.....
ABC_21: (blablabla.)

Et opslag i en tabel via DPTR vil et andet sted i programmet returnere
værdien 22.
22 indsættes i steder for 21 så resultatet nu er:

CJNE    A,#5,ABC_22
...og den nu jumper til ABC_22

Det vil altså sige: at gå ind og ændre en talværdi i en tekst der bruges som
destination for et jump eller call. Eller måske kan man på en gang returnere
hele destinationsnavnet ABC_22 fra tabellen og indsætte i CJNE
instruktionen.

Kan man komme om ved det på en eller anden fiks måde?

Peter



Re: 8051 assembler prog.
Peter Andersen skrev:

Quoted text here. Click to load it



Du skal nok løse problemet på en anden måde. Jeg kan ikke helt
forstå hvorfor du vil hoppe forskellige steder hen hvis a er forskellig
fra 5. Men med CJNE kan du lave funktionen med at kalde forskellige
funktioner afhængig af et tal. Hvis R1 er det tal der nogle gange er
21 og andre gange er 22, kan du gøre som her

  ;hop til funktion afhængig af R1
        CJNE  R1,#21,ikke21
        LJMP  ABC_21
ikke21: CJNE  R1,#22,ikke22
        LJMP  ABC_22
ikke22: CJNE  R1,#23,ikke23
        LJMP  ABC_23
ikke23:
        ;... osv
        LJMP  UGYLDIGT_TAL


Så må du lave sammenligningen med 5 først eller hvad du nu har
brug for.


Ivar Magnusson

--
Træt af Outlook Express?
MesNews: http://LexInfo.dk/MesNews /



Re: 8051 assembler prog.
Quoted text here. Click to load it

Du kan ikke lave betingede indirekter jumps.

Jeg kan ikke huske om 8051 har indirekter jumps, hvis den har kan du
vende betingelsen om og så sætte eet indirekter jump lige efter
sammenligningen, eller hoppe udenom.

Hvis der ikke er indirekter jumps, så kan du pushe en adresse på stakken
og lave en return instruktion.

Site Timeline