繁体   English   中英

INT 10、13h如何使用属性?

[英]How does INT 10, 13h work with attributes?

嘿,我试图理解INT 10h,13h(19),该字符以ah的13h写入BIOS中断10的字符串。 我在下面找到了有关将不同标志放入不同寄存器的信息。 我仍然不知道的一件事是BL中应该包含的内容,如果我只是想使用此函数编写字符串,则BL中的属性应该是什么? 现在,它会写出没有意义的奇怪的闪烁符号。 谢谢你

Writes a string of characters with specified attributes to any display
page.

   On entry:      AH         13h
                  AL         Subservice (0-3)
                  BH         Display page number
                  BL         Attribute (Subservices 0 and 1)
                  CX         Length of string
                  DH         Row position where string is to be written
                  DL         Column position where string is to be written
                  ES:BP      Pointer to string to write

   Returns:       None

   Notes:         This service is available only for XTs dated 1/19/86
                  and later, ATs, EGAs, and PC Convertibles.

                  The service has four subservices, as follows:

                  AL=00h: Assign all characters the attribute in BL;
                  do not update cursor
                  AL=01h: Assign all characters the attribute in BL;
                  update cursor
                  AL=02h: Use attributes in string; do not update
                  cursor
                  AL=03h: Use attributes in string; update cursor

                  In Subservices 0 and 1, all characters in the string
                  are written to the screen with the same attribute--
                  the attribute specified in BL.

                  In Subservices 2 and 3, the attribute byte for each
                  character is found in the string itself. The string
                  itself consists of a character followed by its
                  attribute, another character followed by its
                  attribute, and so on. The string is copied directly
                  to the video buffer as is.

                  In Subservices 0 and 2, the cursor position is not
                  updated after the string is written.

                  In Subservices 1 and 3, the cursor is moved to the
                  first position following the last character in the
                  string.

                  Like Service 0Eh, Service 13h responds appropriately
                  to ASCII 07h (bell), 08h (backspace), 10h (line
                  feed), and 0Dh (carriage return). All other
                  characters are printed.

对于int 10hBL寄存器用于颜色属性。

除非您要处理CGA,否则BL值是调色板编号,则BL值是代表前景色(4位-下半部分)和背景色(4位-上半部分)的数字。

例如,如果您想要蓝色(0x01)背景和红色(0x04)文本颜色,则需要将0x14放入BL寄存器中,即二进制形式00010100

      0001             0100
|_ Background _| |_ Foreground _|

颜色通常是:

 - Black            0x00
 - Blue             0x01
 - Green            0x02
 - Cyan             0x03
 - Red              0x04
 - Magenta          0x05
 - Brown            0x06
 - LightGray        0x07
 - DarkGray         0x08
 - LightBlue        0x09
 - LightGreen       0x0A
 - LightCyan        0x0B
 - LightRed         0x0C
 - LightMagenta     0x0D
 - LightBrown       0x0E
 - White            0x0F

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM