SoloCodigo
Programación General => ASM (Ensamblador) => Mensaje iniciado por: NILIS en Viernes 19 de Noviembre de 2004, 13:02
-
Buenas soy novato en esto y necesito ayuda, bueno el caso es que tengo que abrir un fichero ubicado en la disketera y en el caso de que haya error que muestre un mensaje por pantalla y se salga, y en caso contrario que se salga sin mostrar nada. Pero en este caso voy a tener el fichero en la disketera.
Pues el caso es que si hay error, en AX se devuelve el codigo del error y me sale que AX=2 (FICHERO NO ENCONTRADO) y por lo tanto siempre me sale por pantalla error de apertura, y yo lo ke kiero es que me lo abra, aki os dejo el código, echadle un vistazo haber si la he cagado en algo... :unsure: :blink:
.MODEL small
.STACK 100h
.DATA
RUTA DB 'A:\HOLA.TXT',0h
ERROR DB 'Error de apertura',10,13,'$'
.CODE
;macro para salir del programa
Salir MACRO mensaje
LEA DX,mensaje
MOV AH,09h
INT 21h
MOV AH,4Ch
INT 21h
ENDM
MOV AX,@DATA
MOV DS,AX
MOV ES,AX
MOV AX,3D00h ;FUNCION ABRIR
LEA DX,RUTA ;carga direccion de memoria
INT 21h
JNC existefichero
Salir ERROR ;SI CF=1 mostrar mensajede error
existefichero:
MOV AH,4Ch
INT 21h
END
-
no te pases.
-
Ya lo solucione, se me olvido poner a donde apunta el segmento de datos de mi programa, :P ya furula :comp:
-
eso me suena a arquitectura II
-
este es el código que lo hace:
MODEL SMALL
.STACK 100h
.DATA
ruta DB 'a:\hola.txt',0
error1 DB 'ERROR DE APERTURA DEL FICHERO',13,10,'$'
error DB 0
ident_fich DW 0
.CODE
MOV AX,SEG ruta
MOV DS,AX
LEA DX,ruta
MOV AL,0
MOV AH,3Dh ;función abrir fichero
INT 21h
JC mostrar_error1 ;si CF=1 mostramos el error de apertura
MOV ident_fich,AX
fin:
MOV AH,4CH
INT 21h
mostrar_error1:
LEA DX,error1 ;mostramos el error de apertura
MOV AH,9 ;función de escribir por pantalla
INT 21h
JMP fin
END