我试图在图形模式下打印角色。通常当我打印一个角色时,我正在做:
mov ah,14 ; ah=14
mov al,'x'
int 10h ; print the character
这一次它没有用。我想问题是我切换到图形模式:
push ax
mov ah, 0
mov al, 13h
int 10h
pop ax
ret
那我怎么还能使用图形模式(我需要它)并打印一个字符? 我使用的是nasm编译器,bochs调试器和8086平台。
非常感谢!
答案 0 :(得分:7)
始终拥有Ralf Brown Interrupt List便利。
服务int 10h/AH=0Eh
需要BH
中的页码和BL
中使用的颜色。
此代码段有效
mov ah, 0eh ;0eh = 14
mov al, 'x'
xor bx, bx ;Page number zero
mov bl, 0ch ;Color is red
int 10h
在文本模式下,不使用BL
,但在图形模式下,它是
没有正确设置它可能最终写“黑色黑色”。
答案 1 :(得分:0)
你必须绘制它(至少如果你想要抛光它的外观)。
IIRC BIOS或DOS中断实际上能够以gfx模式打印字符,但字体很难看,它确实破坏了其他内容,所以当我确实需要在13h模式下打印文本时,我不得不这样做靠我自己。
如果您是新手,请从这样开始:
* 1) 对于第一步,您可以使用这样的一些调试gfx(使用默认的DOS调色板):
testSprite: ; testing gfx glyph, size 6x8 pixels for 13h mode
times 6 db 15 ; white line at top
times 6*6 db 2 ; dark green middle
times 6 db 13 ; violet line at bottom
在第二步中,你必须将值从源地址复制到0xA000:320 * posy + posx存储区,正确推进指针:复制每个字节后的源++,单行的目标++( width 字节),然后目的地+ = 320-宽度前进到高度线的下一行。