如何使用汇编中断向量 1ah 打印 RTC
how to print RTC use Assembly interrupt vector 1ah
我需要输出中断1h。 (RTC)。
但我不知道如何在控制台中打印 RTC。我应该使用中断 10h,还是有其他方法?
我已经尝试在 google 中找到一些,并且我如下直接应用了中断 10。
mov ah 0x02
int 0x1a
但它不起作用。我知道代码很差。
请给我一些帮助。如果你能为我做个例子,我将不胜感激。
正在查看docs for int 0x10
, we see a number of functions. You didn't specify which you tried to use, but let's look at ah=0x0e:
Expects: AH 0eH
AL character to write
BL (graphics modes only) foreground color number
其中'character to write'就是我们要显示的字符的ascii值。因此,例如,如果你想写字符“7”,你可以将它的 ascii 值(55 又名 0x37)放入 al
。将 0x7 放入 al
将是 BEL 的 ascii 字符(并且会使扬声器发出哔哔声)。
那么,如果要打印数字 1234 怎么办?那么,您需要调用此函数 4 次,每次调用 49、50、51、52。
我知道,您想知道是否有某种方法可以输出字符串?当然。例如有INT 0x10, ax=0x1300。但是,您仍然需要将 1234 转换为适当的 ascii 字符,然后调用 BIOS 函数输出您创建的字符串。
难道没有某种 printf("%d")
可以为我进行这种转换吗?不在BIOS中。 BIOS 功能被设计为非常低的级别。这就是(部分)为什么会有操作系统、C 运行时库等,这样人们就不必编写所有这些垃圾。
如果您不想自己编写这样的函数,可以使用 asm 'libraries' 来执行此类操作的例程集合。
我需要输出中断1h。 (RTC)。 但我不知道如何在控制台中打印 RTC。我应该使用中断 10h,还是有其他方法? 我已经尝试在 google 中找到一些,并且我如下直接应用了中断 10。
mov ah 0x02
int 0x1a
但它不起作用。我知道代码很差。 请给我一些帮助。如果你能为我做个例子,我将不胜感激。
正在查看docs for int 0x10
, we see a number of functions. You didn't specify which you tried to use, but let's look at ah=0x0e:
Expects: AH 0eH
AL character to write
BL (graphics modes only) foreground color number
其中'character to write'就是我们要显示的字符的ascii值。因此,例如,如果你想写字符“7”,你可以将它的 ascii 值(55 又名 0x37)放入 al
。将 0x7 放入 al
将是 BEL 的 ascii 字符(并且会使扬声器发出哔哔声)。
那么,如果要打印数字 1234 怎么办?那么,您需要调用此函数 4 次,每次调用 49、50、51、52。
我知道,您想知道是否有某种方法可以输出字符串?当然。例如有INT 0x10, ax=0x1300。但是,您仍然需要将 1234 转换为适当的 ascii 字符,然后调用 BIOS 函数输出您创建的字符串。
难道没有某种 printf("%d")
可以为我进行这种转换吗?不在BIOS中。 BIOS 功能被设计为非常低的级别。这就是(部分)为什么会有操作系统、C 运行时库等,这样人们就不必编写所有这些垃圾。
如果您不想自己编写这样的函数,可以使用 asm 'libraries' 来执行此类操作的例程集合。