Scripts de ensamblador

En este programa se muestra como leer u obtener el directorio en donde te encuentras actualmente, asi como poder cambiarte de directorio y de unidad.

;porgrama que cambia de direcctorio y de unidad como
;el ms-dos www.pro-gramas.com
.model tiny
.data
opc1 db '1.- Cambiar unidad$'
opc2 db '2.- Cambiar directorio$'
opc3 db 'Salir [enter] -> $'
ms1 db 'Url -> $'
ms2 db 'Unidad -> $'
ms3 db 'Directorio (\) -> $'
unidad db 'ABCDEFGH'
ruta db 30 dup(' ')
dir db 30 dup(' ')
.code
clear macro
mov ah,00h ;limpia la pantalla
mov al,03h
int 10h
endm
 
gotoxy macro fil,col
mov ah,02h ;posiciona el cursor
mov dh,fil ;fila
mov dl,col ;columna
mov bh,0 ;pagina de video
int 10h
endm
 
write macro ;escribe una cadena
mov ah,09h
int 21h
endm
 
writec macro ;escribe un caracter
mov ah,02h
int 21h
endm
 
cuadro macro fi,ff,ci,cf
local etiqueta
local etiqueta2
 
mov cl,ci
etiqueta: ;ciclo para mostrar la fila superior
 
gotoxy fi,cl ;fila superior
 
mov ah,02h ;inter. imprimir
mov dl,205 ;movemos a dl
int 21h
 
gotoxy ff,cl ;fila inferior
 
mov ah,02h
mov dl,205
int 21h
inc cl
cmp cl,cf
jne etiqueta ;ciclo aumenta + 1
 
mov cl,fi
etiqueta2:
 
gotoxy cl,ci ;columna izquierda
 
mov ah,02h
mov dl,186
int 21h
 
gotoxy cl,cf ;columna derecha
 
mov ah,02h
mov dl,186
int 21h
inc cl
cmp cl,ff
jne etiqueta2 ;ciclo aumenta + 1
 
gotoxy fi,ci ;mostrar el codo superior izq
 
mov ah,02h
mov dl,201
int 21h
 
gotoxy fi,cf ;mostrar el codo superior der
 
mov ah,02h
mov dl,187
int 21h
 
gotoxy ff,ci ;mostrar el codo inferior izq
 
mov ah,02h
mov dl,200
int 21h
 
gotoxy ff,cf ;mostrar el codo inferior der
 
mov ah,02h
mov dl,188
int 21h
endm
 
pactual macro
local repite
local repite1
 
mov cx,29
mov di,0
repite:
mov ruta[di],' '
inc di
loop repite
 
gotoxy 2,10
 
lea dx,ms1 ;Posiciono la direccion de la cadena
write ;escribe una cadena
 
mov ah,19h ;Me fijo en que Unidad estas
int 21h
 
push ax
 
mov bl,al
mov dl,unidad[BX] ;posiciono la direccion en la cadena, en la letra donde estoy
mov dir[0],dl
mov dir[1],':'
mov dir[2],'\'
 
pop ax
inc al
mov ah,47h ;Optener la carpta en que estoy
mov dl,al ;Unidad donde quiero conocer el directorio
lea si,ruta ;En ruta guarde el nombre de directorio en el que estoy
int 21h
 
mov cx,0
lea di,dir
add di,3
lea si,ruta
repite1:
mov al,[si]
mov [di],al
inc si
inc di
inc cx
cmp cx,29
jne repite1
 
mov dir[30],'$'
lea dx,dir
write
endm
 
;cuenta cuantos caracteres tiene una cadena
countc macro car,count
mov al,car
mov cx,count ;cuantas repeticiones
repne scasb ;compara la cadena con al
 
add cx,2
mov dh,0
mov dl,count
sub dx,cx
endm
.startup
 
repite:
clear ;limpia pantalla
;fi,ff,ci,cf
cuadro 1,24,0,79 ;dibuja cuadro
pactual ;posicion actual de url
gotoxy 10,10
lea dx,opc1
write
gotoxy 11,10
lea dx,opc2
write
gotoxy 12,10
lea dx,opc3
write
 
mov ah,08h
int 21h
 
cmp al,31h
je unida
 
cmp al,32h
je directorio
 
cmp al,13
jne repite
 
jmp salir
 
unida:
gotoxy 10,45
lea dx,ms2
write
 
mov ah,01h ;leo unidad
int 21h
sub al,30h
 
mov ah,0eh ;selecciona la unidad
mov dl,al
int 21h
jmp repite
 
directorio:
gotoxy 10,45
lea dx,ms3
write
 
lea di,dir
countc ' ',30
 
mov si,dx ;muevo a si el contador
repite3: ;concateno en dir la carpeta
mov ah,08h
int 21h
 
cmp al,13
je conti
 
mov ah,02h
mov dl,al
int 21h
mov dir[si],al
inc si
 
conti:
cmp al,13
jne repite3
 
inc si
mov dir[si],00h
 
mov ah,3bh ;cambia de directorio
lea dx,dir
int 21h
jmp repite
 
salir:
 
.exit
end
Autor: elgame DescargarDescargar

Comentarios en "Obtener y cambiar de directorio y unidad en ensamblador"

Table 'programa_programas.t_comentarios' doesn't exist