Операционная система Nasm со счетчиком? - PullRequest
0 голосов
/ 29 января 2012

Привет, я пытаюсь добавить счетчик в nasm, где он будет отображать только определенное количество символов.

Я знаю, что могу просто удалить их из БД, но я хочу узнать больше о программировании 16-битной операционной системы.

BITS 16

start:
    mov ax, 07C0h       ; Set up 4K stack space after this bootloader
    add ax, 288     ; (4096 + 512) / 16 bytes per paragraph
    mov ss, ax
    mov sp, 4096

    mov ax, 07C0h       ; Set data segment to where we're loaded
    mov ds, ax


    mov si, text_string ; Put string position into SI


    call print_string   ; Call our string-printing routine

    jmp $           ; Jump here - infinite loop!


    text_string db 'Cyber Tronic Operating System version one', 0


print_string:           ; Routine: output string in SI to screen
    mov ah, 0Eh     ; int 10h 'print char' function

.repeat:
    lodsb           ; Get character from string
    cmp al, 0
                je .done
    int 10h         ; Otherwise, print it
    jmp .repeat

.done:
    ret


    times 510-($-$$) db 0   ; Pad remainder of boot sector with 0s
    dw 0xAA55       ; The standard PC boot signature]

1 Ответ

0 голосов
/ 11 августа 2012

Используйте инструкцию "loop", например:

print_string:           ; Routine: output string in SI to screen
    mov ah, 0Eh     ; int 10h 'print char' function

    mov cx,characters_to_print
.repeat:
    lodsb           ; Get character from string
    cmp al, 0
                je .done
    int 10h         ; Otherwise, print it
    loop .repeat

.done
    ret
...