我需要输出一个中断1h。 (RTC)。 但我不知道如何在控制台中打印RTC。我应该使用10h的中断,还是有另一种方式? 我已经尝试在google中找到一些,我直接应用了中断10,如下所示。
mov ah 0x02
int 0x1a
但它不起作用。我知道代码很差。 请给我一些帮助。如果你能为我做榜样,我真的很感激。
答案 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'库',它们有一系列用于执行此类事物的例程。