Accueil > > > EDITEUR DE TEXTE SIMPLE (SANS MODIFICATION DU TEXTE)
EDITEUR DE TEXTE SIMPLE (SANS MODIFICATION DU TEXTE)
Information sur la source
Description
voila mon premier programme en Assembleur. C'est un petit éditeur de texte, qui permet : créer un fichier ensuite d'écrire dans le fichier Lire un Fichier Je fais qui lise que 200 caractère mais ça peut être modifier facilement Si vous avez des questions j'essairai d'y répondre (Désolé pour les fautes d'ortographe j'ai jamais été fort ^^)
Source
- TITLE Editeur de Texte By Brait Loic
-
- COMMENT @
- Petit éditeur de texte permettant de lire/écrire un fichier
-
- -Edition de texte d'acheve avec un compinaison de touche
- -La touche return marche normalement
- -Utilisateur est invite à entrée le nom du fichier
- -Organisation du fichier est libre
-
- Auteur: Brait Loic
- Date de crétion: 22.05.05
- Dernière modification: 22.05.05
- Révison
-
- @
-
- .MODEL small
-
- .STACK 100h
-
- .DATA
- nCarMaxMenu DB 2
- nCarLuMenu DB ?
- strLuMenu DB 2 DUP(?)
- nCarMaxNom DB 9
- nCarLuNom DB ?
- strLuNom DB 13 DUP(0)
- texte DB 200 DUP(?),'$'
- handleFichier DW ?
- handleFichierE DW ?
- BufferTexte DB 200 DUP(?),'$'
-
-
- ;Message d erreur -------------------------------------
- FileSharingT DB 'Pas de logiciel de File Sharing$'
- nonFichierT DB 'Fichier non trouve$'
- cheminFauxT DB 'Chemin non trouve$'
- plusHandleT DB 'Plus de Handle libre$'
- accesRefuseT DB 'Acces Refuse$'
- nonHandleT DB 'Handle non autorise ou fichier correspondant non ouvert$'
- nonModeT DB 'Mode d acces non autorise$'
- ;-----------------
-
- ;Texte du pogramme -------------------------------------
- textMenu DB 'Voici un editeur de texte qui a etait code en Assembleur par Brait Loic',13d,10d,'Choisissez l opperation$'
- choixMenu DB '1. Nouveau Fichier',13,10,'2. Lire Fichier','$'
- mauvaisChoixT DB 'LE CHOIX QUE VOUS AVEZ FAIT N EST PAS CORRECTE REFAITE LE !!!$'
- entreeNom DB 'Veuillez entrez le nom du fichier (sans extension)$'
- entreeTexteT DB 'Veuillez entrez le texte du fichier',13,10,'Pour Quitter Pressez la touche DOLLARD$'
- ;----------------------
-
-
- ;Mise en page------------
- extension DB '.txt$'
- etoile DB '*$'
- retourT DB 13,10
- retour DB 13,10,'$'
- blanc DB ' $'
- ;-------------------------
- .CODE
-
- main PROC
-
- MOV ax,@data
- MOV ds,ax
-
- ;*************************************
- ;Debut du progrmamme =================
- ;Nettoyage des registres
- SUB AX,AX
- SUB BX,BX
- SUB CX,CX
- SUB DX,DX
- SUB SI,SI
- SUB DI,DI
-
- LEA DX,textMenu
- CALL afficheTexte ;Affiche le texte
-
- LEA DX,retour
- CALL afficheTexte ;Affiche un espace
-
- mauvaischoix:
-
- LEA DX,choixMenu
- CALL afficheTexte ;Affiche le choix
-
- LEA DX,nCarMaxMenu
- CALL demandeTexte ;Demande le choix
-
- MOV AL,[strLuMenu]
- CALL transASCII ;le choix transformer en nombre
-
- MOV AH,1d
- CMP AH,AL
- JZ nouveau ;choix Nouveau Fichier
-
- MOV AH,2d
- CMP AH,AL
- JZ lire ;choix lire et ecrire un fichier
-
-
- ;Choix pas correcte -----------------------------
- LEA DX,retour
- CALL afficheTexte ;Affiche un espace
- LEA DX,mauvaisChoixT
- CALL afficheTexte
- JMP mauvaisChoix ;Mauvais Choix effectuer
-
- nouveau: ;---------------------------------------------------------
- LEA DX,entreeNom
- CALL afficheTexte ;Affiche le texte de la demande su nom
-
- LEA DX,nCarMaxNom
- CALL demandeTexte ;Demande le nom du fichier
-
- ;Ajoute le .txt$ au nom
- CALL ajouteExt
-
- ;Cree le fichier
- LEA DX,strLuNom
- CALL nouveauFichier
-
- MOV handleFichier,AX
-
- JMP ecrire ;pour ecrire dans le fichier
-
- lire: ;----------------------------------------------------------------
- ;Affiche le texte de la demande de nom
- LEA DX,entreeNom
- CALL afficheTexte
-
- ;Demande le nom du fichier
- LEA DX,nCarMaxNom
- CALL demandeTexte
-
- ;Ajouter l extension
- CALL ajouteExt
-
- ;Ouvrir le fichier
- LEA DX,strLuNom
- MOV CX,10100010b ;Mode d'acces (lecture/ecriture, lecture seul pour les autres prog, seul le prg actuel peut accéder)
- CALL ouvrirFichier
-
- MOV handleFichier,AX
-
- ;Lire le fichier
- LEA DX, BufferTexte
- MOV BX,handleFichier
- MOV CX,200 ;taille du buffer
- CALL lireFichier
-
- ;Afficher le texte du fichier
- LEA DX,BufferTexte
- CALL afficheTexte
-
- ;Fermer le Fichier
- MOV BX,handleFichier
- CALL fermerFichier
-
- CALL quitter ;Arreter le prg
-
- ecrire: ;----------------------------------------------------------
-
- ;Afficher la Demander d'ecrire le texte
- LEA DX,entreeTexteT
- CALL afficheTexte
-
- MOV CX,200d
- SUB DI,DI
- boucleTexte:
- ;Demander le texte
- CALL ecrireTexte
- MOV [texte+DI],AL
-
- ;Tester Si la touche est ENTER----------
- MOV AH,0Dh
- CMP AH,AL
- JZ aLaLigne
-
- ;Tester Si c'est la touchre BackSpace-------
- MOV AH,8h
- CMP AH,AL
- JZ backSpace
-
- ;Tester Si c'est pour quitter------------
- MOV AH,24h
- CMP AH,AL
- JZ quitterLePrg
-
- JMP normal
-
- aLaLigne: ;++++++++++++++++++++++++++++++
- ;Ecrire dans le fichier
- LEA DX,retourT
- MOV BX,handleFichier
- SUB CX,CX
- MOV CL,2 ;nombre de caractère a ecrire
- CALL ecrireFichier
-
- ;Afficher la lettre
- LEA DX,blanc
- CALL afficheTexte
-
- JMP continue
-
- backSpace: ;++++++++++++++++++++++++++++++
- ;Ecrire dans le fichier
-
- JMP continue
-
- quitterLePrg: ;+++++++++++++++++++++++++++
- ;Fermer le Fichier
- MOV BX,handleFichier
- CALL fermerFichier
-
- ;Quitter le Programme
- CALL quitter
-
- normal:
- PUSH CX
- ;Ecrire normalement une lettre++++++++++++++
- ;Ecrire dans le fichier
- LEA DX,[texte+DI]
- MOV BX,handleFichier
- SUB CX,CX
- MOV CL,1 ;nombre de caractère a ecrire
- CALL ecrireFichier
-
- ;Afficher la lettre
- INC DI
- MOV [texte+DI],24h
- DEC DI
- LEA DX,[texte+DI]
- CALL afficheTexteEcrire
-
- continue:
-
- POP CX
- INC DI
- LOOP boucleTexte
-
- ;Fermer le Fichier
- MOV BX,handleFichier
- CALL fermerFichier
- ;Fin du programme =======================
- ;****************************************
-
- MOV ah,4ch
- MOV al,0
- INT 21h
-
- main ENDP
- ;#####################################
- afficheTexte PROC USES AX
- ;Affiche le texte envoyé
- ;Entrée DX : offset du texte à afficher
- ;
- ;Sortie Texte à l'écran
- ;#####################################
- MOV AH,09h
- INT 21h
-
- ;retour a la ligne------------------
- LEA DX,retour
- MOV AH,09h
- INT 21h
- RET
- afficheTexte ENDP
-
- ;#####################################
- afficheTexteEcrire PROC USES AX
- ;Affiche le texte envoyé
- ;Entrée DX : offset du texte à afficher
- ;
- ;Sortie Texte à l'écran
- ;#####################################
- MOV AH,09h
- INT 21h
-
- RET
- afficheTexteEcrire ENDP
-
- ;#####################################
- demandeTexte PROC USES AX
- ;Demande le texte et le met dans un tableau
- ;Entrée DX : offset du Tableau (interuption)
- ;
- ;Sortie Aucune
- ;#####################################
- ;entree la valeur ------------------------
- MOV AH,0Ah ;fonction
- INT 21h ;interruption
-
- ;retour a la ligne--------------------
- LEA DX,retour
- MOV AH,09h
- INT 21h
-
- RET
- demandeTexte ENDP
-
- ;#####################################
- ecrireTexte PROC
- ;Pour ecrire du texte demande lettre par lettre
- ;Entrée -
- ;
- ;Sortie AL : caractère ecrit
- ;#####################################
- ;entree la valeur ------------------------
- MOV AH,07h ;fonction
- INT 21h ;interruption
-
- RET
- ecrireTexte ENDP
-
- ;#####################################
- transASCII PROC
- ;Transforme un nombre ASCII en chiffre
- ;Entrée AL : nombre en ASCII
- ;
- ;Sortie AL : nombre en chiffre
- ;#####################################
- SUB AL,48d
-
- RET
- transASCII ENDP
-
- ;#####################################
- ajouteExt PROC
- ;Ajoute à la fin du nom du fichier l'extension avec le signe de fin
- ;Entrée strLuNom : nom du fichier
- ; nCarLuNom : nombre caractere entrée
- ;
- ;Sortie -
- ;#####################################
- SUB AH,AH
- MOV AL,nCarLuNom
- MOV SI,AX
- ;.txt$
- MOV [strLuNom+SI],46d
- INC SI
- MOV [strLuNom+SI],116d
- INC SI
- MOV [strLuNom+SI],120d
- INC SI
- MOV [strLuNom+SI],116d
- INC SI
- MOV [strLuNom+SI],24h
-
- RET
- ajouteExt ENDP
-
- ;#####################################
- nouveauFichier PROC
- ;Cree un nouveau fichier
- ;Entrée DS : @segment du nom du fichier
- ; DX : @offset du nom du fichier
- ;
- ;Sortie -
- ;#####################################
- MOV AH,3Ch
- INT 21h
-
- ;Si le Carry est à 1 alors lancer la procedure qui va voire le type d'erreur
- JNC pasLancerAffichageErreurNouveau
- CALL typeErreur
-
- pasLancerAffichageErreurNouveau:
-
- RET
- nouveauFichier ENDP
-
- ;#####################################
- ouvrirFichier PROC
- ;Ouvre un fichier
- ;Entrée DS : @segment du nom du fichier
- ; DX : @offset du nom du fichier
- ; AL : Mode d'accès
- ;
- ;Sortie AX : OK(Handle) ou Code erreur
- ;#####################################
- SUB AX,AX
- MOV AH,3Dh
- INT 21h
-
- ;Si le Carry est à 1 alors lancer la procedure qui va voire le type d'erreur
- JNC pasLancerAffichageErreurOuvrir
- CALL typeErreur
-
- pasLancerAffichageErreurOuvrir:
-
- RET
- ouvrirFichier ENDP
-
- ;#####################################
- typeErreur PROC USES BX
- ;Indique le Type d'erreur (Optimisation faire relancer le prg)
- ;Entrée AX : Code de l erreur
- ;
- ;Sortie Affiche à l ecran le type d erreur
- ;#####################################
- MOV BX,1
- CMP AX,BX
- JZ FileSharing
-
- MOV BX,2
- CMP AX,BX
- JZ nonFichier
-
- MOV BX,3
- CMP AX,BX
- JZ cheminFaux
-
- MOV BX,4
- CMP AX,BX
- JZ plusHandle
-
- MOV BX,5
- CMP AX,BX
- JZ accesRefuse
-
- MOV BX,6
- CMP AX,BX
- JZ nonHandle
-
- MOV BX,12
- CMP AX,BX
- JZ nonMode
-
- ;Erreur de manque de logiciel de File Sharing
- FileSharing:
- LEA DX,FileSharingT
- CALL afficheTexte
- CALL quitter
-
- ;Fichier non trouvé
- nonFichier:
- LEA DX,nonFichierT
- CALL afficheTexte
- CALL quitter
-
- ;Chemin non trouvé
- cheminFaux:
- LEA DX,cheminFauxT
- CALL afficheTexte
- CALL quitter
-
- ;Plus de Handle libre
- plusHandle:
- LEA DX,plusHandleT
- CALL afficheTexte
- CALL quitter
-
- ;Acces Refusé
- accesRefuse:
- LEA DX,accesRefuseT
- CALL afficheTexte
- CALL quitter
-
- ;Handle non autorise ou fichier correspond non ouvert
- nonHandle:
- LEA DX,nonHandleT
- CALL afficheTexte
- CALL quitter
-
- ;Mode d acces non autorise
- nonMode:
- LEA DX,nonModeT
- CALL afficheTexte
- CALL quitter
-
- RET
- typeErreur ENDP
-
- ;#####################################
- lireFichier PROC USES BX CX
- ;lire un fichier
- ;Entrée DS : @segment du buffer
- ; DX : @offset du buffer
- ; BX : Handle du fichier
- ; CX : Nombre d octel a lire
- ;
- ;Sortie AX : nbr d octels lus ou Code erreur
- ;#####################################
- SUB AX,AX
- MOV AH,3Fh
- INT 21h
-
- ;Si le Carry est à 1 alors lancer la procedure qui va voire le type d'erreur
- JNC pasLancerAffichageErreurLire
- CALL typeErreur
-
- pasLancerAffichageErreurLire:
-
- RET
- lireFichier ENDP
-
- ;#####################################
- fermerFichier PROC
- ;ferme un fichier
- ;Entrée BX : Handle à fermer
- ;
- ;Sortie AX : OK(Handle) ou Code erreur
- ;#####################################
- SUB AX,AX
- MOV AH,3Eh
- INT 21h
-
- ;Si le Carry est à 1 alors lancer la procedure qui va voire le type d'erreur
- JNC pasLancerAffichageErreurFermer
- CALL typeErreur
-
- pasLancerAffichageErreurFermer:
-
- RET
- fermerFichier ENDP
-
- ;#####################################
- ecrireFichier PROC USES BX CX
- ;ecrire dans un fichier
- ;Entrée DS : @segment du buffer
- ; DX : @offset du buffer
- ; BX : Handle du fichier
- ; CX : Nombre d octel a ecrire
- ;
- ;Sortie AX : nbr d octels lus ou Code erreur
- ;#####################################
- SUB AX,AX
- MOV AH,40h
- INT 21h
-
- ;Si le Carry est à 1 alors lancer la procedure qui va voire le type d'erreur
- JNC pasLancerAffichageErreurLire
- CALL typeErreur
-
- pasLancerAffichageErreurLire:
-
- RET
- ecrireFichier ENDP
-
- ;#####################################
- quitter PROC
- ;quitter le prg
- ;Entrée -
- ;
- ;Sortie -
- ;#####################################
- MOV ah,4ch
- MOV al,0
- INT 21h
-
- RET
- quitter ENDP
-
- END main
TITLE Editeur de Texte By Brait Loic
COMMENT @
Petit éditeur de texte permettant de lire/écrire un fichier
-Edition de texte d'acheve avec un compinaison de touche
-La touche return marche normalement
-Utilisateur est invite à entrée le nom du fichier
-Organisation du fichier est libre
Auteur: Brait Loic
Date de crétion: 22.05.05
Dernière modification: 22.05.05
Révison
@
.MODEL small
.STACK 100h
.DATA
nCarMaxMenu DB 2
nCarLuMenu DB ?
strLuMenu DB 2 DUP(?)
nCarMaxNom DB 9
nCarLuNom DB ?
strLuNom DB 13 DUP(0)
texte DB 200 DUP(?),'$'
handleFichier DW ?
handleFichierE DW ?
BufferTexte DB 200 DUP(?),'$'
;Message d erreur -------------------------------------
FileSharingT DB 'Pas de logiciel de File Sharing$'
nonFichierT DB 'Fichier non trouve$'
cheminFauxT DB 'Chemin non trouve$'
plusHandleT DB 'Plus de Handle libre$'
accesRefuseT DB 'Acces Refuse$'
nonHandleT DB 'Handle non autorise ou fichier correspondant non ouvert$'
nonModeT DB 'Mode d acces non autorise$'
;-----------------
;Texte du pogramme -------------------------------------
textMenu DB 'Voici un editeur de texte qui a etait code en Assembleur par Brait Loic',13d,10d,'Choisissez l opperation$'
choixMenu DB '1. Nouveau Fichier',13,10,'2. Lire Fichier','$'
mauvaisChoixT DB 'LE CHOIX QUE VOUS AVEZ FAIT N EST PAS CORRECTE REFAITE LE !!!$'
entreeNom DB 'Veuillez entrez le nom du fichier (sans extension)$'
entreeTexteT DB 'Veuillez entrez le texte du fichier',13,10,'Pour Quitter Pressez la touche DOLLARD$'
;----------------------
;Mise en page------------
extension DB '.txt$'
etoile DB '*$'
retourT DB 13,10
retour DB 13,10,'$'
blanc DB ' $'
;-------------------------
.CODE
main PROC
MOV ax,@data
MOV ds,ax
;*************************************
;Debut du progrmamme =================
;Nettoyage des registres
SUB AX,AX
SUB BX,BX
SUB CX,CX
SUB DX,DX
SUB SI,SI
SUB DI,DI
LEA DX,textMenu
CALL afficheTexte ;Affiche le texte
LEA DX,retour
CALL afficheTexte ;Affiche un espace
mauvaischoix:
LEA DX,choixMenu
CALL afficheTexte ;Affiche le choix
LEA DX,nCarMaxMenu
CALL demandeTexte ;Demande le choix
MOV AL,[strLuMenu]
CALL transASCII ;le choix transformer en nombre
MOV AH,1d
CMP AH,AL
JZ nouveau ;choix Nouveau Fichier
MOV AH,2d
CMP AH,AL
JZ lire ;choix lire et ecrire un fichier
;Choix pas correcte -----------------------------
LEA DX,retour
CALL afficheTexte ;Affiche un espace
LEA DX,mauvaisChoixT
CALL afficheTexte
JMP mauvaisChoix ;Mauvais Choix effectuer
nouveau: ;---------------------------------------------------------
LEA DX,entreeNom
CALL afficheTexte ;Affiche le texte de la demande su nom
LEA DX,nCarMaxNom
CALL demandeTexte ;Demande le nom du fichier
;Ajoute le .txt$ au nom
CALL ajouteExt
;Cree le fichier
LEA DX,strLuNom
CALL nouveauFichier
MOV handleFichier,AX
JMP ecrire ;pour ecrire dans le fichier
lire: ;----------------------------------------------------------------
;Affiche le texte de la demande de nom
LEA DX,entreeNom
CALL afficheTexte
;Demande le nom du fichier
LEA DX,nCarMaxNom
CALL demandeTexte
;Ajouter l extension
CALL ajouteExt
;Ouvrir le fichier
LEA DX,strLuNom
MOV CX,10100010b ;Mode d'acces (lecture/ecriture, lecture seul pour les autres prog, seul le prg actuel peut accéder)
CALL ouvrirFichier
MOV handleFichier,AX
;Lire le fichier
LEA DX, BufferTexte
MOV BX,handleFichier
MOV CX,200 ;taille du buffer
CALL lireFichier
;Afficher le texte du fichier
LEA DX,BufferTexte
CALL afficheTexte
;Fermer le Fichier
MOV BX,handleFichier
CALL fermerFichier
CALL quitter ;Arreter le prg
ecrire: ;----------------------------------------------------------
;Afficher la Demander d'ecrire le texte
LEA DX,entreeTexteT
CALL afficheTexte
MOV CX,200d
SUB DI,DI
boucleTexte:
;Demander le texte
CALL ecrireTexte
MOV [texte+DI],AL
;Tester Si la touche est ENTER----------
MOV AH,0Dh
CMP AH,AL
JZ aLaLigne
;Tester Si c'est la touchre BackSpace-------
MOV AH,8h
CMP AH,AL
JZ backSpace
;Tester Si c'est pour quitter------------
MOV AH,24h
CMP AH,AL
JZ quitterLePrg
JMP normal
aLaLigne: ;++++++++++++++++++++++++++++++
;Ecrire dans le fichier
LEA DX,retourT
MOV BX,handleFichier
SUB CX,CX
MOV CL,2 ;nombre de caractère a ecrire
CALL ecrireFichier
;Afficher la lettre
LEA DX,blanc
CALL afficheTexte
JMP continue
backSpace: ;++++++++++++++++++++++++++++++
;Ecrire dans le fichier
JMP continue
quitterLePrg: ;+++++++++++++++++++++++++++
;Fermer le Fichier
MOV BX,handleFichier
CALL fermerFichier
;Quitter le Programme
CALL quitter
normal:
PUSH CX
;Ecrire normalement une lettre++++++++++++++
;Ecrire dans le fichier
LEA DX,[texte+DI]
MOV BX,handleFichier
SUB CX,CX
MOV CL,1 ;nombre de caractère a ecrire
CALL ecrireFichier
;Afficher la lettre
INC DI
MOV [texte+DI],24h
DEC DI
LEA DX,[texte+DI]
CALL afficheTexteEcrire
continue:
POP CX
INC DI
LOOP boucleTexte
;Fermer le Fichier
MOV BX,handleFichier
CALL fermerFichier
;Fin du programme =======================
;****************************************
MOV ah,4ch
MOV al,0
INT 21h
main ENDP
;#####################################
afficheTexte PROC USES AX
;Affiche le texte envoyé
;Entrée DX : offset du texte à afficher
;
;Sortie Texte à l'écran
;#####################################
MOV AH,09h
INT 21h
;retour a la ligne------------------
LEA DX,retour
MOV AH,09h
INT 21h
RET
afficheTexte ENDP
;#####################################
afficheTexteEcrire PROC USES AX
;Affiche le texte envoyé
;Entrée DX : offset du texte à afficher
;
;Sortie Texte à l'écran
;#####################################
MOV AH,09h
INT 21h
RET
afficheTexteEcrire ENDP
;#####################################
demandeTexte PROC USES AX
;Demande le texte et le met dans un tableau
;Entrée DX : offset du Tableau (interuption)
;
;Sortie Aucune
;#####################################
;entree la valeur ------------------------
MOV AH,0Ah ;fonction
INT 21h ;interruption
;retour a la ligne--------------------
LEA DX,retour
MOV AH,09h
INT 21h
RET
demandeTexte ENDP
;#####################################
ecrireTexte PROC
;Pour ecrire du texte demande lettre par lettre
;Entrée -
;
;Sortie AL : caractère ecrit
;#####################################
;entree la valeur ------------------------
MOV AH,07h ;fonction
INT 21h ;interruption
RET
ecrireTexte ENDP
;#####################################
transASCII PROC
;Transforme un nombre ASCII en chiffre
;Entrée AL : nombre en ASCII
;
;Sortie AL : nombre en chiffre
;#####################################
SUB AL,48d
RET
transASCII ENDP
;#####################################
ajouteExt PROC
;Ajoute à la fin du nom du fichier l'extension avec le signe de fin
;Entrée strLuNom : nom du fichier
; nCarLuNom : nombre caractere entrée
;
;Sortie -
;#####################################
SUB AH,AH
MOV AL,nCarLuNom
MOV SI,AX
;.txt$
MOV [strLuNom+SI],46d
INC SI
MOV [strLuNom+SI],116d
INC SI
MOV [strLuNom+SI],120d
INC SI
MOV [strLuNom+SI],116d
INC SI
MOV [strLuNom+SI],24h
RET
ajouteExt ENDP
;#####################################
nouveauFichier PROC
;Cree un nouveau fichier
;Entrée DS : @segment du nom du fichier
; DX : @offset du nom du fichier
;
;Sortie -
;#####################################
MOV AH,3Ch
INT 21h
;Si le Carry est à 1 alors lancer la procedure qui va voire le type d'erreur
JNC pasLancerAffichageErreurNouveau
CALL typeErreur
pasLancerAffichageErreurNouveau:
RET
nouveauFichier ENDP
;#####################################
ouvrirFichier PROC
;Ouvre un fichier
;Entrée DS : @segment du nom du fichier
; DX : @offset du nom du fichier
; AL : Mode d'accès
;
;Sortie AX : OK(Handle) ou Code erreur
;#####################################
SUB AX,AX
MOV AH,3Dh
INT 21h
;Si le Carry est à 1 alors lancer la procedure qui va voire le type d'erreur
JNC pasLancerAffichageErreurOuvrir
CALL typeErreur
pasLancerAffichageErreurOuvrir:
RET
ouvrirFichier ENDP
;#####################################
typeErreur PROC USES BX
;Indique le Type d'erreur (Optimisation faire relancer le prg)
;Entrée AX : Code de l erreur
;
;Sortie Affiche à l ecran le type d erreur
;#####################################
MOV BX,1
CMP AX,BX
JZ FileSharing
MOV BX,2
CMP AX,BX
JZ nonFichier
MOV BX,3
CMP AX,BX
JZ cheminFaux
MOV BX,4
CMP AX,BX
JZ plusHandle
MOV BX,5
CMP AX,BX
JZ accesRefuse
MOV BX,6
CMP AX,BX
JZ nonHandle
MOV BX,12
CMP AX,BX
JZ nonMode
;Erreur de manque de logiciel de File Sharing
FileSharing:
LEA DX,FileSharingT
CALL afficheTexte
CALL quitter
;Fichier non trouvé
nonFichier:
LEA DX,nonFichierT
CALL afficheTexte
CALL quitter
;Chemin non trouvé
cheminFaux:
LEA DX,cheminFauxT
CALL afficheTexte
CALL quitter
;Plus de Handle libre
plusHandle:
LEA DX,plusHandleT
CALL afficheTexte
CALL quitter
;Acces Refusé
accesRefuse:
LEA DX,accesRefuseT
CALL afficheTexte
CALL quitter
;Handle non autorise ou fichier correspond non ouvert
nonHandle:
LEA DX,nonHandleT
CALL afficheTexte
CALL quitter
;Mode d acces non autorise
nonMode:
LEA DX,nonModeT
CALL afficheTexte
CALL quitter
RET
typeErreur ENDP
;#####################################
lireFichier PROC USES BX CX
;lire un fichier
;Entrée DS : @segment du buffer
; DX : @offset du buffer
; BX : Handle du fichier
; CX : Nombre d octel a lire
;
;Sortie AX : nbr d octels lus ou Code erreur
;#####################################
SUB AX,AX
MOV AH,3Fh
INT 21h
;Si le Carry est à 1 alors lancer la procedure qui va voire le type d'erreur
JNC pasLancerAffichageErreurLire
CALL typeErreur
pasLancerAffichageErreurLire:
RET
lireFichier ENDP
;#####################################
fermerFichier PROC
;ferme un fichier
;Entrée BX : Handle à fermer
;
;Sortie AX : OK(Handle) ou Code erreur
;#####################################
SUB AX,AX
MOV AH,3Eh
INT 21h
;Si le Carry est à 1 alors lancer la procedure qui va voire le type d'erreur
JNC pasLancerAffichageErreurFermer
CALL typeErreur
pasLancerAffichageErreurFermer:
RET
fermerFichier ENDP
;#####################################
ecrireFichier PROC USES BX CX
;ecrire dans un fichier
;Entrée DS : @segment du buffer
; DX : @offset du buffer
; BX : Handle du fichier
; CX : Nombre d octel a ecrire
;
;Sortie AX : nbr d octels lus ou Code erreur
;#####################################
SUB AX,AX
MOV AH,40h
INT 21h
;Si le Carry est à 1 alors lancer la procedure qui va voire le type d'erreur
JNC pasLancerAffichageErreurLire
CALL typeErreur
pasLancerAffichageErreurLire:
RET
ecrireFichier ENDP
;#####################################
quitter PROC
;quitter le prg
;Entrée -
;
;Sortie -
;#####################################
MOV ah,4ch
MOV al,0
INT 21h
RET
quitter ENDP
END main
Sources de la même categorie
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
convertir un fichier ascci en fichier texte afin de pouvoir imprimer corectemen sur une imprimante laser [ par kamie ]
KamieBonjour à tous,j'ai un petit problème et je ne sais pas comment faire.j'ai un fichier qui est de format ascii.lorsque nous imprimons ce fichier s
Pas belle police de texte ! Ouinnn ! [ par Bombela ]
Salut !Je fais de la prog Windows en C++ et Asm depuis peux et les progs que je fais, que ça soit en C++ ou Asm, on une police toute grasse et pas bel
besoin d'aide pour de l'assembleur sous simulateur [ par critchou ]
Bonjour, j'ai un programme à faire pour mercredi et je ne sais pas trop comment faire.Je dois écrire un texte (jusque là, ça va) et compter le nombre
COULEUR DE TEXTE LORS DU PASSAGE DE LA SOURIS [ par knetus12 ]
salut a tousj'ai un probleme pour faire changer la couleur d'un texte quand la souris passe dessus ca na marche pas pourquoi ??? .ELSEIF uMsg ==
algorithme huffman [ par yannenater ]
salut,je voulais savoir si qqun pouvait m'aider pour trouver comment coder en ASM 68000 l'algo de huffman pour compresser un petit texte. le tout débu
Affichage texte (Debutant) [ par ffomnislash ]
BonjourJe debute en assembleur et je voudrais pouvoir afficher du texte en boucle, ceci j'y arrive sans pb mais le texte se rajouteAutrement dit j'ai
texte défilant de gauche à droite [ par julemi ]
Pouvez-vous m'envoyer le code source d'un programme qui fait défiler un texte de gauche à droite en language assembleur ...Merci
comment transformer un éditeur en compilateur [ par rhumsek ]
bonjour je possède un éditeur qui s'appel textpad, et je voudrais le configurer de façon à se qu'il puisse compilé des programme en assembleur, je pro
macro avec parametre [ par mat74 ]
salut a ts , voila j'essaie de créer une fonction , un macro en fait qui permetrait d'afficher le msg passer en parametre j'ai fait qqs essaies et sa
Code HUFFMAN en asm 68000 [ par arnaud gasnier ]
salut,je voulais savoir si qqun pouvait m'aider pour trouver comment coder en ASM 68000 l'algo de huffman pour compresser un petit texte. le tout d
|
Derniers Blogs
TECHDAYS PARIS 2010 : CONNECTEZ VOS DONNéES à SHAREPOINT 2010 AVEC LES BUSINESS CONNECTIVITY SERVICESTECHDAYS PARIS 2010 : CONNECTEZ VOS DONNéES à SHAREPOINT 2010 AVEC LES BUSINESS CONNECTIVITY SERVICES par ROMELARD Fabrice
Animé par: Gaetan Bouveret et Julien Chomarat Business Connectivity Services (BCS) est dans SharePoint 2010 la version 2 de Business Data Catalog (BDC dans SharePoint 2007). Il s'agit de la solution permettant de visualiser des données provenan...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice [DIVERS] SUIVRE VOS SéRIES PRéFéRéS SUR LA TOILE[DIVERS] SUIVRE VOS SéRIES PRéFéRéS SUR LA TOILE par orion
Comme de nombreux geek, je suis un grand amateur de série TV et je rate régulièrement des épisodes de mes séries préférés. Une solution s'offre à vous avec ce merveilleux site : Tv Gorge - www.tvgorge.com Moteur de recherche à l'appui, vous pouvez ...
Cliquez pour lire la suite de l'article par orion TECHDAYS PARIS 2010 : LA BI DANS SHAREPOINT 2010TECHDAYS PARIS 2010 : LA BI DANS SHAREPOINT 2010 par ROMELARD Fabrice
Animé par: Vincent Bellet et Baptiste Giraudier La BI dans SharePoint 2010, Les nouveaux services d'application dans SP2010 et SQL Server Reporting services 2008 R2. La BI dans SharePoint est généralisée pour tous afin de permettre à tous les coll...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice TECHDAYS PARIS 2010 : PLAN DE MIGRATION VERS SHAREPOINT 2010TECHDAYS PARIS 2010 : PLAN DE MIGRATION VERS SHAREPOINT 2010 par ROMELARD Fabrice
Animé par: Arnault Nouvel et Antoine Dongois Le processus à prendre : Apprendre (découvrir la plateforme) Préparer (documenter l'historique et choisir la méthode de MAJ) Test (Test de MAJ) Implémenter (Effectuer la MAJ) Valid...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Forum
RE : PIC 16F84RE : PIC 16F84 par pont
Cliquez pour lire la suite par pont RE : PIC 16F84RE : PIC 16F84 par belounis
Cliquez pour lire la suite par belounis RE : PIC 16F84RE : PIC 16F84 par pont
Cliquez pour lire la suite par pont
Logiciels
DB-MAIN (9.1.0)DB-MAIN (9.1.0)DB-MAIN is a data-modeling and data-architecture tool. It is designed to help developers and anal... Cliquez pour télécharger DB-MAIN Xilisoft DPG Convertisseur (5.1.37.0120)XILISOFT DPG CONVERTISSEUR (5.1.37.0120)Xilisoft DPG Convertisseur offre aux fans de Nintendo DS une bonne solution leur permettant de dé... Cliquez pour télécharger Xilisoft DPG Convertisseur GraphicsGale (2.01.01)GRAPHICSGALE (2.01.01)GraphicsGale est un logiciel de PixelArt avec de nombreuse fonctionnalités permettant de réalisé ... Cliquez pour télécharger GraphicsGale Architecte 3D (Platinum 2010)ARCHITECTE 3D (PLATINUM 2010)Architecte 3D Platinium vous permet de concevoir facilement les plans votre future maison, de l'é... Cliquez pour télécharger Architecte 3D TeamViewer 5 (TeamViewer 5)TEAMVIEWER 5 (TEAMVIEWER 5)Dépanner un ami,expliquer une manipulation devient un jeu d'enfant.
Prise en main d'un autre ord... Cliquez pour télécharger TeamViewer 5
|