Una ayudita con las funciones 39h,2ah y 3bh
Publicado por Mario (2 intervenciones) el 23/06/2008 17:43:33
Hola buenas, resulta de que me han mandado la siguiente practica y estoy atascado.
La practica es la siguiente:
---------------------------------------------------------------------------------------------------------------------------------------
Realizar un prgrama en ensamblador que lea una cadena de caracteres y permita crear, borrar o cambiar a un directorio con ese nombre como opcion de menu:
-A la cadena se le debe omitir el caracter ENTER.
-Se pueden emplear las funciones:39h(crear), 3Ah(eliminar) y 3Bh(cambiar a).
-DS:DX puntero al nombre del directorio
--------------------------------------------------------------------------------------------------------------------------------------
Ahora mismo lo que llevo hecho es:
dosseg
.model small
.stack
.data
Texto1 DB "Introdce el nombre del directorio a crear/borrar/cambiar a:",13,10, "$"
Texto2 DB "Pulsa el numero correspondiente segun la opcion que quieras:",13,10, "$"
Texto3 DB "1. Crear , 2. Borrar , 3. Cambiar a: ",13,10,"$"
Texto4 DB "Fin del programa",13,10, "$"
Directorio DB "c:prueba"0
Opcion DB ?
.code
inicio:
mov ax, @data
mov ds, ax
lea dx, Texto1 ,imprime en pantalla Texto1
mov ah, 9
int 21h
;aqui viene la entrada del directorio pero que no la activo porque he puesto yo uno ya
; mov ah, 0Ah ,entrada desde teclado el nombre del directorio a manipular ;
;lea dx, Directorio
;int 21h
lea dx, Texto2 ,imprime en pantalla Texto2
mov ah, 9
int 21h
lea dx, Texto3 ,imprime en pantalla Texto3
mov ah, 9
int 21h
mov ah, 1 ,entrada desde teclado la opcion deseada
int 21h
mov opcion, al
cmp opcion ,31h
jz crear_dir
cmp opcion ,32h
jz borrar_dir
cmp opcion ,33h
jz cambiar_dir
crear_dir:
mov dx,offset Directorio
mov ah, 39h
int 21h
cmp ax, 00h
jz fin
borrar_dir:
mov dx,offset Directorio
mov ah, 3Ah
int 21h
cmp ax, 00h
jz fin
cambiar_dir:
mov dx,offset Directorio
mov ah, 3Bh
int 21h
cmp ax, 00h
jz fin
fin:
lea dx, Texto4
mov ah, 9
int 21h
mov ah, 4ch
int 21h
end
Muchas horas y solo e llegado a esto que no es ni la decima parte de lo que me piden. Como no sabia como hacer para que el directorio que entraba desde teclado fuese el que luego utilizase el programa puse uno por defecto para ver si por lo menos las funciones las puse bien, y funcionan todas a excepcion de "cambiar a". A parte no tengo ni idea de como omitir la tecla enter y como validar entonces los datos introducidos :S.
A ver si me podeis echar una mano o decirme algun sitio donde pueda encontrar practicas similares resueltas que e buscado y rebuscado y no he encontrado ninguna.
Lo que sea me es valido.
Gracias desde ya
La practica es la siguiente:
---------------------------------------------------------------------------------------------------------------------------------------
Realizar un prgrama en ensamblador que lea una cadena de caracteres y permita crear, borrar o cambiar a un directorio con ese nombre como opcion de menu:
-A la cadena se le debe omitir el caracter ENTER.
-Se pueden emplear las funciones:39h(crear), 3Ah(eliminar) y 3Bh(cambiar a).
-DS:DX puntero al nombre del directorio
--------------------------------------------------------------------------------------------------------------------------------------
Ahora mismo lo que llevo hecho es:
dosseg
.model small
.stack
.data
Texto1 DB "Introdce el nombre del directorio a crear/borrar/cambiar a:",13,10, "$"
Texto2 DB "Pulsa el numero correspondiente segun la opcion que quieras:",13,10, "$"
Texto3 DB "1. Crear , 2. Borrar , 3. Cambiar a: ",13,10,"$"
Texto4 DB "Fin del programa",13,10, "$"
Directorio DB "c:prueba"0
Opcion DB ?
.code
inicio:
mov ax, @data
mov ds, ax
lea dx, Texto1 ,imprime en pantalla Texto1
mov ah, 9
int 21h
;aqui viene la entrada del directorio pero que no la activo porque he puesto yo uno ya
; mov ah, 0Ah ,entrada desde teclado el nombre del directorio a manipular ;
;lea dx, Directorio
;int 21h
lea dx, Texto2 ,imprime en pantalla Texto2
mov ah, 9
int 21h
lea dx, Texto3 ,imprime en pantalla Texto3
mov ah, 9
int 21h
mov ah, 1 ,entrada desde teclado la opcion deseada
int 21h
mov opcion, al
cmp opcion ,31h
jz crear_dir
cmp opcion ,32h
jz borrar_dir
cmp opcion ,33h
jz cambiar_dir
crear_dir:
mov dx,offset Directorio
mov ah, 39h
int 21h
cmp ax, 00h
jz fin
borrar_dir:
mov dx,offset Directorio
mov ah, 3Ah
int 21h
cmp ax, 00h
jz fin
cambiar_dir:
mov dx,offset Directorio
mov ah, 3Bh
int 21h
cmp ax, 00h
jz fin
fin:
lea dx, Texto4
mov ah, 9
int 21h
mov ah, 4ch
int 21h
end
Muchas horas y solo e llegado a esto que no es ni la decima parte de lo que me piden. Como no sabia como hacer para que el directorio que entraba desde teclado fuese el que luego utilizase el programa puse uno por defecto para ver si por lo menos las funciones las puse bien, y funcionan todas a excepcion de "cambiar a". A parte no tengo ni idea de como omitir la tecla enter y como validar entonces los datos introducidos :S.
A ver si me podeis echar una mano o decirme algun sitio donde pueda encontrar practicas similares resueltas que e buscado y rebuscado y no he encontrado ninguna.
Lo que sea me es valido.
Gracias desde ya
Valora esta pregunta


0