首页 > 解决方案 > 如何通过 PC BIOS 调用更改像素颜色?

问题描述

我正在尝试用 16 位 x86 程序集制作一个相当简单的图形游戏。特别是,我希望能够改变像素的颜色。

我已经有一个模拟的引导加载程序(qemu)和一段代码,它可以让游戏在启动时运行,以便它可以访问某些与图形相关的组件。

经过一番研究,我发现了以下论文,该论文记录了中断 10h 的使用,从而为我们提供了以下代码来更改像素的颜色:

mov al, 13h     #Desired video mode: graphics mode
mov ah, 0       #Set video mode
int 10h         #Interrupt
mov al, 1100b   #Set color of the pixel(I believe it is light red)
mov cx, 10      #Set x coordinate
mov dx, 20      #Set y coordinate
mov ah, 0ch
int 10h

但是我正在使用 AT&T 语法(教育目的)制作游戏。因此,我尝试使用该语法找出它,从而产生以下代码:

mov $0x00, %ah   #00h interpreted as hexadecimal
mov $0x13, %al   #13h interpreted as hexadecimal  
int $0x10        #10h interpreted as hexadecimal
mov $12, %al     #1100 interpreted as bits    
mov $5, %cx      #Set x coordinate to immediate value 5
mov $5, %dx      #Set y coordinate to immediate value 5
mov $0x0c, %ah   #0ch interpeted as hexadecimal
int $0x10        #10h interpreted as hexadecimal 

但是,这不起作用,我真的不明白为什么。因此,我希望有人能指出我如何改变像素颜色的正确方向。

标签: assemblyx86-16biosattintel-syntax

解决方案


推荐阅读