Zahlenausgabe nicht möglich
Ergebnis einer Berechnung kann nicht ausgegeben werden....
Hallo,
Ich bischäftige mich erst seit kurzem mit Assembler, aber .........
es ist mir nicht möglich nach Eingabe zweier Zahlen das Ergebnis einer Berechnung auf dem Schirm auszugeben.
Mit Zeichenketten funktioniert das problemlos..
Auch in den Büchern werden nicht Ergebnisse ausgegeben, sondern immer nur nach einem Vergleich der jeweilige vordefinierte String.
Ist es denn nicht möglich???
(zahl1 = 5 und zahl2 = 12, also nur was kleines)
mov al, zahl1
mul zahl2
mov ergebnis, ax
mov dx,ergebnis
"mov dx, offset ergebnis und lea dx, ergebnis funktionieren auch nicht...."
mov ah,09h
int 21h
hiermit erreicht man ein paar Töne aber keine brauchbare Ausgabe auf dem Schirm
Wäre nett wenn jemand Licht ins Dunkel bringen könnte.
Gruß, Nicky
Hallo,
Ich bischäftige mich erst seit kurzem mit Assembler, aber .........
es ist mir nicht möglich nach Eingabe zweier Zahlen das Ergebnis einer Berechnung auf dem Schirm auszugeben.
Mit Zeichenketten funktioniert das problemlos..
Auch in den Büchern werden nicht Ergebnisse ausgegeben, sondern immer nur nach einem Vergleich der jeweilige vordefinierte String.
Ist es denn nicht möglich???
(zahl1 = 5 und zahl2 = 12, also nur was kleines)
mov al, zahl1
mul zahl2
mov ergebnis, ax
mov dx,ergebnis
"mov dx, offset ergebnis und lea dx, ergebnis funktionieren auch nicht...."
mov ah,09h
int 21h
hiermit erreicht man ein paar Töne aber keine brauchbare Ausgabe auf dem Schirm
Wäre nett wenn jemand Licht ins Dunkel bringen könnte.
Gruß, Nicky
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 162441
Url: https://administrator.de/contentid/162441
Ausgedruckt am: 14.11.2024 um 13:11 Uhr
5 Kommentare
Neuester Kommentar
Hallo supernicky!
So einfach geht das nicht.
Du musst Zahlenwerte vorher in einen String im ASCII-Format konvertieren. Dazu schreibt man in der Regel Konvertierungsroutinen, die eine Zahl in einen ASCII-String umwandeln.
Beispiel: die Zahl 0 entspricht dem ASCII-Wert 30h, die Zahl 9 dem ASCII-Wert 39h
Bei zweistelligen Zahlen bis 99 (AX) und vierstelligen Zahlen bis 9999 (EAX) gehts noch relativ einfach:
Versuchs mal (ich kanns bei mir nicht testen)
Gruß Dieter
So einfach geht das nicht.
Du musst Zahlenwerte vorher in einen String im ASCII-Format konvertieren. Dazu schreibt man in der Regel Konvertierungsroutinen, die eine Zahl in einen ASCII-String umwandeln.
Beispiel: die Zahl 0 entspricht dem ASCII-Wert 30h, die Zahl 9 dem ASCII-Wert 39h
Bei zweistelligen Zahlen bis 99 (AX) und vierstelligen Zahlen bis 9999 (EAX) gehts noch relativ einfach:
Test Proc Pascal Near
Local buff:Byte:32 ;Buffer 32 Byte (Stack-Variable)
mov ax, 99 ;AX = Zahl 99
aam ;AH = Zahl 9, AL = Zahl 9
add ax, 3030h ;AH = ASCII 9, AL = ASCII 9
mov [buff], ax ;ASCII 99 in Buffer
mov [buff+2], '$' ;Stringende mit $ angeben sonst Piepts höchstwahrscheinlich
lea dx, [buff] ;DX = Offset Buffer
mov ah, 9 ;Funktion Stringausgabe
int 21h ;Dos-Int 21h
ret
Endp
Gruß Dieter
Hallo Nicky!
versuchs mal mit:
Gruß Dieter
PS. Das '$' musst Du bei der Buffergröße auch mitzählen. Es schadet auch nicht, wenn er größer ist, als benötigt wird
versuchs mal mit:
mov byte ptr [bx], 'M'
Gruß Dieter
PS. Das '$' musst Du bei der Buffergröße auch mitzählen. Es schadet auch nicht, wenn er größer ist, als benötigt wird