![](/img/trans.png)
[英]Error with stack in assembly 8086 (real mode) (printing char while stack full)
[英]Assembly - Printing a char on graphical mode
我正在尝试在图形模式下打印字符。 通常当我打印一个字符时,我正在做:
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平台。
非常感谢!
始终随身携带Ralf Brown中断列表 。
服务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
,但是在图形模式下使用BL
。
设置不正确可能最终会写成“ black on black”。
您必须绘制它(至少如果要修饰它的外观)。
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内存区域,正确地前进指针:复制每个字节后为source ++,在单行中为destination ++(用于宽度字节),然后将destination + = 320宽度前进到下一行以获取高度线。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.