Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 我正在使用DOS,我正在尝试使背景为白色_C_Assembly_Dos - Fatal编程技术网

C 我正在使用DOS,我正在尝试使背景为白色

C 我正在使用DOS,我正在尝试使背景为白色,c,assembly,dos,C,Assembly,Dos,当我在DOS上写的时候 tcc filename.c filename.exe 什么也没发生 #include <stdio.h> #include <dos.h> #include <stdlib.h> void StartVidScreen (void){ //320x200 } asm{ 在这里,我试图使背景白色,但它不工作 mov ah,0ffh mov al,' ' int 10

当我在DOS上写的时候

tcc filename.c filename.exe
什么也没发生

#include <stdio.h>
#include <dos.h>
#include <stdlib.h>

void StartVidScreen (void){ //320x200
    }

    asm{
在这里,我试图使背景白色,但它不工作

        mov ah,0ffh
        mov al,' '
        int 10h
    }

void main(void)
 {
    StartVidScreen(); // Start Video Screen
}

由于我们处于VGA模式13h,我将使用以下int 10h调用:

:设置其中一个DAC(数模转换器)寄存器的RGB(红、绿、蓝)值

投入

  • AX=1010h
  • BX=DAC寄存器编号(0-255),在我们的例子中为寄存器0
  • DH=红色值(0-63)
  • CH=绿色值(0-63)
  • CL=蓝色值(0-63)
所以要设置背景

mov ax,1010h
mov bx,0
mov dh,03fh
mov ch,03fh
mov cl,03fh
int 10h

在真正的老式硬件上测试,效果良好。

由于我们处于VGA模式13h,我将使用以下int 10h调用:

:设置其中一个DAC(数模转换器)寄存器的RGB(红、绿、蓝)值

投入

  • AX=1010h
  • BX=DAC寄存器编号(0-255),在我们的例子中为寄存器0
  • DH=红色值(0-63)
  • CH=绿色值(0-63)
  • CL=蓝色值(0-63)
所以要设置背景

mov ax,1010h
mov bx,0
mov dh,03fh
mov ch,03fh
mov cl,03fh
int 10h

在真正的老式硬件上测试,工作正常。

AFAIK没有BIOS中断
10h
功能
0FFh
。一个
空格
参数怎么能这样做呢?我正试图把背景变成白色,不管屏幕是320x200还是640x480,不管它是白色还是11111111b,我对中断这件事很陌生,所以任何人都可以帮助p???@sharbel在320x200 256色
0xFF
中不是“白色”。其实里面是黑色的。在默认DOS调色板中,白色是
15
31
。但是,
int10h
调用看起来无论如何都是无效的,因此它甚至不会将屏幕设置为
FF
。但我对问题的第一部分更困惑。什么是“什么都没发生”,你能展示一下终端窗口的外观吗?使用
DIR
检查当前目录中的文件。DESQView/TopView是一种窗口环境,它比Microsoft进入该领域的时间稍早一些,您可能听说过,也可能没有听说过。所以不是模拟器或图形卡。很可能在没有安装此软件的PC上它什么也做不了,更可能的是模拟器不费心实现对它的支持。在调试此类问题时,与其使用白色对白色的空格,不如使用更有趣的内容:
mov ah,012h mov al,“x”
AFAIK没有BIOS中断
10h
功能
0FFh
。一个
空格
参数怎么能这样做呢?我正试图把背景变成白色,不管屏幕是320x200还是640x480,不管它是白色还是11111111b,我对中断这件事很陌生,所以任何人都可以帮助p???@sharbel在320x200 256色
0xFF
中不是“白色”。其实里面是黑色的。在默认DOS调色板中,白色是
15
31
。但是,
int10h
调用看起来无论如何都是无效的,因此它甚至不会将屏幕设置为
FF
。但我对问题的第一部分更困惑。什么是“什么都没发生”,你能展示一下终端窗口的外观吗?使用
DIR
检查当前目录中的文件。DESQView/TopView是一种窗口环境,它比Microsoft进入该领域的时间稍早一些,您可能听说过,也可能没有听说过。所以不是模拟器或图形卡。很可能在没有安装此软件的PC上它什么也做不了,更可能的是模拟器不费心实现对它的支持。在调试此类问题时,与其使用白色的空格,不如使用更有趣的内容:
mov-ah,012h-mov-al,'x'