【发布时间】:2015-02-04 14:09:24
【问题描述】:
我想使用 bios 中断 0x10 打印一个字符串。但我只得到一个蓝色字段,其中没有字母。也许我通过处理我的字符串来解决问题。
编辑:我有两个代码文件。第一个写入软盘的第一个扇区。它将第二个扇区从软盘复制到内存(从 0x5000 开始)并跳转到 0x5000。这是我的第二个文件,我应该在其中打印我的字符串。
[BITS 16]
org 0x5000
sect2:
mov ah, 0x03 ;get curser position
mov bh, 0x00 ;page number
int 0x10
mov ax, 0x0500
mov es, ax
mov bp, bsy1msg
mov ah, 0x13 ;write string
mov al, 0x01 ;update cursor after writing
mov bh, 0x00 ;page number
mov bl, 0x1F ;atributes
mov cx, bsy1len ;number of characters in string
int 0x10
end:
jmp end
bsy1msg db 13,10,"BSY1 via INT 0x10"
bsylen equ $ - bsy1msg
【问题讨论】:
-
尝试使用
mov ax,cs而不是那个常量来加载 ES。我不完全相信你的假设是有效的。 -
使用 'mov ax, cs' 我得到相同的结果
-
可能是 'org 0x5000' ?
-
确定 DH/DL(行/列)具有合理的值吗?