Il y a actuellement 258 visiteurs
Mardi 23 Avril 2024
accueilactualitésdossierscomparer les prixtélécharger gratuitement vos logicielsoffres d'emploiforum informatique
Connexion
Créer un compte

CHAMSSUN

Ce membre n'a pas encore choisi d'avatar
Visiteur
Visiteur
Nom d'utilisateur:
CHAMSSUN
Emploi:
etudiant
Groupes:

Contacter CHAMSSUN

WLM:
chams-sun@hotmail.fr
YIM:
Envoyer un message YIM

Statistiques de l’utilisateur

Inscription:
22 Déc 2007 21:32
Dernière visite:
02 Jan 2008 17:01
Messages:
1 (0.00% de tous les messages / 0.00 messages par jour)
Forum le plus actif:
Forum Programmation, Web & Ftp
(1 Message / 100.00% des messages de l'utilisateur)
Sujet le plus actif:
aide assembleur
(1 Message / 100.00% des messages de l'utilisateur)

Les derniers messages de CHAMSSUN

Message aide assembleur
bonjour tous le monde, c'est ma premiere participation à ce forum, je salut tous le monde et je vous souhaite une bonne nouvelle année 2008...
en effet je cherche de l'aide pour realiser mon tp en assembleur.
voici l'enoncé :

Sous le systeme d'exploitation DOS, il existe deux situation dans lesquelles un programme peut etre terminé pratiqment à n'importe quel moment du fait de l'intervention d'événements échappant totalement au contrôle du programme, Ces situation survienent lorsque l'utilisateur actionne la touche <Ctrl_Break> ou bien lorsqu'apparait , lors de l'acce a un peripherique externe (imprimante, disque dur, lecteur de dicquette , etc...), un défaut parteculierement grave. Un arrét brusque du programme ne va pas sans poser de problemes. Le programme se termine par le fait que le DOS reprend le contrôle de l'exucution, de sorte que les instruction normalement exécutéés lors de la fin réguliere du programme se trouvent tout simplement ignioreéés. Ilon resulte que les fichiers ouverte ne sont pas fermes comme il conviendrait, que les vecteurs d'interruption rediriges ne sont pas restaurs et que la memoire allouée n'est pas restaurée. Toutes ces concequences peuvent déboucher sur une perte de données ou meme sur le plantage du systeme

Si pendant l'accés à un disque, un probleme survient (Disquette protégée contre l'ecriture, Unite de disquette non prete, ...), l'interruption 24h est automatiqment déclenchée invoquant une routine qui sort sur l'ecran le message bien connu « (A)bort, (R)etry ,(I)gnore »et attend une entrée de l'utilisateur. Pour pouvoir localiser l'erreur. Le D.O.S transmet à cette routine dans les 8bits de faible poids de DI un code d'erreur:

00h Disquette protégeée contre l'ecteure
01h Acces à un peripherique inconnu
02h Unité de disquette n'est pas préte
03h Ereure inconue
04h Ereure CRC
05h Longueur de données erronnée
06h Erreure de recherche
07h Type de péripherique inconnu
08h Secteur non trouvé
09h Plus de papier dans l'imprimente
0Ah Ereure d'ecriture
0Bh Ereure de lecteure
0Ch Ereure générale

le D.O.S attend alors que lui soit transmis dans le registre AL un code indiquant comment il doit réagir à l'erreure:


00h Igniorer l'erreur
01h Répéter l'operation
02h Terminer le programme à travrs l'interruption 23h
03h Terminer la fonction appelée avec erreur (positionne le flag carry)

Lobjet de ce T.p consistera à écrire un programme redirigeant cette interruption sur routine à lui . De façon à garder le contrôle des évenement lorsq'une erreure critique survient.

La nouvelle rouytine de gestion de l'interuption 24h (Traite_Erreure_critique), ce doit de positionner un flag (flag_Erreure_ critique). D'afficher un message indique le type de d'erreure . Puis de redonner la main au D.O.S avec un code de retoure 03h(Terminer la fonction appéleée)

Apre la rentative ou d'arreter la programme . Dans le derniere cas , unez simulation d'une arrét propre du programme zsera engagée. Le programme pouyrra étre teste en rentant d'ouvrir un fichier

sur une unite disque nonpréte(Exp: disquette inexistant).

1.Commencer par edevelopper les routines et macros suivantes:
Traite_erreure_critiquePROC FAR
Cette vroutine prendra en charge la gestion de l'interruption Erreur_Critique(24).
(Voir description çi dissus)

Redirige_Int MACRO Num_Int , Adr Seg routine ,Adr_ofs_routine

Cette macro ce edoit de modifier léentrée 'Num_Int du vecteur D'intereptions par l'adresse de la routine (dans notre cas Traite_erreure _critique)spesifiée en parametre .


Ouvrire_fichier MACRO nom fichier
Ouvrire le fichier 'nom fichier 'en mode lecteure
cette routine simuler la fonction principale du programme sur le quel sera exprimenté la technique de detournement de l'interruption 24h

Remarque1:

pour le developpement del a macro redige_int, on pourra faire appel à la fonction suivante de l'inturruption 21h

du DOS:
interruption : 21H
num. fonction : 25H
definition cette fonction permet de modifier une adresse dans le vecteur d'interruption pour qu'elle pointe vers une routine particuliére de traitement d'interruption.

Parametres d'entrés:
AH :25H
AL : numéro de l'interruption dont l'adresse dans le vecteur d'interruption sera modifié.
DS DX : segment : offset de la nouvelle routine de traitement de l'interruption dont le num est identique dans AL.
Néant.


Remarque 2:

pour le developpement de la macro 'ouvrir_fichier », on pourra faire appel a la fontion suivante de l'interruption 21h du DOS:

interruption : 21H
num.fontion 3dH
definition :
cette fonction permet d'ouvrir sur un disque un fichier en lecture/ecriture.
Parametres d'entrée:
AH : 3dH
AL : mode d'ouverture du fichier (lecture 0)
DS : DX: segment offset la chaine contenant le nom ainsi que le chemin d'accès du fichier à ouvrir (exp: a: est.txt)
parametre de sortie :
néant.


2- ecrire le programme final en integrant les rouitines et macros de la question 1. :D



.: Nous contacter :: Flux RSS :: Données personnelles :.