You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

NASM汇编中int指令如何确定要使用的寄存器?

关于NASM中int指令如何确定使用寄存器的问题

这跟int指令前的指令顺序没关系,核心是中断服务程序的预先约定。

拿你用到的int 0x10来说,它是BIOS提供的视频服务中断,这类中断都有固定的调用规范:

  • 首先用AH寄存器指定具体要调用的子功能,比如你写的AH=0x0e就是"电传打字机式输出"的功能;
  • 而这个子功能明确要求把要输出的字符存在AL寄存器里。

每个中断(比如DOS的int 0x21、BIOS的int 0x13磁盘服务)的开发者,都会预先定义好这套寄存器使用规则——你调用中断时必须遵守这个约定,中断服务程序才会去对应的寄存器里读取参数。

举个反例:如果你把字符放到BX里,再执行int 0x10,服务程序根本不会去读取BX的值,自然不会输出任何内容。再比如int 0x21的AH=0x09子功能(输出字符串),要求用DS:DX指向字符串首地址,这时候就和AX完全无关了。

这些约定都记录在BIOS或DOS的功能调用手册里,写汇编时需要查这些文档来确定每个中断该用哪些寄存器传参。

内容的提问来源于stack exchange,提问作者Guffar07

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 22:04:53