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

[0] Índice de Mensajes

Ir a la versión completa