Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ;GUARDAR GRELHA EM FICHEIRO
- ;RECEBE COMO PARAMETRO
- ;PONTEIRO NOME DO FICHEIRO (REGISTO DX)
- GUARDAR_GRELHA PROC
- PUSHF
- PUSH AX
- PUSH CX
- PUSH DI
- PUSH SI
- ABRIR_FICHEIRO_GRELHA:
- MOV AH, 3CH ;ABRIR FICHEIRO PARA ESCRITA
- MOV CX, 00h ;TIPO DE FICHEIRO (NORMAL)
- INT 21h ;ABRE EFETIVAMENTE O FICHEIRO(AX DICA COM O HANDLE)
- ;INTEROPÇAO DEVOLVE ESTES VALORES
- ;TEMOS QUE GUARDAR NUMA VARIAVEL PARA DEPOIS
- ;NA ESCRITA SER UTILZADO
- MOV HandleFich,AX
- jnc ESCREVE_GRELHA ;SE TUDO CORRER BEM COMEÇA O PROCESO DE ESCRITA
- MOV AH, 09h
- LEA DX, msgErrorCreate
- int 21H
- jmp FIM
- ;VAMOS LER LINHA A LINHA E GUARDAMOS ESSES VALORES NUM ARRAY TEMP
- ESCREVE_GRELHA:
- XOR DX, DX
- MOV DH, 8 ;ORIGEM
- MOV DL, 30 ;ORIGEM
- PERCORRER_LINHA:
- CMP DH, 14
- JGE END_PERCORRER_LINHA
- MOV DL, 30
- MOVER_BX DL, DH ;pos x, pos y
- XOR SI, SI
- LEA SI, TEMP_LINHA ;SI = &TEMP_LINHA
- PERCORRER_COLUNA:
- CMP DL, 48
- JGE END_PERCORRER_COLUNA
- ;APENAS SAO GUARDAS AS CORES SEM OS CARACTERES
- ;TENTAMOs USAR A INSTRUÇAO LES MAS SEM SUCESSO
- MOV CL, BYTE PTR ES:[BX+ 1]
- MOV [SI], CL; si->tmp_linha = cor
- ADD BX, 2; POSICAO ASSEGUI NA NOSSA GRELHA
- ADD SI, 1; POSSICAO ASSEGUIR NO ARRAY TEMP
- INC DL
- JMP PERCORRER_COLUNA
- END_PERCORRER_COLUNA:
- ;SALVAGUARDAR VALORES DAS POSX E Y
- PUSH DX
- LEA DX, TEMP_LINHA
- ; DX FICA A APONTAR PARA O ARRAY ONDE FICARAM AS CORES
- ;_____________ESCREVER_FICHEIRO______________
- ;restaurar o valor handle de quando foi aberto o ficheiro
- MOV BX, HandleFich
- MOV AH, 40H
- MOV CX, 20 ;TAMANHO QUE QUEREMOS ESCREVER
- INT 21H
- ;IR BUSCAR AS COORDENADAS GUARDAS ANTERIORMENTE
- POP DX
- jc ERRO_FICHEIRO ; CASO FALHE
- INC DH ;SEGUIR PARA PROXIMA LINHA
- JMP PERCORRER_LINHA
- END_PERCORRER_LINHA:
- JMP FECHAR_FICHEIRO
- ERRO_FICHEIRO:
- MOV AH, 09h
- LEA DX, msgErrorWrite
- INT 21H
- FECHAR_FICHEIRO:
- LEA BX, Fich_GUARDAR
- MOV AH, 3eh
- INT 21h
- jnc FIM
- MOV AH, 09h
- LEA DX, msgErrorClose
- INT 21H
- FIM:
- POP SI
- POP DI
- POP CX
- POP AX
- POPF
- RET
- GUARDAR_GRELHA ENDP
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement