Para MS-DOS con la interrupcion 21h:
COM1:
mov ah, 3 ;seleccionamos el servicio 3
int 21h ;lee y devuelve un byte en al
mov ah, 4 ;seleccionamos el servicio 4
mov dl, 41 ; caracter al enviar (65=A)
int 21h ;envia dl
Hora:
mov ah, 2Ch ; selecciona el servicio 2C
int 21h ; devuelve horas (CH), minutos (CL), segundos (DH) y centesimos (DL)
Si es para MS-DOS este link te va a servir:
http://www.ctyme.com/rbrown.htm
Para Windows:
GetTickCount() para obtener el tiempo que paso desde que arranco la PC
CreateFile(), ReadFile(), CloseHandle() para el manejo del puerto