hoye bro el xp moles mucho con los puertos io hace poco tube que hacer un circuito que reciviera y enviara datos por el puerto paralelo....fue muy canson pero menos mal aqui me ayudaron y con un paquetico llamado useport.zip logra quitarme el problemita y mi circuito quedo de perlas chacte esto:
http://mundobyte.wordpress.com/2007/12/22/puerto-paralelo-parte-ii/
Vale el dato!
Lo voy a probar y te cuento como me va, ...aproposito, existira un driver para el puerto 60h/64h del teclado, con el que pueda programar el micro de estos, desde esto, llamado XP?, es que en mis antiguos pc con DOS, 95 u 98, podia manejas hasta las luces de teclado, y ahora no pasa nada!
Un comentario general,
"Recordar que la Int son "rutina" asm, con uso de registros, que no siempre esta a la vista, esto a la hora de dejar datos utiles de nuestra rutina en ellos o los punteros de segmentos adecuados, que se deben considerar, al entrar y salir de una de ellas."
Por ejemplo en codigo modificado de "Hello World", el DS es igual a CS, de ese modo los datos se tomaran desde ese segmento, DS
X, si se modifico antes DS, los datos seran otros, esto se explica en ese mismo codigo en la lineas de:
mov ax, 0b800h
mov ds, ax
para poder manipular las direcciones de pantalla, se cambia DS, que se asocia a DI, no explicitamente, pero si por defecto.
** Buscar modos de direccionamiento **
Por mi parte me parece que le des a las Int mas utiles, y apartir de alli se podra ir comprementando con mas informacion.
Yo quisiera ir compartiendo codigo, estoi desarrollando unas rutinas de uso general, que me permitiran recuperar algunos conceptos y que pueden quedar como demos, este es el primero.
Código:
[LEFT] name "Colore10"
; Colorea la pantalla pixel a pixel
; Utilizando Int 10h
org 100h
mov ax, 0013h ;Modo video grafico 320x200 pixels
int 10h ;Activa modo de video
jmp j1 ;Inicia numero de linea
c2: mov dx, posy ;Carga numero de linea
mov al, color ;Carga color de Pixel
mov cx, 319 ;Carga numero de columna maxima
c1: mov ah, 0ch ;modo un pixel
int 10h ;Activa pixel
dec cx ;Decrementa columna
jns c1 ;Si >0 salta
mov ah,6 ;Entrada/Salida directa a teclado
mov dl,255 ;Habilitado como entrada
int 21h ;Lee teclado
jnz j2 ;Controla presion de tecla
dec posy ;Decrementa linea
jns c2 ;Si >0 salta
inc color ;Cambia color
j1: mov posy, 199 ;Reinicia linea
jmp c2 ;Proxima pantalla
j2: mov ax,0003h ;Modo texto normal
int 10h ;Activa modo
ret ;Termina y cierra rutina
posy dw 0 ;Guarda posicion vertical, linea
color db 15 ;Guarda Color
end
[/LEFT]
Instrucciones :
mov => copia segundo argumento a primer argumento
Int 10 => Modo de video grafico
jmp => Salta a la etiqueta indicada
dec => Decrementa contenido de argumento
jns => Salta si SF = 0
int 21 => ???
jnz => Salta si ZF = 0
dec => Incrementa contenido de argumento
ret => Sale de la rutina actual
Eso, la idea es encontrar optimizaciones, luego subo la version 1.5
Compilen y corran el .com
Saludos
KZK