Zestaw kodu maszynowego do pierwszego laboratorium
lab1_1.txt
— 2.4 KB
File contents
; NASM MBR boot loader
[bits 16] ; Rejestry 16-bitowy
[org 0x7c00] ; BIOS ładuje pamięć do adresów 0x07c0:0000
jmp 0x0000:initialize_bios ; Resetowanie segmentu kodu do 0x0000 z długim skokiem
initialize_bios:
xor ax, ax
mov ds, ax ; Resetowanie segmentów danych do wartości 0x0000
mov es, ax
mov [bootdrive], dl
call text_A ; Wykonuje wywołanie procedury (funkcji)
halt:
hlt
jmp halt
text_A: ; Procedura
mov dl, 20 ; Kolumna
mov dh, 12 ; Wiersz
mov bh, 0 ; Wyświetlana strona
mov ah, 02h ; Zapis znaku na standardowe wyjście
int 10h ; Przerwanie karty graficznej
mov al, 'A' ; Znak do wyświetlenia
mov ah, 09h ; Przerwanie karty graficznej
mov bl, 0x02 ; Kolor znaku
int 10h ; Zapis znaku na standardowe wyjście
jmp text_S
text_S: ; Procedura
mov dl, 21 ; Kolumna
mov dh, 13 ; Wiersz
mov bh, 0 ; Wyświetlana strona
mov ah, 02h ; Zapis znaku na standardowe wyjście
int 10h ; Przerwanie karty graficznej
mov al, 'S' ; Znak do wyświetlenia
mov ah, 09h ; Przerwanie karty graficznej
mov bl, 0x03 ; Kolor znaku
int 10h ; Zapis znaku na standardowe wyjście
jmp text_K ; Powrót do adresów ze stosu
text_K: ; Procedura
mov dl, 22 ; Kolumna
mov dh, 14 ; Wiersz
mov bh, 0 ; Wyświetlana strona
mov ah, 02h ; Zapis znaku na standardowe wyjście
int 10h ; Przerwanie karty graficznej
mov al, 'K' ; Znak do wyświetlenia
mov ah, 09h ; Przerwanie karty graficznej
mov bl, 0x04 ; Kolor znaku
int 10h ; Zapis znaku na standardowe wyjście
jmp parking_course ; Powrót do adresów ze stosu
parking_course:
mov dl, 0 ; Kolumna
mov dh, 0 ; Wiersz
mov bh, 0 ; Wyświetlana strona
mov ah, 02h ; Zapis znaku na standardowe wyjście
int 10h ; Przerwanie karty graficznej
ret
data:
bootdrive db 0x00
times 510 - ($ - $$) db 0
dw 0xaa55
