无法将输入字符串存储在变量中,然后使用x86 BIOS中断显示它

时间:2014-04-12 22:00:44

标签: assembly bios x86-16

我是System Programming的新手。我想得到一个输入字符串并将其保存在变量中然后显示它。我知道如何读取单个字符然后显示它但是无法弄清楚如何获取输入字符串,将其保存到变量中然后显示它。

这是我到目前为止尝试处理输入字符串

[bits 16]
[org 0x7c00]

mov si, msg

call print_string
call input_string

print_char:
    mov ah, 0x0e
    mov bh, 0x00
    mov bl, 0x07
    int 0x10
    ret

print_string:
    next_character:
        mov al, [si]
        inc si
        cmp al, 0
        je exit
        call print_char
        jmp next_character
        ret

;code for reading user input
input_string:
    mov si, input
    read_next_input_char:
        mov ah, 0x00
        int 0x16

        cmp al, 0x0D ; check if Enter key pressed
        je display_input_string

        mov [si], al
        inc si
        jmp read_next_input_char
        ret

display_input_string:
    mov si, input
    call print_string
    ret

exit:
    ret


msg db "This is my tiny OS", 0
input
times 510 - ($ - $$) db 0
dw 0xaa55   

我无法弄清楚我的代码有什么问题。任何帮助将不胜感激。

0 个答案:

没有答案