Advertisement
Guest User

Untitled

a guest
Jun 25th, 2017
56
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.     ret
  71. ler_buffer endp
  72.  
  73. imprime_tela proc near
  74.     mov dl, [VAR]
  75.     mov ah, 02h
  76.     int 21h
  77.     ret
  78.     ret
  79. imprime_tela endp
  80.  
  81. escreve_arquivo proc near
  82.     mov bx, fhandle
  83.     mov cx, 1
  84.     mov dx, offset VAR
  85.     mov ah, 40h
  86.     int 21h
  87.     ret
  88. escreve_arquivo endp
  89.  
  90. main:
  91. mov ax, @data
  92. mov ds, ax
  93. call criar_abrir_arquivo
  94.  
  95. laco:
  96. call ler_buffer
  97. call imprime_tela
  98. call escreve_arquivo
  99. jmp laco
  100.  
  101. call fechar_arquivo
  102.  
  103. mov ah, 4ch
  104. int 21h
  105. end main
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement