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