Assembler, Addition im Debug Modus

DoNkeV

Cadet 2nd Year
Registriert
Feb. 2008
Beiträge
25
Hi!
Bräuchte bitte mal Hilfe bei Assembler!
Ich hab absolut keinen Plan wie ich das eingeben soll....

addieren Sie im 8-4-2-1 BCD Code die gepackten Zahlen 738 und 549
schreiben sie die dazu notwendigen Befehlssequenzen im DEBUG MODUS (nur das Programm)

ich wäre euch wirklich sehr sehr dankbar, wenn mir jemand helfen kann!

Vielen Dank!
mfg donkev
 
Wo dran scheitert es denn? Kennst du die Befehle nicht? Weißt du nicht was BCD sind?

Btw: Für welchen Prozessor willst du eigentlich schreiben?
 
ich weiss einfach nicht wie ich das machen soll mit
"mov al, 738" oder so weiss nicht mal wo ich da anfangen und wie das dann funktionieren soll

Intel standard befehle

brauch das für DVI (Datenverarbeitungsinformationen)
 
738 passt nicht in AL rein. Du musst AX benutzen.

Die Befehle für BCD-Addition besteht aus zwei Befehlen. ADD und einem Korrekturbefehl DAA für gepackte oder AAA für ungepackte BCD. Du brauchst gepackte. Zu beachten ist, dass DAA und AAA nur für das AL Register Wirkung zeigen. Ist deine Zahl größer, was bei dir der Fall ist, musst es aufteilen. DAA zeigt über ein gesetztes AF und CF an, wenn bei der Addition die obere BCD-Ziffer übergelaufen ist.

Da ich aber deine Hausaufgaben nicht vollständige lösen will, überlasse ich es erstmal dir daraus einen Code zu bauen.
 
dies ist keine Hausaufgabe sonder ich versuch es gerade irgendwie zu verstehen. Diese Aufgabe kam letztes Jahr in der Schulaufgabe dran.

Wärst du so nett und würdest mir vielleicht anhand eines kleinen Bespiels (z.b. 40+20) erklären wie ich das im Debugger eingeben muss?
Wäre echt nett!
danke!
 
In den Debugger eingeben: Keine Ahnung, welchen du benutzt.
Beim Dos-Debugger kann man, wenn ich recht erinnere, einfach an einer Stelle schreiben und diesen dann ausführen. Sinnvoller ist es aber dir einen Assembler zu besorgen.

Ansonsten gehen tut es so:
40 als gepacktes BCD = 0100 0000 = 40h
20 als gepacktes BCD = 0010 0000 = 20h
Heißt dann:
PHP:
mov AL, 040h
mov BL, 020h
add AL,BL
daa
Dann steht in AL dein BCD codiertes Ergebnis:
0110 0000 = 6 0
Das "daa" hätte man hier nicht explizit gebraucht.
 
Zuletzt bearbeitet: (40+20 = 60...)
danke für deine Hilfe! :)
 
jo danke :)
 
Zurück
Oben