Hi Leute. Ich wollte mal Fragen, was der Befehl "mov ah, 4ch" in Assembly bedeutet. Oder was der mir bringt. Danke im Vorraus
Antworten (5)
-
2Hilfreichste Antwort ausgezeichnet vom FragestellerAntwort von
geri3dgeri3d
für meine 15 Punkte :-)
Befehl: MOV Ziel,Quelle (MOVe) Übertrage/Kopiere Flags bleiben unverändert Beschreibung: Der MOV-Befehl kopiert den Inhalt des Quelloperanden in den Zieloperanden. Beide Operanden müssen vom gleichen Typ sein (Byte,Byte / Word,Word). Als Zieloperand kann jedes Register oder eine Speichervariable angegeben werden. Der Quelloperand kann zusätzlich aus einem Direktwert bestehen. Beispiel: mov ax,2000 ;AX = 2000 mov ch,250 ;CH = 250 mov ax,bx ;AX = BX mov cx,Laenge ;CX = Laenge Zeitbedarf: 2 Takte bei MOV Reg,Reg (8 Bit/16 Bit) 4 Takte bei MOV Reg,Wert (8 Bit/16 Bit) 8 Takte bei MOV Reg,Mem (8 Bit/16 Bit) 9 Takte bei MOV Mem,Reg (8 Bit/16 Bit) 10 Takte bei MOV Mem,Wert (8 Bit/16 Bit) -
1Antwort von
supernickysupernicky
Hallo,
dieser Wert wird unter DOS benutzt zum beenden eines Programmes. AL musst aber auf NULL stehen.
mov ax, 4c00h ;ist das gleiche wie mov ah, 4ch int 21h
Da ax nur ein Word-Register ist, kannst du nur zwei Buchstaben speichern. Ein Buchstabe ist ein Byte groß.
wenn du z.B. mov bx, offset string1 schreibst, speicherst du die Adresse an der string1 liegt. Mit jeder Erhöhung von bx (inc bx) kommst du zum nächsten Buchstaben. Adressen von Strings speichert man üblicherweise in den Registern DI und SI (Quell- und Zielindex).
Gruß, Nicky
-
0Antwort von
Roadrunner2Roadrunner2
Das bedeutet, dass das obere Byte des AX-Registers mit dem Wert 0x4C initialisiert wird. Das bedeutet dann für das ganze AX-Register den Wert 0x4C00.
Dieser Wert kann natürlich zufällig sein, aber sehr häufig wird dieser Wert dazu verwendet, mittels des DOS-Interrupts 0x21 ein Programm zu beenden, dass in der Konsole abläuft:
mov ah, 0x4C ;Das ist das gleiche wie "mov ax, 4C00h". int 21h ;Hier könnte auch stehen: "int 0x21".Kommentar von
ApfelkillerApfelkiller danke
-
-
0Antwort von
blackboxV lange her, muss aus einem programmteil sein, denke laden des registers AH mit dem wert 4C hex
Kommentar von
blackboxV ja in den überall vefügbaren akku etwas laden (4c hex)
Danke, war schonmal wirklich hilfreich. Gibt auch höchstwahrscheinlich beste Antwort. Aber eine Frage hätt ich noch: Bei den Beispielen, die du genannt hast. Kann ich da statt "ax" auch "asdf" nehmen oder so? Und kann man wörter nur mit cx speichern???
Sorry, in Assembler kenn ich mich nur ganz rudimentär aus. Du meinst ob der Quelloperand auch ein Label sein kann oder so.
genau. Ob das "cx" sein muss, oder ob ich auch unter "ax" einen Text speichern kann.