我是一名学习汇编语言(NASM)的学生,我需要对中断“函数”或int如何知道要“运行”哪些寄存器进行一些澄清。我已经弄清楚了一个语句的含义。
打印
mov ah, 0x0e
mov al, "A"
int 0x10
打印
A
和 0x0e
以及 A
(0x41
) 组成了 ax
寄存器,就像 (0x0e, 0x41
),但是 int "function" 怎么知道 ax
寄存器应该 "运行" 而不是 bx
或者 cx
?是因为 ah
和 al
的语句在 int 0x10
之上吗?
al
和ah
作为参数。有文档列出了各种函数所期望的参数和返回值,以及它们的位置。 - undefinedint
本身只是通过一个表格进行的夸张的call
。它本身并不做任何事情,而是由调用的处理程序来完成。这默认是您的BIOS中的代码。您可以想象它看起来像cmp ah, 0x0e; je print_char
,然后print_char
查看al
。因此,寄存器的加载位置和方式并不重要,只要适当的值在其中即可。 - undefined