¡Hola!. Este programa utiliza la INT 17h de la BIOS para imprimir en LPT, tambien se puede adaptar facilmente para que funcione con la funcion de impresion de ms-dos:
ORG 100h ;Hacer un programa .COM
jmp inicio_cod ;Saltamos al inicio del programa
mensaje DB "¡Hola impresora!",0Dh,0Ah ;0Dh y 0Ah significa avanzar a la siguiente linea
DB "****************",0Dh,0Ah
DB "Ten un buen dia imprimiendo :-)",0Dh,0Ah,0Ch,0 ;0Ch significa que expulsemos la pagina y 0 es el final de la cadena
mensag DB "Presiona una tecla para imprimir...",0Dh,0Ah,'$'
inicio_cod:
mov ah,09h ;Funcion de mostrar texto en pantalla
lea dx,mensag ;Ponemos el mensaje en dx
int 21h ;Mostramos texto
xor ax,ax ;Esperamos a una tecla
int 16h ;Teclado
xor dx,dx ;En DX va el numero del puerto LPT (00 para LPT1 01 Para LPT2 etc...)
lea si,mensaje ;Cargamos el mensaje a imprimir en SI
call imprimir_impresora ;Llamamos a la funcion de impresion
int 20h ;Salimos a MS-DOS
imprimir_impresora PROC near
pusha ;Guardamos todos los registros
mov ah,01h ;Funcion de inicializar impresora (DX no se cambia)
int 17h
bucle:
lodsb ;Cargamos la etiqueta en si
or al,al;¿Llegamos al final?
je term ;Si llegamos al final entonces terminamos
mov ah,00h ;Funcion de escribir en impresora (AL tiene el caracter a imprimir)
int 17h ;¡IMPRIMIMOS!
loop bucle ;Hacemos un bucle de impresion hasta que no acabe la cadena de texto
term:
popa ;Liberamos todo
ret ;Volvemos de la funcion
imprimir_impresora ENDP
Puedes usar el programa DOS2USB para imprimir en windows xp con una impresora usb, eso si, el programa ms-dos que baya a utilizar ese programa debera utilizar la funcion de impresion de MS-DOS para que el programa funcione, si utilizas la int 17h ese programa no funcionara, pero si es para ms-dos puro con este programa tal cual te sirve.