您好我正在尝试在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]
答案 0 :(得分:0)
使用“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