EJEMPLO ARCHIVO EN ENSAMBLADOR
LENGUAJE ENSAMBLADOR
Programa que abre un archivo de texto cuyo nombre está dado en las variables del programa. El programa es capaz de escribir texto en el archivo sin perderse la información existente en el mismo. También tiene la opción de borrar el archivo y comprobar errores al momento de intentar abrir un archivo inexistente.
coloca macro ren, col
;macro que colocael cursor según las coordenadas dadas
MOV AH,2
MOV BH,00
MOV DH,ren ;RENGLON
MOV DL,col ;COLUMNA
INT 10H
endm
;-----------------------------------------------------------------------------
limpia macro
;macro que limpia la pantalla y pone el texto blanco y fondo azul
MOV AH,06
MOV BH,1Fh ;FONDO AZUL TEXTO BLANCO
MOV CX,0000 ;INICIO REN,COL
MOV DX,6080 ;FIN REN,COLINT 10H
endm
;-------------------------------------------------------------------------------
terminar macro
;macro que termina el programa
MOV AH,4CH
INT 21H
endm
;-------------------------------------------------------------------------------
despliega macro msj
;DESPLIEGA UN MENSAJE EN PANTALLA
LEA DX,msj
MOv AH,9
INT 21H
endm;-------------------------------------------------------------------------------
.MODEL SMALL
.STACK 100h
.DATA
separador db '********************************************************************************','$'
opciones db '******************************',10,13,'* [1] Abrir un archivo *',10,13,'* [2] Escribir en un archivo *',10,13, '* [3] Borrar un archivo *',10,13,'* [4] Salir del programa*',10,13,'******************************',10,13,'Selecciona una opcion: ','$'
manejador dw ?
ruta db "archivo.txt",0
incorrect db 10,13,'Opcion incorrecta, presiona cualquier tecla para volver al menu principal','$'
lol db 10,13,'Se ha producido un error. presiona culquier tecla para continuar','$'
contenido db ' - - CONTENIDO DEL ARCHIVO - - ',10,13,'$'
continuar db 10,10,13,'Presiona cualquiertecla para volver al menu principal.','$'
exito db 10,10,13,'El archivo se ha guardado exitosamente. Presiona cualquier tecla para continuar.','$'
borrado db 10,10,13,'El archivo ha sido eliminado exitosamente. Presiona cualquier tecla para continuar.','$'
nosepudo db 10,10,10,'ERROR, el archivo no pudo ser eliminado. Presione cualquier tecla para continuar.','$'
cont db 0
buffer db 255DUP('$'),'$',0
NOM LABEL BYTE
LONGD DB 0FFh
LONGR DB ?
CAD DB 255 DUP('$'),'$',0
.CODE
MOV AX,@DATA
MOV DS,AX
mov es,ax
inicio:
limpia
coloca 0,0
despliega opciones
mov ah,01
int 21h
cmp al,'1'
je uno
cmp al,'2'
je dos
cmp al,'3'
je tres
cmp al,'4'
je fin
jmp nel
uno:
call abrir
jmp inicio
dos:
call escribir
jmp inicio
tres:
call eliminar
jmp inicionel:
LIMPIA
despliega incorrect
mov ah,01
int 21h
jmp inicio
fin:
terminar
;------------------------------------------------------------------------------------------------
barra proc near
limpia
coloca 0,0
despliega contenido
coloca 01,00
despliega separador
ret
endp barra
;----------------------------------------------------------------------------------------------abrir proc near
mov ah,3dh ;servicio para abrir el archivo
lea dx,ruta ;la ruta del archivo
mov al,0 ;abrir el archivo para lectura
int 21h ;ejecutar la interrupción
jc error ;si la bandera de acarreo se prendió es que hubo un error
mov manejador,ax
mov ah,3fh ;servicio para copiar bytes desde un archivo a una varieble.
mov bx,manejador ;El manejador correspondiente
mov cx,255 ; quierocopiar 255 bytes
lea dx, buffer ;se van a copiar a la variable 'buffer'
int 21h ;ejecutar la interrupción.
call barra
coloca 02,00
despliega buffer
mov ah,3eh ;servicio para cerrar el archivo
mov bx,manejador ;el manejador
int 21h ;ejecutar interrupcion
despliega continuar
mov ah,01
int 21h
call limpiabuf
ret
error:
despliega lol
mov ah,01
int 21h
ret
endp abrir...
Regístrate para leer el documento completo.