Строка не отображается в сборке - PullRequest
0 голосов
/ 19 января 2011

Я пытаюсь возиться с какой-то сборкой, создавая ОС.Когда этот код загружается в загрузчик, предполагается, что он выдает «Это моя новая крутая ОС! Woohoo! ChigginsOS», но прямо сейчас он говорит это, за исключением «Chiggins» в конце.Куда я иду не так?

    BITS 16

start:
    mov ax, 07C0h
    add ax, 288
    mov ss, ax
    mov sp, 4096

    mov ax, 07C0h
    mov ds, ax

    mov si, text_string
    call print_string

    mov si, name_string
    call print_string

    jmp $ 

    text_string db 'This is my cool new OS! Woohoo!',0
    name_string db 'ChigginsOS',0

;---------------------------------------------------------------------------------------

exit:
    ret

;---------------------------------------------------------------------------------------

print_string:
    mov ah, 0Eh

.repeat:
    lodsb
    cmp al, 0
    je .done
    int 10h
    jmp .repeat

.done:
    call exit

;---------------------------------------------------------------------------------------

    times 510-($-$$) db 0
    dw 0xAA55

1 Ответ

6 голосов
/ 19 января 2011

Вы не выходите из подпрограммы print_string: когда вы выполняете 'call exit', вы запускаете новую подпрограмму, поэтому 'ret' вернется к месту после 'call exit' и начнет выполнять наполнитель после print_string.

Заменить «выход вызова» на простой «ret», и оно должно работать.

...