c - GCC ASM 从 C 将 AH 寄存器设置为 1h
问题描述
有没有办法把这条线从 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");
还有一点需要注意的是,如果你想确保%ah
是0x1
在int
执行时,这两行应该放在一个asm
语句中,不要让编译器在它们之间放置其他指令。
asm(
"mov $0x1, %ah\n\t"
"int $0x21"
);
推荐阅读
- c# - 授权不使用 azure SQL 的角色
- typescript - 从 Partial 类型中排除空对象
- mysql - 数据库 [mysql2] 未配置,laravel >5
- c# - 对象没有出现在 Hololens 中 Vuforia 标记的顶部/中心,如何解决?
- postgresql - Postgres pg_catalog 常量查找的策略
- javascript - 身体背景模糊功能无法普遍运作
- .net - 将 AllowAnonymousAttribute 与 Swashbuckle 一起使用
- html - 使用 rvest 抓取 - 无法识别 html 节点
- python - 对遗留的 Python 应用程序进行 docker 化
- regex - 正则表达式,路径的特定单词除外