Пытаюсь сделать базовую c ОС со сборкой. Но это не работает. Не знаю почему. Кстати, я новичок. Я хочу иметь print_string, использовать функцию для вывода boot_string. Код:
BITS 16
start:
mov ax, 07C0h
mov ax, 288
mov ss, ax
mov sp, 4096
mov ax, 07C0h
mov ds, ax
mov si, text_string
call print_string
jmp $ ; INFINITE LOOP
print_string:
mov ax, boot_string
.repeat:
lodsb
cmp al, 0
je .done
int 10h
jmp .repeat
.done:
ret
times 510-($-$$) db 0
dw 0xAA55
boot_string db 'Starting Operating System...', 0
Но когда я компилирую это, он выдает эту ошибку;
nasm -f bin -o os.bin os.asm
os.asm:13: error: symbol `text_string' undefined
os.asm:19: error: label `print_string' changed during code generation [-
w+error=label-redef-late]
os.asm:21: error: label `print_string.repeat' changed during code generation [-
w+error=label-redef-late]
os.asm:28: error: label `print_string.done' changed during code generation [-
w+error=label-redef-late]
make: *** [Makefile:2: nasm] Error 1
Я был бы очень рад, если бы кто-нибудь помог мне решить эту проблему. И если вы знаете какие-либо сайты о разработке ОС, укажите URL-адрес, чтобы я тоже мог их проверить ^ _ ^