通过 dos.h (turbo c++) 获取像素颜色
Get pixel color via dos.h (turbo c++)
我目前正在做一个项目,需要我在没有 graphics.h 的情况下在屏幕上绘制东西,我正在使用 DOSBOX (turbo c++)。
以下函数通过中断 (dos.h) 在屏幕的 x,y 中放置颜色为 "color"(1-256) 的像素:
void PutPixel(int x, int y, int color) {
_AH = 0x0C;
_AL = color;
_CX = x;
_DX = y;
_BX = 0x01;
geninterrupt (0x10);
}
returns x,y 中像素颜色的函数代码是什么?我想象的是这样的:
type getPixel(int x, int y){
//code
return color;
}
此外,有人可以解释一下 PutPixel 的工作原理吗?我知道它会修改寄存器,但我不知道每个值的含义(除了基于上下文的 _CX、_DX、_AL)。
我猜getPixel()
可以这样实现:
int getPixel(int x, int y)
{
_AH = 0x0D;
_CX = x;
_DX = y;
_BX = 0x01;
geninterrupt (0x10);
return _AL;
}
这些东西通过调用存储在计算机 BIOS 中的代码(中断处理程序)来工作。
您可以在 Wikipedia
中阅读更多相关信息
我目前正在做一个项目,需要我在没有 graphics.h 的情况下在屏幕上绘制东西,我正在使用 DOSBOX (turbo c++)。
以下函数通过中断 (dos.h) 在屏幕的 x,y 中放置颜色为 "color"(1-256) 的像素:
void PutPixel(int x, int y, int color) {
_AH = 0x0C;
_AL = color;
_CX = x;
_DX = y;
_BX = 0x01;
geninterrupt (0x10);
}
returns x,y 中像素颜色的函数代码是什么?我想象的是这样的:
type getPixel(int x, int y){
//code
return color;
}
此外,有人可以解释一下 PutPixel 的工作原理吗?我知道它会修改寄存器,但我不知道每个值的含义(除了基于上下文的 _CX、_DX、_AL)。
我猜getPixel()
可以这样实现:
int getPixel(int x, int y)
{
_AH = 0x0D;
_CX = x;
_DX = y;
_BX = 0x01;
geninterrupt (0x10);
return _AL;
}
这些东西通过调用存储在计算机 BIOS 中的代码(中断处理程序)来工作。
您可以在 Wikipedia
中阅读更多相关信息