23. November 2024, 15:28
mov ax, 40h mov ds, ax mov ah, 06h mov al, 0 ; Alle Zeilen scrollen mov bh, 7 ; Schriftfarbe mov ch, 0 ; Zeile mov cl, 0 ; Splate mov di, 84h mov dh, [di] mov di, 4ah mov dl, [di] dec dl int 10h ; und den Cursor auf Bildschirmanfang setzen: mov bh, 0 ; Bildschirmpage mov dl, 0 ; Reihe mov dh, 0 ; Zeile mov ah, 02 int 10h
mov bh, 0 ; Bildschirmpage mov dl, 0 ; Reihe mov dh, 0 ; Zeile mov ah, 02 int 10h
[ORG 0x7C00]mov ax, 40hmov ds, ax mov ah, 06h mov al, 0 ; Alle Zeilen scrollenmov bh, 7 ; Schriftfarbemov ch, 0 ; Zeilemov cl, 0 ; Splatemov di, 84hmov dh, [di]mov di, 4ahmov dl, [di]dec dl int 10hmov bh, 0 ; Bildschirmpagemov dl, 0 ; Reihemov dh, 0 ; Zeilemov ah, 02int 10hjmp $times 510 - ($-$$) db 0dw 0xAA55
; Die include-Funktionen überspringen:jmp main; Die Funktionen includen:%include "functions.asm"; Das Ziel der "main-Jump"-Anweisung:main:; Das Segmentregister updaten:mov ax, 0x1000mov ds, axmov es, ax; Hier beginnt der eigentliche Kernel-Code:mov si, textmov bh, 7call textout ; Den String "text" ausgebencall waitkey ; Auf einen Tastendruck wartencall clsmov si, msg ; Den String "msg" ausgebenmov bh, 7call textoutcall waitkeycall reboot ; und rebooten; Die Variablen:text db "Hi",13,10,0msg db "Hello",13,10,0
; Den Bildschirm löschen:cls:mov ax, 40hmov ds, axmov ah, 06hmov al, 0 ; Alle Zeilen scrollenmov bh, 7 ; Schriftfarbemov ch, 0 ; Zeilemov cl, 0 ; Splatemov di, 84hmov dh, [di]mov di, 4ahmov dl, [di]dec dl int 10hmov bh, 0 ; Bildschirmpagemov dl, 0 ; Reihemov dh, 0 ; Zeilemov ah, 02int 10hret ; Die Funktion beenden; Textausgabe: (!ACHTUNG IN "BX" MUSS DER FARBCODE LIEGEN!)textout: lodsb ; Byte ladenor al, aljz short textoutend ; wenn Byte=0, dann zu "textoutend" springenmov ah, 0x0E ; Funktion 0x0Eint 0x10 ; Interrupt 0x10 Ausführen (Textausgabe)jmp textout ; nächstes Byte bearbeitentextoutend:ret ; Funktion beenden; Auf einen Tastendruck warten:waitkey:mov ah, 0 ; Funktion 0int 0x16 ; Interrupt 0x16 ausführen (Tastendruck entgegnnehmen)ret ; Funktion beenden; Rebooten:reboot:jmp 0xffff:0x0000