如何在fasm中打印字符串?

时间:2017-01-10 17:28:11

标签: assembly x86

我正在学习如何在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

并且它没有在屏幕上打印任何内容。

我做错了什么 - 我忽略了什么吗?感谢您提供的任何帮助!

0 个答案:

没有答案