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

Assembly 如何使用汇编中断向量1ah打印RTC,assembly,interrupt,Assembly,Interrupt,我需要输出一个中断。(RTC)。 但我不知道如何在控制台中打印RTC。我应该使用中断10h,还是有其他方法? 我已经试着在谷歌上找到了一些,我直接应用了中断10,如下所示 mov ah 0x02 int 0x1a 但它不起作用。我知道代码很差。 请给我一些帮助。如果你能给我举个例子,我将非常感激。看看int0x10,我们看到了许多函数。您没有指定要使用的,但让我们看看: “要写入的字符”是我们要显示的字符的值。因此,例如,如果您想写入字符“7”,您可以将其ascii值(55 aka 0x37)

我需要输出一个中断。(RTC)。 但我不知道如何在控制台中打印RTC。我应该使用中断10h,还是有其他方法? 我已经试着在谷歌上找到了一些,我直接应用了中断10,如下所示

mov ah 0x02
int 0x1a
但它不起作用。我知道代码很差。 请给我一些帮助。如果你能给我举个例子,我将非常感激。

看看
int0x10
,我们看到了许多函数。您没有指定要使用的,但让我们看看:

“要写入的字符”是我们要显示的字符的值。因此,例如,如果您想写入字符“7”,您可以将其ascii值(55 aka 0x37)放入
al
。只需将0x7放入
al
中,就会成为BEL的ascii字符(并且会使扬声器发出嘟嘟声)

那么,如果你想打印号码1234呢?你需要调用这个函数4次,每次49,50,51,52

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

是否有某种
printf(“%d”)
可以为我进行转换?不在BIOS中。BIOS功能设计为非常低的级别。这就是为什么会有操作系统、C运行库等,这样人们就不必写这些垃圾了


如果您不想自己编写这样一个函数,那么asm“库”中就有执行这类操作的例程集合。

如果我理解您的问题,那么归结起来就是您想打印数字?现在还不清楚您是想使用DOS服务进行输出(可以重定向),还是不在DOS下运行。哪一个是这样的?我在ubuntu中测试,并使用bochs。这是在制作引导加载程序时发生的问题。感谢您的回答,但我已经知道如何使用您解释的中断0x10。我想知道如何输出RTC。(int 1A)。嗯。。。我是否应该将RTC转换为字符串并打印出来?a)Int 10打印ascii字符和ascii字符串。b) RTC不返回ascii字符或ascii字符串。c) 如果目标是使用int 10打印从RTC返回的值,则需要进行转换。我不知道这一点,但中断1ah返回的究竟是什么?我发现此页面:“”,在该页面中,可能返回BCD类型。是吗?如果这是真的,那么如何将BCD转换成Ascii呢?这里有一个很好的INT1AH返回内容的描述。简而言之:上午9:04:12将被报告为CH=9、CL=4、DH=12。因此,如果要显示CH(9),必须将其转换为ascii“9”(57)。如果你只处理<10的数字,你可以简单地加48。但是如果秒是12,12+48是
@DavidWohlferd,那么
DH
将是
0x12
,BCD方式,而不是
0x0C
Expects: AH    0eH
         AL    character to write
         BL    (graphics modes only) foreground color number