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
的时候要保证%ah
是0x1
,那么这两行要合二为一asm
声明不要让编译器在它们之间放置其他指令。
asm(
"mov [=11=]x1, %ah\n\t"
"int [=11=]x21"
);
有没有办法将这条线从 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
的时候要保证%ah
是0x1
,那么这两行要合二为一asm
声明不要让编译器在它们之间放置其他指令。
asm(
"mov [=11=]x1, %ah\n\t"
"int [=11=]x21"
);