Imp

8
Para el manejo de archivos es esencial conocer las instrucciones e interrupciones para dichas operaciones. Para crear archivo: 3ch Para abrir un archivo: 3dh Para escribir sobre un archivo: 40h Para cerrar un archivo: 3eh Eliminar un archivo: 41h Todas las instrucciones llevan la interrupción int 21h CODIGO ASM .model small include otro.inc include 1-crear.inc include 2-abrir.inc include 3-escribir.inc include 4-leer.inc include cierra.inc include elimin.inc ;include salirx.inc .stack 64 .data msg db 10,13, "*****Menu*****","$" msg1 db 10,13, "1. Crear Archivo $" msg2 db 10,13, "2. Abrir Archivo $" msg3 db 10,13, "3. Escribir Archivo $" msg4 db 10,13, "4. Leer Archivo $" msg5 db 10,13, "5. Cerrar Archivo $" msg6 db 10,13, "6. Eliminar Archivo $" msg7 db 10,13, "7. Salir $" msg8 db 10,13, "8. Ordenar $" msg9 db 10,13, "Elija un opcion: $" nom db "aprueba.txt", 0 ;nombre archivo a crear creado db 10,13, "Archivo creado!! $" abierto db 10,13, "Archivo abierto!! $"

description

asm

Transcript of Imp

Para el manejo de archivos es esencial conocer las instrucciones e interrupciones para dichas operaciones.

Para crear archivo: 3chPara abrir un archivo:3dhPara escribir sobre un archivo: 40hPara cerrar un archivo: 3ehEliminar un archivo: 41hTodas las instrucciones llevan la interrupcin int 21h

CODIGO ASM

.model smallinclude otro.incinclude 1-crear.incinclude 2-abrir.incinclude 3-escribir.inc include 4-leer.incinclude cierra.inc include elimin.inc;include salirx.inc

.stack 64.data msg db 10,13, "*****Menu*****","$" msg1 db 10,13, "1. Crear Archivo $" msg2 db 10,13, "2. Abrir Archivo $" msg3 db 10,13, "3. Escribir Archivo $" msg4 db 10,13, "4. Leer Archivo $" msg5 db 10,13, "5. Cerrar Archivo $" msg6 db 10,13, "6. Eliminar Archivo $" msg7 db 10,13, "7. Salir $" msg8 db 10,13, "8. Ordenar $" msg9 db 10,13, "Elija un opcion: $" nom db "aprueba.txt", 0 ;nombre archivo a crear creado db 10,13, "Archivo creado!! $" abierto db 10,13, "Archivo abierto!! $" escrito db 10, 13, "Archivo Escrito!! $" leido db 10, 13, "Archivo Leido!! $" cerrado db 10, 13, "Archivo Cerrado!! $" ;eliminar db 10, 13, "Archivo Eliminado!! $" vec db 50 dup('$') ;variable a usar para la escritura del archivo.

.code mov ax, @data ;Cargamos el segmento de datos para sacar el nombre del archivo. mov ds, ax menu: imprimir msg imprimir msg1 imprimir msg2 imprimir msg3 imprimir msg4 imprimir msg5 imprimir msg6 imprimir msg7 imprimir msg8 imprimir msg9 mov ah,0dh ;0dh es elcdigohexadecimal del Enter, int 21h mov ah,01h ;peticionde leer caracter int 21h

;comparamos la opcin que se tecle cmp al,31h je crear cmp al,32h je abrir cmp al,33h je escribir cmp al,34h je leer cmp al,35h je cerrar cmp al,36h ;je elim ;cmp al,37h crear: crear nom creado abrir: abrir nom abierto escribir: escribir nom escrito leer: leer nom leido cerrar: cerrar nom cerrado ;elim: ;elim nom eliminar salir: salir end

MACROS

1.crear.inc

mov ah,3ch ;instruccin(servicio) para crear el archivo.mov cx,0 ;longitud de cadenalea dx, nombre int 21h ;llamada interrupcin software 21Hjc salir ;si no se pudo crear el archivo arroja un error, se captura con jc.imprimir creado ;mensaje en asm que se ejecuta despus de realizada una tarea de una opcionmov bx,axmov ah,3eh ;cierra el archivoint 21hjmp men ;regresa al menucrear endm

2 .abrir.inc

abrir macro nombremov ah,3dh ;servicio para abrir el archivomov al,0h ;0h solo lectura, 1h solo escritura, 2h lectura y escrituramov dx,offset nombre ;abre el archivo llamado .txt indicado en .dataint 21hmov ah,42h ;Mueve el apuntador de lectura/escritura al archivomov al,00hmov bx,axmov cx,50 ;Decimos que queremos leer 50 bytes del archivoint 21h

;leer archivo mov ah,3fh ;Lectura del archivo mov bx,ax ;guarda en bx el manejador mov cx,10 mov dx,offset vec imprimir abierto int 21h mov ah,09h ;peticion para desplegar int 21h

mov ah,3eh ;Cierre de archivo int 21h jmp menu endm

3. escribir.inc

escribir macro nombre escrito pedir: mov ah,01h ;pedimos un carcter, al leer el caracter, este lo mostrara int 21h mov vec[si],al ;Se guarda en el registro indexado al vector inc si cmp al,0dh ;Se cicla hasta que se digite un Enter ja pedir ;salta si es mayor jb pedir ;salta si es menor

mov ah,3dh ;3dh abrir archivo mov al,1h ;Abrimos el archivo en solo escritura. mov dx,offset nombre ; Mover a DX el desplazamiento posicin de la variable nombre int 21h jc salir ;Si hubo error

;Escritura de archivo mov bx,ax ; mover hadfile mov cx,si ;num de caracteres a grabar mov dx,offset vec ; Direccion del texto a imprimir mov ah,40h ;escribe sobre el archivo int 21h imprimir escrito ;mensaje en asm que se ejecuta despus de realizada una tarea de una opcion cmp cx,ax

mov ah,3eh ;Cierre de archivo int 21h jmp men ;regresa al menuendm

4. leer.inc

leer macro nombre leidomov ah,3fh ;servicio para lectura de registromov bx,ax ; guarda en bx el manejadormov cx,10 ;longitud de registro a leermov dx,offset ledo ; Direccion del texto a imprimirint 21hmov ah,09hint 21hmov ah,3eh int 21hjmp menuendm

cierra.inc

cerrar macro nombre cerrado mov ah,3dh mov al,1h mov dx,offset nombre int 21h jc salir

mov bx,ax mov cx,si mov dx,offset vec mov ah,40h int 21h imprimir cerrado cmp cx,ax;jne salir

mov ah,3eh ;servicio para cerrar el archivo int 21h jmp menu

endm

elimin.inc

elim macro eliminareliminar:mov ah,41h mov dx, offset nombreint 21h ;jc salirimprime msg6

mov ah,3eh int 21h jmp menu endm

otro.inc

imprimir macro char ;macro imprimir mov ah,09 ;visualizacin de una cadena de caracteres lea dx, char int 21hendm

salir macro ;macro salir mov ah,04ch int 21hendm

pedir macro in ;macro pedir imprimir mensaje lea SI, cadena mov cx, 6 regresa: mov ah, 01 int 21h cmp al, 13 je termina mov nombre[SI], al inc SI loop regresa termina: mov dl, 13 mov ah, 02h int 21h mov dl, 10 mov ah, 02h int 21hendm

salir.inc

salir macro nombre saliendosalir:mov ah,04chint 21hendm