Я пытаюсь собрать свой первый загрузчик, и он на самом деле работает, но, по словам GDB, есть одна вещь, которую я не понимаю.
Это мой загрузчик, написанный в nasm:
org 0x7c00
bits 16
start: jmp boot
msg db "Bootinggggg!", 0
Print:
lodsb ;loading si to al
cmp al,0 ;loop
je PrintDone
mov ah,0eh
mov bl,14 ;yellow color
int 10h
jmp Print
PrintDone:
ret
boot:
mov ah,00h
mov al,0eh
int 10h ;stepping into graphic mode
mov si,msg
call Print
cli
cld
hlt
times 510-($-$$) db 0
dw 0xAA55
Я использую qemu и визуализирую архитектуру 8086 на моей машине unbuntu. После использования команды ni
несколько раз в GDB, GDB показывает, что программа просто бесконечно добавляет eax в al. Я нажимал ni
много раз, и он просто добавляет его. Но когда я нажимаю продолжить, это на самом деле работает, как вы видите, печатает строку. Почему это происходит?