aide assembleur


CHAMSSUN Membre 1 message
Baby Forumeur‚
Posté(e)

bonjour tous le monde :snif: , c'est ma premiere participation à ce forum :snif: , 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. :o

voici l'enoncé : :o

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'intereption 24h est automatiqment déclenchée invoquant une routine qui sort sur l'ecran le message bien connu « (A)bort, ®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'erreure:

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)

Redeirige_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 :DS : 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:\test.txt)

parametre de sortie :

néant.

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

Partager ce message


Lien à poster
Partager sur d’autres sites
Annonces
Maintenant

Messages recommandés

buzeclair Membre 5 474 messages
Vers l'infini et au delà!!!‚ 38ans
Posté(e)
:snif: Bienvenu à toi !!!!!!!!!!!!!!!!!!!!!!

Partager ce message


Lien à poster
Partager sur d’autres sites
Méthylbro VIP 1 038 messages
Ours des Pyrénées 100% AOC‚
Posté(e)

d'abord ; quand on arrive sur un forum ; on se présente .

Ensuite ; qu'est ce que tu crois ; qu'on va faire ton TP ?

On peut t'aider en répondant a des questions que tu peut te poser ... Mais crois moi ; on ne fera pas ton tp ... Espèce de sale feignasse ; c'est pas comme ca que tu apprendra l'assembleur.

Partager ce message


Lien à poster
Partager sur d’autres sites

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant