如何打印RTC使用汇编中断向量1ah

时间:2017-09-06 11:53:26

标签: assembly interrupt

我需要输出一个中断1h。 (RTC)。 但我不知道如何在控制台中打印RTC。我应该使用10h的中断,还是有另一种方式? 我已经尝试在google中找到一些,我直接应用了中断10,如下所示。

mov ah 0x02
int 0x1a

但它不起作用。我知道代码很差。 请给我一些帮助。如果你能为我做榜样,我真的很感激。

1 个答案:

答案 0 :(得分:2)

查看int 0x10的{​​{3}},我们看到了许多功能。您没有指定尝试使用的内容,但让我们看一下docs

Expects: AH    0eH
         AL    character to write
         BL    (graphics modes only) foreground color number

'要写的字符'是我们想要显示的字符的ah=0x0e值。因此,例如,如果你想写字符'7',你可以将它的ascii值(55 aka 0x37)放入al。只需将0x7放入al将成为BEL的ascii字符(并使发言者发出哔哔声)。

那么,如果你想打印1234号怎么办?好吧,你需要调用这个函数4次,分别是49,50,51,52。

我知道,你想知道是否有某种方法输出字符串?当然。例如,有ascii。但是,您仍然需要将1234转换为相应的ascii字符,然后调用BIOS函数输出您创建的字符串。

是否有某种printf("%d")为我做转换?不在BIOS中。 BIOS功能设计得非常低。这是(部分)为什么有操作系统,C运行时库等,以便人们不必编写所有这些垃圾。

如果你不想自己编写这样的函数,那里有asm'库',它们有一系列用于执行此类事物的例程。