GCC ASM 将 C 中的 AH 寄存器设置为 1h

GCC ASM set AH Register to 1h from C

有没有办法将这条线从 GCC 的 C 推送到 asm

    mov ah,1h
    int 21h

我找不到将 AH 寄存器设置为 1h 的方法

 asm("mov %ah,1h");
 asm("int 21h");

1h表示十六进制数中的1。您可以使用 [=14=]x1 来表示。 (GCC 汇编语言中的整数文字需要 $0x 将数字标记为十六进制)。

另请注意,在 GCC 汇编语言中,mov 指令(以及其他具有两个操作数的指令)的目标应该是第二个操作数。

asm("mov [=10=]x1, %ah");
asm("int [=10=]x21");

需要注意的是,如果在执行int的时候要保证%ah0x1,那么这两行要合二为一asm 声明不要让编译器在它们之间放置其他指令。

asm(
    "mov [=11=]x1, %ah\n\t"
    "int [=11=]x21"
);