Do pobierania daty służy funkcja 2Ah, a nie 1h (czytaj klawisz). http://bogdro.evai.pl/dos/dos_int.htm
Wstawka asemblerowa pozwala zadeklarować użycie odpowiednich rejestrów bez potrzeby wpisywania instrukcji przypisania w kodzie asm.
struct date
{ unsigned year, month, day;
};
struct date
get_date( void
){ // ...
asm(
"\n" "int %2"
: "=c" (year), "=d" ( month_day )
: "i" (0x21), "a" (0x2a00)
);
// ...
}
Polecam zainstalować system DOS w maszynie wirtualnej i kompilator DJGPP z tej strony: http://www.delorie.com/djgpp/zip-picker.html, o ile jeszcze nie masz.
Natomiast co do tematu: w twoim przykładzie wyświetlasz datę w C, natomiast usiłujesz pobrać ją we wstawce asemblerowej.