title image


Smiley Re: Assembler-Programmierung
Hallo,



Übrigens: In meinem Buch steht, dass das SF-Flag beim IMUL-Befehl undefiniert ist!



Uups, sorry, da hat Dein Buch tatsächlich recht! Wäre zu schön gewesen ;)





Im Moment sehe ich noch ein paar Probleme:



schreib statt mov ax,-100 richtiger mov al,-100 schreiben, da Du anschließend zwei 8-Bit Zahlen multiplizierst und der Inhalt von al nicht für beide Anweisungen gleich sind. (Das Ergebnis steht aber auf jeden Fall in ax

Dir fehlt immer noch der Rücksprung zu M1, nach der Ausgabe des Ergebinisses

die 'Umrechnung' ins Dezimalsystem ist nicht mehr so einfach, da in ax schlimmstenfalls eine 5-stellige Zahl steht. Ich habe unten eine Routine skizziert (nicht ausprobiert), die für dieses Problem funktionieren sollte, sie setzt aber schon

vorraus, daß ax geteilt durch 10 kleiner als 256 ist, damit steht in ax höchstens eine vierstellige Zahl







push cx ; cx auf Stack retten



;initialisieren

mov cx,4 ; maximal vier Stellen im Dezimalsystem

neg ax ; Vorzeichen entfernen

mov dl, 10 ; Divisor

mov si, OFFSET ERGGEBNIS

add si,4 ; ds:si zeigt auf die letzte Stelle des Ergebnisses

;umwandeln

H2D: div dl

add ah,30h ; ASCII-Zeichen der Ziffer des Divisionsrestes in ah

mov [si],ah ; Stelle schreiben

dec si ; ds:si auf die nächst höhere stelle zeigen lassen

xor ah,ah ; ah auf 0 setzten, damit steht in ax, das restlose

; Ergebnis, der Division

loop H2D ; wenn noch nicht alle vier stellen abgearbeitet sind

; weiter machen



pop cx ; cx wieder herstellen





Hoffe, so klappts



Gruß

PhysChemist

geschrieben von

Login

E-Mail:
  

Passwort:
  

Beitrag anfügen

Symbol:
 
 
 
 
 
 
 
 
 
 
 
 
 

Überschrift: