我想在x86汇编程序中创建一个文件,其中包含系统时间的文件名。 我知道为了得到时间我必须使用来自中断1Ah的函数2 - 它返回寄存器中的时间。我遇到的问题是创建一个包含此寄存器内容的文件。 来自中断21h的函数3ch使用存储在DX寄存器中的文件名,但文件名必须是ASCII。 如何将数据转换为ASCII?或者还有其他方式吗? 感谢。
答案 0 :(得分:2)
如果您使用int 1Ah fn 2读取实时时钟时间,您将从午夜开始以55毫秒的间隔获得时间,并且您将不得不自己进行所有必要的计算以计算小时,分钟和秒钟。这不是火箭科学,但如果可以,为什么不避免它呢?
幸运的是,你可以使用int 21h,fn 2C" DOS Get Time"它返回CH中的小时,CL中的分钟,DH中的秒数,甚至DL中的百分之一秒(悲惨的近似值)。 (好的,忽略DL。)那么,你要做的就是将这些数字转换成一个字符串,以便建立你的文件名。
现在,说文件名存储在DX寄存器中是不正确的。文件名必须存储在缓冲区中,DX寄存器在进入int 21h fn 3Ch时需要指向该缓冲区。
将数字转换为ASCII是一项棘手的工作,但幸运的是,它已经在SO上得到了回答:Problem converting integer to ASCII code in x86 assembly