Advertisement
Guest User

Untitled

a guest
Jun 9th, 2018
174
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. ;GUARDAR GRELHA EM FICHEIRO
  2. ;RECEBE COMO PARAMETRO
  3. ;PONTEIRO NOME DO FICHEIRO (REGISTO DX)
  4. GUARDAR_GRELHA  PROC
  5.     PUSHF
  6.     PUSH    AX
  7.     PUSH    CX
  8.     PUSH    DI
  9.     PUSH    SI
  10.    
  11.     ABRIR_FICHEIRO_GRELHA:
  12.         MOV     AH, 3CH     ;ABRIR FICHEIRO PARA ESCRITA
  13.         MOV     CX, 00h     ;TIPO DE FICHEIRO (NORMAL)
  14.         INT     21h         ;ABRE EFETIVAMENTE O FICHEIRO(AX DICA COM O HANDLE)
  15.        
  16.         ;INTEROPÇAO DEVOLVE ESTES VALORES
  17.         ;TEMOS QUE GUARDAR NUMA VARIAVEL PARA DEPOIS
  18.         ;NA ESCRITA SER UTILZADO
  19.         MOV     HandleFich,AX
  20.  
  21.         jnc     ESCREVE_GRELHA      ;SE TUDO CORRER BEM COMEÇA O PROCESO DE ESCRITA
  22.  
  23.         MOV     AH, 09h
  24.         LEA     DX, msgErrorCreate
  25.         int     21H
  26.  
  27.         jmp     FIM
  28.  
  29.     ;VAMOS LER LINHA A LINHA E GUARDAMOS ESSES VALORES NUM ARRAY TEMP
  30.     ESCREVE_GRELHA:
  31.        
  32.         XOR     DX, DX
  33.         MOV     DH, 8       ;ORIGEM
  34.         MOV     DL, 30      ;ORIGEM
  35.        
  36.         PERCORRER_LINHA:
  37.             CMP     DH, 14
  38.             JGE     END_PERCORRER_LINHA
  39.             MOV     DL, 30
  40.  
  41.             MOVER_BX    DL, DH  ;pos x, pos y
  42.  
  43.             XOR     SI, SI
  44.             LEA     SI,  TEMP_LINHA ;SI = &TEMP_LINHA
  45.  
  46.             PERCORRER_COLUNA:
  47.                 CMP     DL, 48
  48.                 JGE     END_PERCORRER_COLUNA   
  49.  
  50.                 ;APENAS SAO GUARDAS AS CORES SEM OS CARACTERES
  51.                 ;TENTAMOs USAR A INSTRUÇAO LES MAS SEM SUCESSO
  52.                 MOV     CL, BYTE PTR ES:[BX+ 1]
  53.  
  54.                 MOV     [SI],  CL; si->tmp_linha = cor
  55.  
  56.                 ADD     BX, 2; POSICAO ASSEGUI NA NOSSA GRELHA
  57.                 ADD     SI, 1; POSSICAO ASSEGUIR NO ARRAY TEMP
  58.  
  59.                 INC     DL
  60.                 JMP     PERCORRER_COLUNA
  61.             END_PERCORRER_COLUNA:  
  62.  
  63.             ;SALVAGUARDAR VALORES DAS POSX E Y
  64.             PUSH        DX
  65.            
  66.             LEA     DX, TEMP_LINHA
  67.             ; DX FICA A APONTAR PARA O ARRAY ONDE FICARAM AS CORES
  68.  
  69.             ;_____________ESCREVER_FICHEIRO______________
  70.            
  71.             ;restaurar o valor handle de quando foi aberto o ficheiro
  72.             MOV     BX, HandleFich
  73.             MOV     AH, 40H        
  74.             MOV     CX, 20          ;TAMANHO QUE QUEREMOS ESCREVER
  75.             INT     21H
  76.  
  77.             ;IR BUSCAR AS COORDENADAS GUARDAS ANTERIORMENTE
  78.             POP     DX
  79.  
  80.             jc      ERRO_FICHEIRO   ; CASO FALHE
  81.             INC         DH  ;SEGUIR PARA PROXIMA LINHA
  82.             JMP     PERCORRER_LINHA
  83.                
  84.         END_PERCORRER_LINHA:
  85.             JMP     FECHAR_FICHEIRO
  86.  
  87.         ERRO_FICHEIRO:
  88.             MOV     AH, 09h
  89.             LEA     DX, msgErrorWrite
  90.             INT     21H
  91.  
  92.     FECHAR_FICHEIRO:
  93.        
  94.         LEA     BX, Fich_GUARDAR
  95.         MOV     AH, 3eh
  96.         INT     21h
  97.         jnc     FIM
  98.  
  99.         MOV     AH, 09h
  100.         LEA     DX, msgErrorClose
  101.         INT     21H
  102.        
  103.     FIM:
  104.  
  105.     POP     SI
  106.     POP     DI
  107.     POP     CX
  108.     POP     AX
  109.     POPF
  110. RET
  111. GUARDAR_GRELHA ENDP
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement