Habe weder mit Google noch in meiner Sammlung etwas Brauchbares zu indirekten Sprüngen oder Lookup-Tabellen gefunden. Kann mir jemand eine Adresse mit Beispielen geben? Assembler, 8252
Habe schon soviel rausgefunden: MOVC A, @A+DPTR Mit diesem Befehl wird der Wert eines Registers mit der Adresse "DPTR A" in den Accu verschoben. Muss ich für die Angabe des Registers unbedingt den Accu benutzen, oder darf ich auch das schreiben: MOVC A, @R0+DPTR oder sogar MOVC R1, @RO+DPTR ?
Ich denke du suchst hiernach !? mov dptr,#lookup_table movc a,@a+dptr // hier steht H von Hello in a lookup_table: DB 'Hello' Wenn du nun weiter inkrementierst dann kannst du den Ganzen Text 'Hello' herauslesen.
Ja, ich muss etwas Ähnlichges machen. Anhand eines Wertes im Register ROTATION_SPEED (Bereich vin 10 bis 250) muss der Timer im 16-Bit-Modus auf bestimmte werte gesetzt werden. Genauer berechnet sich der Timerwert so: Timer = 1 / (3 * 10^-6 * ROTATION_SPEED)
Oder wäre es vielleicht einfacher, den Wert in Laufzeit zu berechnen?
Joe wrote: > Ich denke du suchst hiernach !? > > mov dptr,#lookup_table > movc a,@a+dptr // hier steht H von Hello in a > > lookup_table: DB 'Hello' > > Wenn du nun weiter inkrementierst dann kannst du den Ganzen Text 'Hello' > herauslesen. Ich möchte das: MOV A, R0 MOV DPTR, #TABELLE JMP @A+DPTR ;------------------------------------------ TABELE: SJMP VALUE0 SJMP VALUE1 SJMP VALUE2 SJMP VALUE3 ... ... .. .. . . VALUE0: MOV SP_H, #07h MOV SP_L, #01h SJMP ENDE VALUE1: MOV SP_H, #10h MOV SP_L, #02h SJMP ENDE VALUE2: MOV SP_H, #10h MOV SP_L, #51h SJMP ENDE VALUE3: MOV SP_H, #14h MOV SP_L, #01h SJMP ENDE ... .. . Dabei soll bei R0 = 0 nach VALUE0, bei R0 = 1 nach VALUE1 u.s.w gesprungen werden.
Wenn du an den Sprungzielen sowieso nur Register laden willst, wieso verwendest du dann nicht gleich ein normales Array?
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.