x86 ассемблер - имя файла из системного времени - PullRequest
1 голос
/ 05 января 2012

Я хочу создать файл на ассемблере x86 с именем файла из системного времени.Я знаю, что для получения времени мне нужно использовать функцию 2 от прерывания 1Ah - она ​​возвращает время в регистрах.У меня проблема с созданием файла с содержимым этих регистров.Функция 3ch из прерывания 21h использует имя файла, которое хранится в регистре DX, но имя файла должно быть в ASCII.Как я могу преобразовать данные в ASCII?Или есть какой-то другой способ?Спасибо.

1 Ответ

2 голосов
/ 05 января 2012

Если вы читаете часы реального времени с помощью 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 на него уже был дан ответ: Проблема преобразования целого числа в код ASCII в сборке x86

...