Professional Documents
Culture Documents
7. Interruption logicielle
Moyen dappeler une fonction
(appeles traitants)
2. Adressage indirect sans en connatre ladresse
Moyen daccs une donne en mmoire
localise en mmoire
par une adresse range
dans un registre
utile pour laccs un tableau 8. Table dindirection
(ou des vecteurs dinterruption)
Lieu de stockage des adresses
3. Pile des fonctions appeles par
Un tableau de valeurs la gestion INT n
automatique et transparente A l@4xn, on a l@ de la fonction n
par un pointeur
localisant le haut (dernire valeur)
permettant lajout dune valeur dessus 9. Fonctions BIOS
( la suite de celles qui y sont dj) Bibliothque de fonctions bas niveau
et le retrait de la dernire pose accessibles par interruptions logicielles
4. Procdure ou fonction stockes dans la ROM de la machine
Suite dinstructions en mmoire
que lon excute sur appel
en donnant son adresse
de plusieurs endroits diffrents
et qui peut revenir automatiquement 10. Fonctions DOS
lendroit de lappel fonctions de moins bas niveau
accessibles par une fonction BIOS
5. Paramtres dune fonction (21H)
Valeurs passe une fonction diffrencies par un paramtre de la
peuvent tre passe par pile fonction BIOS
ou par registre
RTA stocke une adresse fournie pour aller chercher une valeur en mmoire
B. Fonctionnement de la machine
Donnez, dans lordre, les transferts lmentaires effectues au cours de lexcution des instructions
suivantes. Les transferts lmentaires sont de registre registre, de registre bus ou de bus registre (il
faut alors prciser lidentit des registres, des bus, voire des valeurs transmises par exemple dans le cas
dincrmentations)
1. INC AX 3. ADD AX,[BX]
*IP @bus *IP @bus
*databus RI *databus RI
AX + 1 AX BX @bus
*IP + ? IP databus RTAX
* : ces 3 lignes se retrouvent partout. AX + RTAX AX
2. MOV AX,[A320]
*IP + ? IP
*IP @bus 4. PUSH AX
*databus RI *IP @bus
IP + ? IP *databus RI
databus RTA SP - 2 SP
RTA @bus SP @bus
databus AX AX databus
*IP + ? IP *IP + ? IP
C. Bloc dinstructions
Dans le cadre de la rupture du schma linaire dexcution des instructions, expliquez la diffrence
entre un saut (JMP), un appel (CALL) et une interruption logicielle (INT).
JMP va ladresse donne (qui dailleurs est calcule en relatif)
(le retour - non prvu - est faire par un autre JMP).
CALL dispense de fournir ladresse de retour
en empilant ladresse de retour (IP) en prvision de lutilisation de RET.
INT dispense mme de fournir ladresse destination
en allant la chercher dans la table dindirection (empile CS:IP et tat, retour IRET)
IUT Villetaneuse Architecture des ordinateurs Jeudi 06 mars 2002-2003
GTR 1re anne Contrle Long n1 p3/5
fin:
IUT Villetaneuse Architecture des ordinateurs Jeudi 06 mars 2002-2003
GTR 1re anne Contrle Long n1 p5/5
/10 V. Pile
1. Voici une fonction assembleur et son appel.
Voici lappel : on suppose que DX contient ladresse de la chane de caractres suivie dun 0.
PUSH DX
CALL fun ;1
ADD SP,2 ;4
MOV DX,AX
MOV AH,09H
INT 21H
Voici le corps de la fonction :
fun PROC NEAR
PUSH BP
MOV BP,SP
PUSH BX ;2
MOV BX,[BP+4]
nxt: MOV AL,[BX]
CMP AL,0
JE fini
CMP AL,' '
JNE fini
INC BX
JMP nxt
fini:MOV AX,BX
POP BX
MOV SP,BP
POP BP ;3
RET
fun ENDP
2. Reprsentez ltat de la pile (contenu et pointeurs) APRES lexcution des instructions repres par
des commentaires (chaque case fait deux octets, laissez vide les espaces libres).
SP2
BX BX BX
BP0 BP2 BP0 BP0
SP1 SP3
@ret @ret @ret @ret
4. Sachant que la fonction 09h du DOS affiche une chane de caractres dont ladresse est passe par
DX, dites ce que fait le programme.
Cest sens afficher la chane sans les espaces,
(mais a plante car elle ne finit pas par un $)