Учебник по ассемблеру (ASM)
 

Ассемблер в примерах - Работа с датами в FASM

Вопрос:
Каким образом в FASMе
1) получить Текущую дату на компьютере.
2) получить разность дат Текущей и на начало года
программа под Windows
Код

mov ah,2Ah
int 21h
Не работает
Есть в Kernel32.dll функция CurrentDateTimeString но она без точки входа
Ответ:
1) Есть функция GetLocalTime(LPSYSTEMTIME lpSystemTime) (в терминах С)
Параметром у нее адрес вот такой структуры (опять же, в терминах С):
typedef struct _SYSTEMTIME {
    WORD wYear; //год    
	WORD wMonth; //месяц (с 1)    
	WORD wDayOfWeek; //день недели (воскресенье 0)    
	WORD wDay; //день месяца    
	WORD wHour; //часы    
	WORD wMinute; //минуты    
	WORD wSecond; //секунды    
	WORD wMilliseconds; //милисекунды
} SYSTEMTIME;
int 21h можно было еще использовать только с 16-битными windows 3.1 :)
Для 32- и более - только через вызовы функций
2) Стандартной функции такой нет, но несложно написать самому:
Складываем число дней по месяцам до текущего, вот и будет разность дат
Не забываем про високосные года!

   Вперёд
   Содержание