8051 assembler prog.

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

Reply to
Peter Andersen
Loading thread data ...

Peter Andersen skrev:

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/
Reply to
Ivar

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.

Reply to
HKJ

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.