ASM:端口3c8h和3c9h是做什么的?



我正在尝试创建将加载和打印256颜色BMP文件的ASM代码。
我看到了几个执行此工作的代码,然后首先将0加载到端口3C8H,然后将调色板加载到端口3C9H。
这些端口的负载是什么?
另外,谢谢!:)

我记得使用这些端口来设置VGA调色板。您在3C8和R,g,b值上连续3c9上排出颜色编号,IIRC:

mov al, 1    ; set color index 0's rgb value
mov dx, 3c8h
out dx, al
inc dx       ; now 3c9h
mov al, 11h
out dx, al   ; set R = 11h
mov al, 22h
out dx, al   ; set G = 22h
mov al, 33h
out dx, al   ; set B = 33h

因此,每当VGA硬件遇到价值时" 1"在视频内存中,它将散发出RGB值为#112233的像素。

由于颜色索引寄存器会自动通过VGA芯片递增,因此您也可以使用OUTS指令。要根据内存块更改VGA卡的整个调色板,您可以简单地执行A:

xor al, al      ; zero al register
mov dx, 3c8h
out dx, al      ; start with color zero
inc dx          ; dx = 3c9h
lds si, palette ; ds:si points to color palette data
mov cx, 300h    ; 3 bytes rgb x 256 colors
rep outsb

相关内容

  • 没有找到相关文章

最新更新