Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Flo aka kleiner_hacker
Anmeldungsdatum: 23.06.2006 Beiträge: 1210
|
Verfasst am: 28.10.2006, 11:15 Titel: neue zeile in asm? |
|
|
hi leude
ich hab son asm prog geschrieben, wo man die zahlen 0 bis 9 drückt und er sagt dann ob du 1,2,3,4 oder 5 oder 6,7,8,9,0 gedrückt hast
funktioniert eigentlich super, bis auf das problem, dass er alle nachrichten HINTEREINANDER reiht.
ich hätte aber gerne eine neue zeile
die ausgabe erfolgt durch
Code: |
text db "Fünf$"
[...]
mov dx, offset text
mov ax, 0900h
int 21h
|
hoffe ihr könnt mir helfen _________________ MFG
Flo
Satoru Iwata: Wer Spaß am Spielen hat, fragt nicht nach Grafik.
zum korrekten Verstaendnis meiner Beitraege ist die regelmaessige Wartung des Ironiedetektors unerlaesslich. |
|
Nach oben |
|
|
Mao
Anmeldungsdatum: 25.09.2005 Beiträge: 4409 Wohnort: /dev/hda1
|
Verfasst am: 28.10.2006, 11:22 Titel: |
|
|
Argh...googeln?
Vllt. mal nach ASCII-Codes?
entweder hinten direkt dranhängen, an jeden Strings (ressourcenfressend), oder 'ne extra Function oder 'nen Macro (auch ressourcenfressend) schreiben.
Code: |
mov ah, 0x0E
mov al, 10
mov bl, 0x07
int 0x10
add al, 3
int 0x10
|
So - LineFeed inkl. CarriageReturn. _________________ Eine handvoll Glück reicht nie für zwei.
--
|
|
Nach oben |
|
|
A.K.
Anmeldungsdatum: 02.05.2005 Beiträge: 467 Wohnort: HH
|
Verfasst am: 28.10.2006, 12:26 Titel: |
|
|
Hi,
was Mao da sicherlich noch dazu schreiben wollte ist folgendes:
Beim Schreiben von Zeichen auf den Bildschirm kannst du anhand von Steuerzeichen bestimmen wie die Zeichen die du ausgiebst auf dem Bildschirm formatiert werden.
Diese Steuerzeichen umfassen alle Zeichen die einen ASCII/ANSI-Code von 0-31 haben.
Hier die wichtigsten:
13 - CarriageReturn (bewirkt das weiterrücken des Ausgabecursors in "Y-Richtung" um 1)
10 - Linefeed (Bewirkt, das der Cursor an den Anfang der aktuellen Zeile springt)
9 - TAB (bewirkt ein weiterrücken des Cursors um 8 "X-Schritte".)
8 - Backspace (bewirkt ein weiterrücken des Cursor um -1 "X-Schritte")
7 - Bell (bewirkt einen "Beep" beim schreiben)
Diese Zeichen können, wie du es schon gemacht hast und wie Mao es auch nochmal beschrieben hat, ganz einfach mit der Unterfunktion 0x0E des BIOS-Interruptes 0x10 ausgegeben werden.
Da das formatieren nur mit diesen Steuerzeichen recht mühsam sein kann gibt es natürlich auch die Möglichkeit Zeichen an bestimmten Bildschirmkoordinaten auszugeben.
Dafür gibt es die Unterfunktion 0x02 im BIOS-Interrupt 0x10.
Mit dieser ist es möglich den Cursor zu positionieren. (quasi LOCATE)
Der Code dafür:
Code: |
MOV AH,2
MOV DH, Zeile
MOV DL, Spalte
XOR BH,BH (BH = Bildschirmseite, hier: BH = 0)
INT 10
|
Danach kannst du dann deine Zeichen setzen. Da es sich bei dir um den Textmodus handelt, gilt hier folgende Auflösung: Zeilen = 0 bis 24, Spalten = 0 bis 79.
Wenn du vorher wissen möchtest wo dein Cursor sich momentan befindet, kannst du die Unterfunktion 0x03 im BIOS-Interrupt 0x10 verwenden.
Code:
Code: |
MOV AH,3
XOR BH,BH
INT 10
|
Nach dem Aufrufen dieser Funktion steht dir nun im Register DH die aktuelle Zeile und in DL die aktuelle Spalte zur Verfügung.
MFG A.K. _________________
http://forum.IconSoft.de
http://www.pnpbb.de - hol dir jetzt dein eigenes kostenloses Forum *NEU* |
|
Nach oben |
|
|
Mao
Anmeldungsdatum: 25.09.2005 Beiträge: 4409 Wohnort: /dev/hda1
|
Verfasst am: 28.10.2006, 12:31 Titel: |
|
|
Hehe, ja, das wäre die ausführliche Variante.
Ich würde sagen: "quick'n'dirty rulez!!111f"
Das würde aber mehr Code produzieren, als wenn man den Cursor nur normal weitergerückt haben möchte - ist aber durchaus sinnvoll, wenn man farbige Buchstaben (oder blinkend oder mit Hintergrund) haben möchte, dann muss man 0x09 nehmen und selbst dafür sorgen, dass der Cursor in die nächste Zelle bzw. Zeile gerückt wird.
Grüßle,
Mao _________________ Eine handvoll Glück reicht nie für zwei.
--
|
|
Nach oben |
|
|
Flo aka kleiner_hacker
Anmeldungsdatum: 23.06.2006 Beiträge: 1210
|
Verfasst am: 28.10.2006, 15:29 Titel: |
|
|
danke ak...
@mao
wär dieser mehrt-code langsamer oder gleichschnell (weil der dos int diesen code letztendlich ausgführt...)
wie ich rumprobiert hab mit steuercodes, isser abgeschmiert... kan aber was anderes auch gewesen sein
ich probiers nochmal
und: habt mitleid mit mir, ich hab innerhalb von 2 tagen mit das adok tut bis kap 6 reingezogen...
(vor eben diesen 2 tagen)
sol heißen: ich hab exakt EINEN tag in asm geprogt... _________________ MFG
Flo
Satoru Iwata: Wer Spaß am Spielen hat, fragt nicht nach Grafik.
zum korrekten Verstaendnis meiner Beitraege ist die regelmaessige Wartung des Ironiedetektors unerlaesslich. |
|
Nach oben |
|
|
Mao
Anmeldungsdatum: 25.09.2005 Beiträge: 4409 Wohnort: /dev/hda1
|
Verfasst am: 29.10.2006, 12:32 Titel: |
|
|
kleiner_hacker hat Folgendes geschrieben: |
wär dieser mehrt-code langsamer oder gleichschnell (weil der dos int diesen code letztendlich ausgführt...)
|
Kannst du den Satz noch mal auf gutem Deutsch schreiben?
Wenn du meinst, dass mein Code mit dem DOS-Int arbeitet, fällt mir dazu nur ein:
- is' wieder für das "Bot-OS" ()
- ist der Interrupt 0x10 ein BIOS-Interrupt und hat so überhaupt nix mit DOS zu tun _________________ Eine handvoll Glück reicht nie für zwei.
--
Zuletzt bearbeitet von Mao am 27.12.2007, 15:45, insgesamt einmal bearbeitet |
|
Nach oben |
|
|
Flo aka kleiner_hacker
Anmeldungsdatum: 23.06.2006 Beiträge: 1210
|
Verfasst am: 29.10.2006, 13:10 Titel: |
|
|
Mao hat Folgendes geschrieben: |
Das würde aber mehr Code produzieren, als wenn man den Cursor nur normal weitergerückt haben möchte - ist aber durchaus sinnvoll, wenn man farbige Buchstaben (oder blinkend oder mit Hintergrund) haben möchte, dann muss man 0x09 nehmen und selbst dafür sorgen, dass der Cursor in die nächste Zelle bzw. Zeile gerückt wird.
|
Dieser code, den es produziereen würde
wäre dieser schneller, langsamer oder gleichschnell, da der int21h letztendlich ja auch auf eben diese befehlskette zurückgreift _________________ MFG
Flo
Satoru Iwata: Wer Spaß am Spielen hat, fragt nicht nach Grafik.
zum korrekten Verstaendnis meiner Beitraege ist die regelmaessige Wartung des Ironiedetektors unerlaesslich. |
|
Nach oben |
|
|
Mao
Anmeldungsdatum: 25.09.2005 Beiträge: 4409 Wohnort: /dev/hda1
|
Verfasst am: 29.10.2006, 13:21 Titel: |
|
|
Langsamer - je mehr Code, desto später ist der Prozessor mit dem Abarbeiten fertig - irgendwie logisch, net?!
Aber selbst bei 'nem 20 MHz-System würdest du keinen Unterschied merken.
Und das "Das würde aber mehr Code produzieren" war darauf zu verstehen, dass es etwas umständlicher wird.
Greets,
Mao _________________ Eine handvoll Glück reicht nie für zwei.
--
|
|
Nach oben |
|
|
Flo aka kleiner_hacker
Anmeldungsdatum: 23.06.2006 Beiträge: 1210
|
Verfasst am: 29.10.2006, 13:58 Titel: |
|
|
jaja
aber der dos int 21h führt doch intern auch wieder diese befehöle aus oder? _________________ MFG
Flo
Satoru Iwata: Wer Spaß am Spielen hat, fragt nicht nach Grafik.
zum korrekten Verstaendnis meiner Beitraege ist die regelmaessige Wartung des Ironiedetektors unerlaesslich. |
|
Nach oben |
|
|
Mao
Anmeldungsdatum: 25.09.2005 Beiträge: 4409 Wohnort: /dev/hda1
|
Verfasst am: 29.10.2006, 13:59 Titel: |
|
|
Ja. _________________ Eine handvoll Glück reicht nie für zwei.
--
|
|
Nach oben |
|
|
|