Datenbanken mit Assembler

Gast #477870
Lesenswert?

Servus liebe Programmierkolegen!

Bin seit längerem am Programmieren von Assemblerfiles.

Kenne mich darin relativ gut aus und arbeite mit Keil µ-Vision 3.

Mein Problem nun:

Ich Möchte für mehrere 7-Segment Anzeigen und auch für andere Zwecke 
Datenbanken nutzen...

Habe aber in diesem BEreich leider keine Ahnung wie das Funktioniert.

Kann mit jemand weiterhelfen?

Ich habe mal gesehen, dass man folgendes geschrieben hat (so ähnlich 
jedenfalls...):

       DB      2, 3, 5, 7, 11, 13, 17, 19, ';'
oder
       DB      01110010, 10001001, 01010010, 10100100, 10100000, 
11111111, 01000100, 10100001, ';'

Wie ruf ich sowas nun auf, wieviele davon kann ich nutzen etc, wo wird 
die DB gespeichert?

Kennt sich da jmd aus?

Vielen dank schoneinmal!

MfG T-G-läser
#477897
Lesenswert?

Hab mich schon gewundert, ne Datenbank in Assembler zu schreiben, dürfte 
doch zu aufwendig sein.

Das ist "Definiere Byte", d.h. das Byte wird einfach so wie es ist in 
den Code-Flash geschrieben.

Zum Auslesen gibt es beim 8051 die MOVC-Befehle, z.B. MOVC A,@A+DPTR.

In der Regel ist ne DB-Anweisung sinnlos, wenn nicht davor ein Label 
steht.

Dieses Label lädt man nun nach DPTR und mit A (Index) bestimmt man dann, 
welcher der nachfolgenden DB-Werte nach A geladen wird.


Aber es würe mich arg wundern, wenn es im µVision keine Hilfe dazu gäbe.


Peter
Gast #477937
Lesenswert?

@ Wolfram: Danke, dein Beitrag ist recht bescheuert und unötig!
Ich habe schon viel gemacht, aber wenn ich das noch nie benutzt hab, 
warum
sollte ich es dann wissen? ... Na egal - wie du meinst xD

@ Peter: Dank dir, damit hast mir schonmal weitergeholfen.
Ich wusste immer nicht wie ich auf die Werte zugreifen soll, aber nu 
isses mir klar mit dem DPTR...

Habe es nun so gemacht:
;----------------------------------------------------------------------- 
-----
mov DPTR,#werte+3                          ;um z.B. die "40" zu lesen
MOVX A,@DPTR


werte:  DB 10,20,30,40,50,60,70,80         ;
        DB 90,100,110,120,130,100,100,100  ;
        DB 11,12,13,14,15,16,17,18         ;
;----------------------------------------------------------------------- 
-----

Danke für deine Hilfe.

MfG T-G-läser
Gast #477968
Lesenswert?

@Tobias:
Sorry Tobias, ich ging wirklich davon aus das du einen lustigen Thread 
starten willst. Ich konnte mir nicht vorstellen wie man schon länger 
Assembler programmiert und ohne "DB" auskommt.

Ok, noch was konstruktives:
Es gibt da gewöhnlich noch DW und DD für
define Word und define Doubleword
Gast #478005
Lesenswert?

Bitte Leuts g is doch kein Ding!

Thx für die Hilfen, habs ja soweit...

Wundern tut mich nur dass die Keil-Simulation bei folgendem Test nichts 
macht... Stimmt da was nich?

Die Schleife hat zwar kein Ende, is ja nur en Test, aber nichtmal am 
Anfang macht die an P2 irgendetwas. Auch im Akku steht nie was.

m2:    movx A,@DPTR
    mov P2,A
    call t3s0    ; is ne 3sec Zeitschleife...
    inc DPTR
    jmp m2

Daten:    DB 00000001b,00000010b
    DB 00010000b,00100000b
    DB 01000000b,10000000b
    DB 11111110b,11111101b
    DB 11111011b,11110111b
    DB 11101111b,11011111b
    DB 10111111b,01111111b
    DB 00001111b,11110000b
    DB 11111111b,00000000b
Gast #478007
Lesenswert?

@ Jens: Habe meine Ganzen Werte immer in einem Externen Ram gehabt. 
Hatte alle direkt darin gespeichert ausgelesen und abgelegt...

nicht normal aber für meine Zwecke voll ausreichend.
Gast #478021
Lesenswert?

Ahhh bin i doof :P

klar dass des eben nicht ging...

Hab mein Programm zwar im Daten-Bereich stehen, aber die Tabelle is ja 
dennoch im Code-Bereich...

also movx gegen movc ersetzen, bissl abändern und nu gehts endlich.

T-G-läser is nu Glücklich xD

Dankeschön!

    mov DPTR,#Daten
m2:  movc A,@A+DPTR
    mov P2,A
    call t0s3    ; is ne 3sec Zeitschleife...
    inc DPTR
    MOV  A,#0
    jmp m2

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren