Advertisement
Guest User

Untitled

a guest
Jun 25th, 2017
51
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. .model small
  2.  
  3. .stack 256
  4.  
  5. .data
  6. DADOS EQU 0300H
  7. ACK EQU 0301H
  8. STB EQU 0302H
  9. CONTROLE EQU 0303H
  10.  
  11. VAR db ?
  12. fnome db 'C:\keyboard.txt',0
  13. fhandle dw ?
  14. CTRL_LER_BUFFER db 00001010b
  15. CTRL_ESC_ACK db 00001101b
  16.  
  17.  
  18. .code
  19.  
  20. criar_abrir_arquivo proc near
  21.     mov dx, offset fnome
  22.     mov al,0
  23.     mov ah, 3ch
  24.     int 21h ;criar arquivo
  25.     mov fhandle, ax
  26.    
  27.     mov dx, offset fnome
  28.     mov al,2
  29.     mov ah, 3dh
  30.     int 21h; abrir arquivo
  31.     mov fhandle, ax
  32.    
  33.     ret
  34. criar_abrir_arquivo endp
  35.  
  36. fechar_arquivo proc near
  37.     mov ah, 3eh
  38.     mov bx, fhandle
  39.     int 21h
  40.     ret
  41. fechar_arquivo endp
  42.  
  43. ler_buffer proc near
  44.     pega_dados:
  45.     mov dx, STB
  46.     in al, dx ; verifica se há dados no buffer, ou seja, se o STB está setado
  47.     mov ah, 0 ; pra comparar com o al
  48.     cmp ah, al ;se nao houver dados, cmp vai ser 1
  49.     je pega_dados ;fica nesse laco ate STB ser ativado
  50.  
  51. ;ESCREVE NO ACK
  52.  
  53.     mov dx, CONTROLE
  54.     mov al, CTRL_ESC_ACK
  55.     out dx, al ;ativa escrita no ack
  56.    
  57.     mov al, 1
  58.     mov dx, ACK
  59.     out dx, al ; seta o ACK
  60.    
  61. ;LER DADOS:
  62.     mov dx, CONTROLE
  63.     mov al, CTRL_LER_BUFFER
  64.     out dx, al ; envia os sinais correspondentes para ler o dado do buffer
  65.    
  66.     mov dx, DADOS
  67.     in al, dx ; recebe o byte em al
  68.     mov [VAR], al ; poe o byte na variavel
  69.  
  70. ;RESETAR ACK
  71.     mov dx, ACK
  72.     mov al,0
  73.     out dx, al
  74.    
  75.     ret
  76. ler_buffer endp
  77.  
  78. imprime_tela proc near
  79.     mov dl, [VAR]
  80.     mov ah, 02h
  81.     int 21h
  82.     ret
  83.     ret
  84. imprime_tela endp
  85.  
  86. escreve_arquivo proc near
  87.     mov bx, fhandle
  88.     mov cx, 1
  89.     mov dx, offset VAR
  90.     mov ah, 40h
  91.     int 21h
  92.     ret
  93. escreve_arquivo endp
  94.  
  95. main:
  96. mov ax, @data
  97. mov ds, ax
  98. call criar_abrir_arquivo
  99.  
  100. laco:
  101. call ler_buffer
  102. call imprime_tela
  103. call escreve_arquivo
  104. jmp laco
  105.  
  106. call fechar_arquivo
  107.  
  108. mov ah, 4ch
  109. int 21h
  110. end main
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement