有没有办法将这一行从 GCC 的 C 推送到 asm
mov ah,1h
int 21h
我找不到将 AH 寄存器设置为 1h 的方法
asm("mov %ah,1h");
asm("int 21h");
最佳答案
1h
表示十六进制数中的 1
。您可以使用 $0x1
来表达。 (GCC 汇编语言中的整数文字需要 $
,而 0x
将数字标记为十六进制)。
另请注意,在 GCC 汇编语言中,mov
指令(以及其他具有两个操作数的指令)的目标应该是第二个操作数。
asm("mov $0x1, %ah");
asm("int $0x21");
还有一点需要注意的是,如果您想在执行 int
时确保 %ah
为 0x1
,这两行应该放入一个 asm
语句中,不要让编译器在它们之间放置其他指令。
asm(
"mov $0x1, %ah\n\t"
"int $0x21"
);
关于c - GCC ASM 将 AH 寄存器从 C 设置为 1h,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65545954/