Hi Leute!
Vorweg, ich bin noch ein ziemlicher n00b also seid bitte nachsichtig
Also, ich habe die ersten Ausgaben des LowLevel Magazins gelesen und bin schwer begeistert. Hab das Beispiel aus der ersten Ausgabe (StupidOS 1.0) sofort erfolgreich ausprobiert, und angefangen die Sourcen ein bisschen umzuschreiben. Prinzipiell klappt das schon ganz gut, zB hab ich bisher die getkey-Routine aus der kernel.asm dazu benutzt die Eingabe auf der Tastatur auf die Textausgabe forzuwarden und auch der VGA Mode 13h funzt schon (nach einigem rumprobieren). Naja, jedenfalls wollte ich dann mal den Bootloader recoden aber irgendwie schaffe ich es nicht etwas auf die Textausgabe zu schreiben.
Warum erzeugt folgender Code keine Ausgabe auf dem Bildschirm:
Ich benutze übrigens VMWare 5 zum testen meiner Images (bochs tut net)
Vorweg, ich bin noch ein ziemlicher n00b also seid bitte nachsichtig

Also, ich habe die ersten Ausgaben des LowLevel Magazins gelesen und bin schwer begeistert. Hab das Beispiel aus der ersten Ausgabe (StupidOS 1.0) sofort erfolgreich ausprobiert, und angefangen die Sourcen ein bisschen umzuschreiben. Prinzipiell klappt das schon ganz gut, zB hab ich bisher die getkey-Routine aus der kernel.asm dazu benutzt die Eingabe auf der Tastatur auf die Textausgabe forzuwarden und auch der VGA Mode 13h funzt schon (nach einigem rumprobieren). Naja, jedenfalls wollte ich dann mal den Bootloader recoden aber irgendwie schaffe ich es nicht etwas auf die Textausgabe zu schreiben.
Warum erzeugt folgender Code keine Ausgabe auf dem Bildschirm:
Code: [Auswählen]
org 0x7C00 ; Startadresse
start:
cli ; Keine Interrupts!
mov ax, 0x9000 ; Stackadresse
mov ss, ax ; SS = 9000 (unser Stack)
mov sp, 0 ; SP = 0000 (der Stackpointer)
sti ; Interrupts zulassen
mov si,msg
call putstr ; Meldung ausgeben
ende: jmp ende
; ----------------------------------------------
; Funktionen und Variablen
; ----------------------------------------------
msg db "Hello World",13,10,0
; Einen String ausgeben:
putstr:
lodsb ; Byte laden
or al,al
jz short putstrd ; 0-Byte? -> Ende!
mov ah,0x0E ; Funktion 0x0E
mov bx,0x0007 ; Attribut-Byte (wird nicht benötigt)
int 0x10 ; schreiben
jmp putstr ; Nächstes Byte
putstrd:
retn
times 512-($-$$)-2 db 0 ; Dateilänge: 512 Bytes
dw 0AA55h ; BootsignaturIch benutze übrigens VMWare 5 zum testen meiner Images (bochs tut net)

Übersicht
Wiki
Hilfe
Suche
Einloggen
Registrieren
Drucken

Gespeichert
