Assembly 如何使用int10h打印矩阵?

Assembly 如何使用int10h打印矩阵?,assembly,printing,draw,tasm,real-mode,Assembly,Printing,Draw,Tasm,Real Mode,正如我的问题所说,我需要打印一个带有int10h的矩阵,但不仅如此,这个矩阵是0和1的组合,其中0代表蓝色,1代表红色。所以我的问题是如何打印这个矩阵,以及如何在打印时使蓝色和红色变成红色?我使用的是TASM,可以使用16位或32位寄存器。 以下是一个例子: oneMatrix db 00000000000 00000110000 00011110000 00000110000 0000011

正如我的问题所说,我需要打印一个带有int10h的矩阵,但不仅如此,这个矩阵是0和1的组合,其中0代表蓝色,1代表红色。所以我的问题是如何打印这个矩阵,以及如何在打印时使蓝色和红色变成红色?我使用的是TASM,可以使用16位或32位寄存器。 以下是一个例子:

oneMatrix db 00000000000
             00000110000
             00011110000
             00000110000
             00000110000
             00000110000
             00011111100
             00000000000

你可以看到,1形成了一个1的形状。如何使用int 10h打印此文件,其中0为蓝色,1为红色?

使用BIOS.WriteCharacterAndAttribute函数09h。根据手边的字符(从矩阵中读取),在
BL
中输入蓝色或红色的背景色

看一看。有一些相似之处


如果需要输出在图形屏幕上创建图示符,则下一代码将有帮助:

    mov  si, offset oneMatrix
    mov  bh, 0      ; DisplayPage

    mov  bp, 8      ; Height
    mov  dx, ...    ; UpperleftY
OuterLoop:

    mov  di, 11     ; Width
    mov  cx, ...    ; UpperleftX
InnerLoop:
    lodsb
    cmp al '0'
    mov al, 1      ; Blue
    je  Go
    mov al, 4      ; Red
Go:
    mov ah, 0Ch    ; BIOS.WritePixel
    int 10h
    inc cx         ; Next X
    dec di
    jnz InnerLoop

    inc dx         ; Next Y
    dec bp
    jnz OuterLoop

您想在文本模式还是图形模式下执行此操作?如果在图形模式下,您希望使用哪种模式?在图形模式和中断模式下,您可以选择任何最适合的模式。谢谢,我会调查一下,让您知道这是否解决了我的问题problem@DiegoEsquivel对于图形屏幕,可以使用BIOS.WritePixel从矩阵中的数据创建字符图示符。编辑了我的答案。
    mov  si, offset oneMatrix
    mov  bh, 0      ; DisplayPage

    mov  bp, 8      ; Height
    mov  dx, ...    ; UpperleftY
OuterLoop:

    mov  di, 11     ; Width
    mov  cx, ...    ; UpperleftX
InnerLoop:
    lodsb
    cmp al '0'
    mov al, 1      ; Blue
    je  Go
    mov al, 4      ; Red
Go:
    mov ah, 0Ch    ; BIOS.WritePixel
    int 10h
    inc cx         ; Next X
    dec di
    jnz InnerLoop

    inc dx         ; Next Y
    dec bp
    jnz OuterLoop