Assembler-Problem: mov [Register],Wert

Übersicht Sonstiges Smalltalk

Neue Antwort erstellen

PowerProgrammer

Betreff: Assembler-Problem: mov [Register],Wert

BeitragSa, Feb 03, 2007 19:42
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja hallo erstmal, ich bin PowerProgrammer.

Ach nee, das wisst ihr ja schon. Es geht um ein Assembler-Problem:

Ich habe einen Adresse irgendwie zusammengebastelt, die liegt nun im Register DX. Jetzt will ich den Speicher an dieser Stelle mit dem Wert aus AL dareinschieben, ich weiß aber nicht, wie das klappt. So geht es jedenfalls nicht:
Code: [AUSKLAPPEN]
mov [dx],al

Das wundert mich auch irgendwie nicht, aber wie kann ich das realisieren?

Ach ja, kennt der NASM den Befehl DUP eigentlich net?



Mfg PowerProgrammer

P.S. Ich weiß, dass das hier kein Forum für Assembler ist, also verkneift euch bitte diese Kommentare, danke Smile
www.xairro.com Alles für Webmaster und Programmierer! Es gibt mehr als bloß einen Counter!

Rone

BeitragSa, Feb 03, 2007 20:49
Antworten mit Zitat
Benutzer-Profile anzeigen
moin,
wenn der Rest stimmt, sollte das eigendlich so gehen.
Hier ist mal ein kleines Beispiel für indirekte Adressierung:
Code: [AUSKLAPPEN]
.STACK 256

.DATA
LISTE DB 100 DUB(".")

.CODE
START:     MOV AX,@DATA        ; Initialisierung des
           MOV DS,AX           ; Datensegments
           MOV BX, OFFSET LISTE      ; Anfangsadresse der Liste nach BX

           MOV AL,0            ; AL mit 0 initialiseren
   
BLA:       MOV [BX],AL         ; Inhalt von AL an den Speicherplatz dessen Adresse in BX steht   
           INC BX
           INC AL
           CMP AL,99           ; Wenn AL=99...
           JE ENDE             ; ... dann beenden
           JMP BLA             ; ... ansonsten weiter Liste füllen
   
ENDE:      MSDOS
           ENDSTART

Hoffe das geht auch so...habe nämlich nur mal vor Jahren den 6502 und den 8085 in Assembler programmiert...auf einem 'modernen' PC brauchte ich das bis jetzt zum Glück nie Wink

mfg

PowerProgrammer

BeitragSa, Feb 03, 2007 23:15
Antworten mit Zitat
Benutzer-Profile anzeigen
Dankeschön Smile

Leider klappt das nicht:
Code: [AUSKLAPPEN]
MOV [BX],AL

Das ist mein Problemkind. Wenn ich die Klammern weglasse, ist das ja unsinn, wenn ich sie aber dran habe, will der die Adresse des Registers BX, die es natürlich nicht gibt (Register hat ne Adresse?!?!), mit AL befüllen. Das gibt nen Fehler: Invalid effective adress

Vielleicht sollte ich auch sagen, dass ich den NASM nutze.

Hat noch jemand ne Idee?
www.xairro.com Alles für Webmaster und Programmierer! Es gibt mehr als bloß einen Counter!

hectic

Sieger des IS Talentwettbewerb 2006

BeitragSa, Feb 03, 2007 23:32
Antworten mit Zitat
Benutzer-Profile anzeigen
Kannst du nicht mit einer AND-Operation aus AL einen AX -Wert zu machen und dann zu DX inzufügen?

AL=Wert
XMaske=0000000011111111
AX=AL AND XMaske

[/code]

Plasma

Betreff: hmm

BeitragSo, Feb 04, 2007 0:57
Antworten mit Zitat
Benutzer-Profile anzeigen
es wird der inhalt der durch das bx register bezeichneten adresse mit al überladen

soviel zur adresse

klappt das ??

! mov [edx],eax

PowerProgrammer

BeitragSo, Feb 04, 2007 10:35
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke, das war mein Fehler.
Mit DX ging es nicht, da dachte ich, die Register sind alle recht gleich, mit BX ging es allerdings. Ich habe mich mal bei LowLevel erkundigt.

Danke für eure Hilfe Smile
www.xairro.com Alles für Webmaster und Programmierer! Es gibt mehr als bloß einen Counter!

Neue Antwort erstellen


Übersicht Sonstiges Smalltalk

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group