Programación General > ASM (Ensamblador)
entrada puerto paralelo problema
(1/1)
axlsmiu:
buenas luego de algunos intentos aun no he dado con la solucion para este trabajo que me dejaron
el programa consiste en sensar 1 bit en el puerto 379 el cual haria que el numero(inicialmente cero )se incremente y lo muestre por el puerto 378
y otro bit que haria que este numero disminuya en 1 y luego se muestre
el findel programa llegaria cuando el numero llege a 25(base 10)
hasta ahora esto es lo que tengo :
--- Código: Text --- .MODEL SMALL .STACK 64h ; reserva 100 bytes en la pila .DATA ; Segmento de datos (no hay datos) .CODE MAIN PROC FAR MOV AX, @Data ; Inicializa segmento de datos MOV DS, AX ; Para que apunte a mi segmento "Data";comienzo buclel1: mov dx,379h in al,dx and al,10h ;el bit normalmente en 1 xor al,10h ;el pulsador lo volveria 0 cmp al,10h je l2 jmp subel2: mov dx,379h in al,dx and al,20h xor al,20h cmp ah,20h je l1 jmp baja mov bl,0hsube: inc bl mov dx,378h mov al,bl ;; out dx,al cmp bx,18h je fin ;si = a 18h finalizar ; jmp l1baja: sub bl,1h ;; mov dx,378h mov al,bl ;; out dx,al jmp l1fin: MOV AH,4CH INT 21H MAIN ENDP ;=====================================================================;*************************Generacion del Retardo**********************;===================================================================== DELAY PROC NEAR ; Retardo de 300msg PUSH CX MOV CX,100 P1: PUSH CX MOV CX,0FFFFH P2: LOOP P2 POP CX LOOP P1 POP CX RET; DELAY ENDP ;--------------------------------------------------------------------- END MAIN
mi metodo era aprovechar un bucle infinito para leer 2 bits independientemente y que este se rompa cuando detecte que 1 ha sido cambiado, direccionando a la parte correspondiente (si sube o baja)
Lo malo es que parece que la instruccion je (cercana) no es efectiva si se usa para direccionar a partes relativamente lejanas del programam , o quiza este no sea el caso
bueno eso es todo... si alguien me puede ayudar a terminar esto se lo agradeceria mucho
m0skit0:
La instrucción JMP (y sus variantes) a secas no te vale si quieres saltar más de un desplazamiento de 8 bits (desplazamiento menor que -128 y mayor que 127). Si con 16 bits te vale, usa JE NEAR, si aún así es demasiado corto para el salto, vas a tener que ir pensando en usar CALL.
axlsmiu:
bueno en lo que lei algo asi me temia
gracias por resolver mis dudas, a ver me pondre a ello en este momento
Navegación
Ir a la versión completa