Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

neue zeile in asm?

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Profi-Forum
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Flo
aka kleiner_hacker


Anmeldungsdatum: 23.06.2006
Beiträge: 1210

BeitragVerfasst am: 28.10.2006, 10:15    Titel: neue zeile in asm? Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Mao



Anmeldungsdatum: 25.09.2005
Beiträge: 4409
Wohnort: /dev/hda1

BeitragVerfasst am: 28.10.2006, 10:22    Titel: Antworten mit Zitat

Argh...googeln? peinlich
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
Benutzer-Profile anzeigen Private Nachricht senden
A.K.



Anmeldungsdatum: 02.05.2005
Beiträge: 467
Wohnort: HH

BeitragVerfasst am: 28.10.2006, 11:26    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen Yahoo Messenger MSN Messenger
Mao



Anmeldungsdatum: 25.09.2005
Beiträge: 4409
Wohnort: /dev/hda1

BeitragVerfasst am: 28.10.2006, 11:31    Titel: Antworten mit Zitat

Hehe, ja, das wäre die ausführliche Variante. grinsen
Ich würde sagen: "quick'n'dirty rulez!!111f" durchgeknallt lachen
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. lächeln

Grüßle,
Mao
_________________
Eine handvoll Glück reicht nie für zwei.
--
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Flo
aka kleiner_hacker


Anmeldungsdatum: 23.06.2006
Beiträge: 1210

BeitragVerfasst am: 28.10.2006, 14:29    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Mao



Anmeldungsdatum: 25.09.2005
Beiträge: 4409
Wohnort: /dev/hda1

BeitragVerfasst am: 29.10.2006, 11:32    Titel: Antworten mit Zitat

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" (lachen)
- ist der Interrupt 0x10 ein BIOS-Interrupt und hat so überhaupt nix mit DOS zu tun Zunge rausstrecken
_________________
Eine handvoll Glück reicht nie für zwei.
--


Zuletzt bearbeitet von Mao am 27.12.2007, 14:45, insgesamt einmal bearbeitet
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Flo
aka kleiner_hacker


Anmeldungsdatum: 23.06.2006
Beiträge: 1210

BeitragVerfasst am: 29.10.2006, 12:10    Titel: Antworten mit Zitat

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. lächeln

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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Mao



Anmeldungsdatum: 25.09.2005
Beiträge: 4409
Wohnort: /dev/hda1

BeitragVerfasst am: 29.10.2006, 12:21    Titel: Antworten mit Zitat

Langsamer - je mehr Code, desto später ist der Prozessor mit dem Abarbeiten fertig - irgendwie logisch, net?! lachen
Aber selbst bei 'nem 20 MHz-System würdest du keinen Unterschied merken. zwinkern
Und das "Das würde aber mehr Code produzieren" war darauf zu verstehen, dass es etwas umständlicher wird. zwinkern

Greets,
Mao
_________________
Eine handvoll Glück reicht nie für zwei.
--
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Flo
aka kleiner_hacker


Anmeldungsdatum: 23.06.2006
Beiträge: 1210

BeitragVerfasst am: 29.10.2006, 12:58    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Mao



Anmeldungsdatum: 25.09.2005
Beiträge: 4409
Wohnort: /dev/hda1

BeitragVerfasst am: 29.10.2006, 12:59    Titel: Antworten mit Zitat

Ja.
_________________
Eine handvoll Glück reicht nie für zwei.
--
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Profi-Forum Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz