Lowlevel
Lowlevel => Lowlevel-Coding => Thema gestartet von: T0ast3r am 21. April 2005, 18:12
-
Hi!
Kennt jemand ne Funktion im Interrupt 10h, mit der ich einen Text ausgeben kann??
Oder bzw. einen Buchstaben??
Ich brauche eben ein BIOS Interrupt um eine Meldung auszugeben.
Muss ich dann eigentlich auch hochscrollen??
Kann mir jemand einen (kommentierten) Code geben???
-
afaik gibt es dafür keine int 0x10 funktion.
dafür aber 1000 selbst zusammengeschusterte funktionen, die alle in etwa so aussehen:
; input: ds:si -> null terminierter string
print_str:
lodsb ; nächstes zeichen nach al laden
or al, al ; ist al = 0?
jz short print_str_done ; ja => jmp print_str_done
mov ah, 0x0E
int 0x10 ; int 10h, function 0Eh - Teletype Output (zeichen in al ausgeben)
jmp short print_str ; noch ein zeichen lesen
print_str_done:
ret
scrollt automatisch
-
afaik gibt es dafür keine int 0x10 funktion.
dafür aber 1000 selbst zusammengeschusterte funktionen, die alle in etwa so aussehen:
; input: ds:si -> null terminierter string
print_str:
lodsb ; nächstes zeichen nach al laden
or al, al ; ist al = 0?
jz short print_str_done ; ja => jmp print_str_done
mov ah, 0x0E
int 0x10 ; int 10h, function 0Eh - Teletype Output (zeichen in al ausgeben)
jmp short print_str ; noch ein zeichen lesen
print_str_done:
ret
scrollt automatisch
wenn es keine int 10h funktion dafür gibt, welche int 10h funktion benutzt dein code dann? :wink:
-
er meint damit das es keine funktion gibt mit dem man ganze strings ausgeben kann... o.O
-
er meint damit das es keine funktion gibt mit dem man ganze strings ausgeben kann... o.O
schon klar. aber die frage war AUCH nach einer funktion für einzelne zeichen :lol:
-
rtfm wie's so schön heißt :) Steht nämlich im Lowlevel Magazin #1 :)
-
1 Zeichen:
; input: al ->Zeichencode
print_char:
mov ah, 0x0E ; Funktionsnummer
mov bx, 0x0007 ; Bildschirmseite 0 und Farbe (fehlt IMHO auch im Code oben)
int 0x10 ; BIOS-Interrupt
ret
Müsste so gehen.
-
13, 10 = \n und \r