我正在学习如何在FASM中编写引导扇区汇编程序,并且我在打印字符串时遇到问题。本教程给了我一个作业,我应该编写自己的print_string例程,如下所示:
include 'routines.ASM'
mov bx, hello_msg
call print_string
mov bx, goodbye_msg
call print_string
jmp $ ; now hang!
hello_msg:
db 'Hey there world!', 0 ;;0 tells routine to stop printing
goodbye_msg:
db 'time to do some stuff!', 0
times 510-($-$$) db 0
dw 0xaa55
我的routines.asm文件如下:
print_char:
mov ah, 0xe
int 0x10
ret
print_string:
;; compare the char at address to zero. return if 0. Otherwise print, increment, repeat
mov ax, [bx]
cmp al, 0
je exit
call print_char
add bx, 1
jmp print_string
exit:
ret
我尝试做的是使用存储在BX中的地址来获取我需要打印,增量和继续的字符的位置,直到终止为0.但是,bochs给了我错误
using of nonexisting segment register 7
并且它没有在屏幕上打印任何内容。
我做错了什么 - 我忽略了什么吗?感谢您提供的任何帮助!