LookUp-Tabellen (Assembler 8051-Befehlssatz)

Gast #21852
Eine Table-LookUp-Tabelle mit 8051ern:

Tabelle im Programmspeicher: mov DPTR,#tabelle
               next:         clr A
                             movc A,@A+DPTR
                             ... verarbeiten Tabelleninhalt
                             inc DPTR
                              sjmp next

               tabelle:      db 'Hallo Welt'


oder falls die Tabelle kleiner ist:
                             mov B,#1
                nächst:      mov A,B
                             acall _tabelle
                             ... verarbeiten Tabelleninhalt
                             inc B
                             sjmp nächst


                 _tabelle:   movc A,@A+PC
                             reti
                             db 23,24,25,26,27,28,29,30,31,32

und falls B mit 0 initialisiert wird, wird der Operationscode des 
reti-Befehls als Tabellenwert geladen (22d oder 22h) und kann unter 
Umständen eben auch mit in die Tabelle einbezogen werden (Geheimtip?)


Tabellen im Datenspeicher können mit indizierter Adressierung
realisiert werden:
                      tabellenanfang equ 30h
                      tabellenende equ 40h
                      mov R0,#tabellenanfang
nächster-Eintrag:     mov A,@R0
                      ...Tabellenwert verarbeiten
                      cjne R0,#tabellenende,nächster-Eintrag


oder bei größeren Tabellen im ext. Datenspeicher:


                         mov DPTR,#tabellenanfang
             nächst:     movx A,@DPTR
                         ...Tabellenwert verarbeiten
                         inc DPTR
                         mov A,DPH
                         cjne A,#tabellenende-highbyte,nächst
                         mov A,DPL
                         cjne A,#tabellenende-lowbyte,nächst
                         ende

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 23 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.