Ensamblador - buscar archivos en ensamblador

   
Vista:

buscar archivos en ensamblador

Publicado por alfonso (3 intervenciones) el 10/07/2008 20:58:03
por favor necesito un programa o codigo que busque archivos en el lenguaje ensamblador talvez alguien tiene uno que me lo pueda brindar se lo agradecere.gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:buscar archivos en ensamblador

Publicado por MSH (121 intervenciones) el 15/07/2008 02:18:39
En el libro de Peter Abel viene un ejemplo que te puede servir.

title searchi.asm (COM)selecciona y borra los archivos
codeseg segment para 'code'
.model small
.code
org 100h
begin: jmp main

;------------------------------------------------------------------------------

tab equ 09
lf equ 10
cr equ 13
crlf db CR,LF,'$'
pathnam db 'E:*.*',00h
delmsg db TAB,'Borrar ','$'
endmsg db CR,LF,'No hay mas entradas de directorios',CR,LF,'$'
errmsg1 db 'Ruta/archivo invalido ','$'
errmsg2 db 'Disco protegido contra escritura','$'
prompt db 'Y=Borrar,N=Dejar,Ent=Salir',CR,LF,'$'
diskarea db 43 dup (20h)
;------------------------------------------------------------------------------
main proc near
call clean ;limpia la pantalla
call poscurs ;posiciona cursor
call b10first ;en la entrada del directorio
cmp ax,00 ;si no hay entradas
jne a90 ;salir
lea dx,prompt ;indicación inicial
call q30line

a20:
call d10disp ;despliega nombre del arhivo
call e10delet ;si se solicita lo borra
cmp al,0ffh ;¿Soicitud para terminar?
je a90 ;si, salir
lea dx,crlf ;colocar el cursor en
call q30line ;la linea siguiente
call c10next ;obtiene la siguiente entrada de directorio
cmp ax,00h ;existen mas entradas?
je a20 ;si, repetir
a90:
mov ax,4c00h ;salir al DOS
int 21h
main endp
;...............................................................................
b10first proc near
mov ah,1ah ;obtener el dta para
lea dx,diskarea ;llamadas de la función
int 21h ;
mov ah,4eh ;LOCALIZAR LA PRIMER ENTRADA
mov cx,00 ;DEL DIRECTORIO
lea dx,pathnam ;DIRECCION DE LA CADENA ASCIIZ
int 21h
jnc b90 ;operación válida
push ax ;no
lea dx,errmsg1 ;mostrar mensaje
call q30line ;final
pop ax
b90:
ret
b10first endp
;...............................................................................
c10next proc near
mov ah,4fh ;LEE ENTRADA DEL DIRECTORIO
int 21h ;OBTIENE LA SIGUIENTE
cmp ax,00h ;hay ms entradas?
je c90 ;si, pasar
push ax ;no,
lea dx,endmsg ;mostrar mensaje
call q30line ;final
pop ax
c90:
ret
c10next endp
;...............................................................................
d10disp proc near
lea dx,delmsg ;mostrar mensaje para borrar
call q30line ;
lea si,diskarea+1eh ;inicio del nombre del archivo
d30:
mov dl,[si] ;obtener caracter
call q40char ;
inc si ;caracter siguiente
cmp byte ptr [si],00h;cero hex para detener?
jne d30 ;no obtener carcter siguiente
mov dl,'?' ;si,salir
call q40char ;
ret
d10disp endp
;...............................................................................
e10delet proc near
mov ah,10h ;aceptar un caracter
int 16h ;respuesta (Y/N)
cmp al,dh ;caracter enter?
je e50 ;si, salir
or al,00100000b ;fuerza letra minuscula
cmp al,'y' ;peticion de borrado
jne e90 ;no, pasar
mov ah,41h ;si
lea dx,diskarea+1eh ;dirección de la entrada borrada
int 21h ;del nombre del archivo
jnc e90 ;borrado válido?
lea dx,errmsg2 ;no, mostrar
call q30line ;mensaje de advertencia
e50:
mov al,0ffh ;indicador del fin del proceso
e90: ret
e10delet endp
;...............................................................................
clean proc near
mov ax,0600h ;limpia pantalla
mov bh,07h ;atributo: fondo negro -letra blanca
mov cx,0000h ;esquina superior izquierda: renglon-columna
mov dx,314fh ;esquina inferior derecha: renglon-columna
int 10h ;interrupcion del BIOS
ret
clean endp
;...............................................................................
poscurs proc near
mov ah,02h ;peticion para colocar cursor
mov bh,00h ;colocar el cursor
mov dh,00 ;renglon 0
mov dl,10 ;columna 10
int 10h
ret
poscurs endp
;...............................................................................
q30line proc near
mov ah,09h ;peticion para mostrar cadena
int 21h ;dx designa al inicio
ret
q30line endp
;...............................................................................
q40char proc near
mov ah,02h ;petcion para desplegar caracter
int 21h ;dl designa al inicio
ret
q40char endp
end begin
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar