• Sábado 9 de Noviembre de 2024, 03:31

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Mensajes - axlsmiu

Páginas: [1]
1
ASM (Ensamblador) / Re: entrada puerto paralelo problema
« en: Lunes 20 de Octubre de 2008, 21:34 »
bueno en lo que lei algo asi me temia
gracias por resolver mis dudas, a ver me pondre a ello en este momento

2
ASM (Ensamblador) / entrada puerto paralelo problema
« en: Lunes 20 de Octubre de 2008, 11:19 »
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
  1.         .MODEL  SMALL
  2.     .STACK  64h     ; reserva 100 bytes en la pila
  3.     .DATA           ; Segmento de datos (no hay datos)
  4.     .CODE
  5.  
  6. MAIN    PROC    FAR
  7.     MOV AX,  @Data      ; Inicializa segmento de datos
  8.     MOV DS, AX      ; Para que apunte a mi segmento "Data"
  9. ;comienzo bucle
  10. l1: mov dx,379h
  11.     in al,dx
  12.     and al,10h  ;el bit normalmente en 1
  13.     xor al,10h   ;el pulsador lo volveria 0
  14.     cmp al,10h  
  15.     je l2
  16.     jmp  sube
  17. l2: mov dx,379h
  18.     in al,dx
  19.     and al,20h
  20.                 xor al,20h
  21.     cmp ah,20h
  22.     je l1
  23.     jmp baja
  24.     mov bl,0h
  25. sube:   inc bl
  26.     mov dx,378h
  27.     mov al,bl    ;;
  28.     out dx,al
  29.     cmp bx,18h
  30.     je fin   ;si = a 18h finalizar
  31.     ;
  32.     jmp l1
  33. baja:   sub bl,1h        ;;
  34.     mov dx,378h
  35.     mov al,bl    ;;
  36.     out dx,al
  37.     jmp l1
  38. fin:
  39.  
  40.         MOV   AH,4CH
  41.         INT   21H
  42.  
  43.   MAIN  ENDP
  44.  
  45.  
  46.  
  47.  
  48.  
  49.  
  50. ;=====================================================================
  51. ;*************************Generacion del Retardo**********************
  52. ;=====================================================================
  53.  DELAY PROC NEAR           ; Retardo de 300msg
  54.         PUSH CX
  55.         MOV  CX,100
  56.   P1:   PUSH CX
  57.         MOV  CX,0FFFFH
  58.   P2:   LOOP P2
  59.         POP  CX
  60.         LOOP P1
  61.         POP  CX
  62.         RET
  63. ;
  64.   DELAY ENDP
  65.  
  66. ;---------------------------------------------------------------------
  67.         END  MAIN  
  68.  

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

Páginas: [1]