Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/72.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中使用BIOS显示数据_C_Assembly_Printing_Interrupt_Bios - Fatal编程技术网

在C中使用BIOS显示数据

在C中使用BIOS显示数据,c,assembly,printing,interrupt,bios,C,Assembly,Printing,Interrupt,Bios,有没有办法在c中使用bios打印数据。我知道在汇编中可以使用int0x10,但是C是否有任何等价物?这取决于操作系统是否已经运行。 如果是,则取决于正在运行的操作系统。但通常,如果使用C,则应提供C stdlib。因此,请使用printf()和/或stdout 如果没有可用的操作系统,则取决于CPU模式 如果CPU以实模式运行,则使用10h BIOS中断。 即使在C语言中也可以这样做。大多数C编译器允许内联汇编。 例如,对于GCC,使用_asm关键字 如果您处于32位保护模式,则需要手动管理视频

有没有办法在c中使用bios打印数据。我知道在汇编中可以使用
int0x10
,但是C是否有任何等价物?

这取决于操作系统是否已经运行。
如果是,则取决于正在运行的操作系统。但通常,如果使用C,则应提供C stdlib。因此,请使用printf()和/或stdout

如果没有可用的操作系统,则取决于CPU模式

如果CPU以实模式运行,则使用10h BIOS中断。
即使在C语言中也可以这样做。大多数C编译器允许内联汇编。
例如,对于GCC,使用_asm关键字

如果您处于32位保护模式,则需要手动管理视频,因为BIOS中断不再可用

在这种情况下,打印数据只是写入包含视频缓冲区的内存区域。您需要知道您处于哪种视频模式,以便以正确的格式写入数据,以及内存缓冲区的内存地址。

在这种情况下,只需声明一个指向内存区域的char指针,并写入字符…

您的意思是“使用BIOS在C中显示数据”吗?在汇编操作系统时,您可以使用
int 0x10
使用BIOS显示数据。有没有一种方法可以在C中实现同样的功能?好的,你也可以切换回实模式,调用BIOS中断,然后切换回保护模式。但这有点农业化。«农业»我第一次听到它,但考虑到上下文,我喜欢它!:)