2012-01-05 24 views
1

我想在x86彙編程序中創建一個文件,並使用系統時間的文件名。 我知道爲了獲得時間,我必須使用中斷1Ah中的函數2 - 它返回寄存器中的時間。我遇到的問題是用這個寄存器的內容創建一個文件。 函數中斷21h的3ch使用文件名,存儲在DX寄存器中,但文件名必須爲ASCII。 如何將數據轉換爲ASCII?或者有其他方法嗎? 謝謝。x86彙編程序 - 系統時間的文件名

回答

2

如果您用int 1Ah fn 2讀取實時時鐘時間,您將從午夜開始以55毫秒的間隔得到時間,並且您將不得不自己完成所有必要的計算以計算小時數,分鐘和秒鐘。這不是火箭科學,但如果可以的話,爲什麼不避免呢?

幸運的是,您可以使用int 21h,fn 2C「DOS獲取時間」,它返回CH中的小時,CL中的分鐘,DH中的秒數,甚​​至DL中百分之一秒的可悲近似值。 (好吧,忽略DL)。那麼,你所要做的就是把這些數字轉換成一個字符串,以便建立你的文件名。

現在,說文件名存儲在DX寄存器中是不正確的;文件名將被存儲在緩衝區中,並且在進入int 21h fn 3Ch時,DX寄存器將需要指向該緩衝區。

將一個數字轉換爲ASCII是棘手的業務,但幸運的是,它已經在SO上回答:Problem converting integer to ASCII code in x86 assembly