【发布时间】:2012-02-12 05:10:56
【问题描述】:
如何将此汇编代码编写为内联汇编?编译器:gcc(i586-elf-gcc)。 GAS 语法让我感到困惑。 请告诉我如何将其编写为适用于 gcc 的内联程序集。
.set_video_mode:
mov ah,00h
mov al,13h
int 10h
.init_mouse:
mov ax,0
int 33h
我在汇编中也有类似的。我将它们单独编写为汇编例程,以便从我的 C 程序中调用它们。我需要从 C 本身调用这些以及更多的中断。
我还需要根据我正在调用的中断例程将一些值放入一些寄存器中。请告诉我该怎么做。
我想做的就是从 C 调用中断例程。我什至可以使用 int86() 但我没有该函数的源代码。 我想要 int86() 以便我可以从 C 调用中断。
我正在开发自己的微型操作系统,因此我在调用中断或任何直接硬件访问方面没有任何限制。
【问题讨论】:
-
erm... 除非您使用 gcc 以 ELF 格式编译内核(那时您仍然需要引导加载程序),否则这不会成功,因为任何授予直接访问 BIOS 中断的操作系统(例如 MSDOS)将无法运行您的二进制文件
-
所以这基本上是一个语法问题?
-
我看到另一个问题:你希望你的代码以实模式(16 位)执行,其中 gcc 和 gas 将生成 32 位代码
标签: gcc assembly operating-system dos interrupt