You are on page 1of 8

Exercice 1

Proposer un programme permettant de ranger en mmoire dans l'ordre croissant l'ensembles des
donnes 8 bits non
signes partir de l'adresse de base $0100
Corrig1 :
ORG $0000 * Dbut du programme
LDX #$0100 * Dbut de table
LDA #$00 * 1ere donnes $00
Boucle STA ,X+ * Chargement et incrmentation du pointeur
CMPA #$FF * Dernire donne = $FF alors fin de programme
BEQ Fin
INCA * Incrmentation de la donne
BRA Boucle
Fin SWI
Exercice 2 :
Faire la mme chose pour l'ensemble des donnes 8 bits signes partir de l'adresse de base $0200.
Corrig 2 :
ORG $0000 * Dbut du programme
LDX #$0200 * Dbut 1ere donne ngative
LDY #$0280 * Dbut 1ere donne positive
LDA #$FF * 1ere donne ngative $FF
Boucle STA ,X+ * Chargement et incrmentation du pointeur X
CMPA #$80 * Si donne = $80 fin des donnes ngatives
BEQ Positif
DECA * Dcrmentation de la donne
BRA Boucle
Positif LDA #$00 * 1ere donne positive
Boucle1 STA ,Y+ * Chargement et incrmentation du pointeur Y
CMPA #$7F * Si donne = $7F fin des donnes positives
BEQ Fin
INCA * Incrmentation de la donne
BRA Boucle1
Fin SWI
Exercice 3 :
Proposer un programme permettant d'effectuer le comptage des donnes positives, ngatives et
nulles dune table de
nombres signs de 8 bits. Le programme devra permettre de stocker ces rsultats aux adresses
$0050, $0051,$0052
par exemple.
Corrig 3 :
TABLE EQU $1000 * Dclaration du dbut de table
FIN_TAB EQU $1009 * Dclaration du pointeur de fin de table
ORG $0000 * Dbut du programme
LDX #TABLE * Chargement du pointeur
Boucle CMPX #FIN_TAB+1 * Si le pointeur dpasse la fin de la table
BEQ FIN * alors FIN
LDA ,X+ * Chargement et incrmentation du pointeur
BMI Negatif * Si l'opration est ngative > Ngatif
BEQ Nul * Si A = 0 > Nul
LDB >$0050 * Sinon la donnes est positive
INCB * Incrmente le compteur situ en $0050
STB >$0050 * On mmorise la valeur
BRA Boucle
Negatif LDB >$0051 * La donnes est ngative
INCB * Incrmente le compteur situ en $0051
STB >$0051 * On mmorise la valeur
BRA Boucle
Nul LDB >$0052 * La donnes est nulle
INCB * Incrmente le compteur situ en $0052
STB >$0052 * On mmorise la valeur
BRA Boucle
FIN SWI
ORG $1000 * Dbut de la TABLE
FCB 1,1,0,5,8,7,0,9,2,6
Exercice4 :
Proposer un programme permettant d'effectuer le comptage du nombre de donnes paires et
impaires dune table.
Corrig 4 :
TABLE EQU $1000 * Dclaration du dbut de table
FIN_TAB EQU $1009 * Dclaration du pointeur de fin de table
ORG $0000 * Dbut du programme
LDX #TABLE * Chargement du pointeur
Boucle CMPX #FIN_TAB+1 * Si le pointeur dpasse la fin de la table
BEQ FIN * alors FIN
LDA ,X+ * Chargement et incrmentation du pointeur
ANDA #$11 * ET logique avec $11 pour connatre la parit
CMPA #$00 * Si A = 0 la donne est paire > Pair
BEQ Pair
LDB >$0050 * Sinon la donne est impaire
INCB * Incrmentation du compteur
STB >$0050 * Mmorisation du compteur
BRA Boucle
Pair LDB >$0051 * La donne est paire
INCB * Incrmentation du compteur
STB >$0051 * Mmorisation du compteur
BRA Boucle
FIN SWI
ORG $1000 * Dbut de la TABLE
FCB 1,2,3,4,5,6,7,8,9,0
Exercice 5 :
Proposer un programme permettant de compter le nombre de donnes d'une table dont le bit b
3est gal 1


Corrig 5 :
Commentaires
Pour connatre l'tat du bit 3 d'un nombre de 8 bit, il suffit de faire un ET logique entre ce mot et
$08, si le rsultat est
gal 0, le bit 3 est 0, sinon le bit 3 est 1
TABLE EQU $1000 * Dclaration du dbut de table
FIN_TAB EQU $1009 * Dclaration du pointeur de fin de table
ORG $0000 * Dbut du programme
LDX #TABLE * Chargement du pointeur
Boucle CMPX #FIN_TAB+1 * Si le pointeur dpasse la fin de la table
BEQ FIN * alors FIN
LDA ,X+ * Chargement et incrmentation du pointeur
ANDA #$08 * ET logique avec $08 pour savoir si bit3=1
CMPA #$00 * Si A = 0 bit3=0 > Boucle
BEQ Boucle
LDB >$0050 * Sinon bit3=1
INCB * Incrmentation du compteur
STB >$0050 * Mmorisation du compteur
BRA Boucle
FIN SWI
ORG $1000 * Dbut de la TABLE
FCB 1,2,3,4,5,6,7,8,9,0
Exercice6 :
Soit le nombre hexadcimal X
1=$23.
Mettre au point un programme permettant de trouver le nombre X2tel que le produit X1*X2soit
strictement infrieur
$0299.
Corrig 6 :
Commentaire
Pour connatre X
2, on incrmente un mot de 8 bit que l'on multiplie $23, puis on teste le rsultat pour savoir s'il
est
suprieur ou gal la valeur que l'on recherche. Si c'est le cas, la valeur de X
2
est donc le mot de 8 bit 1, puisque l'on
dsire obtenir un rsultat strictement infrieur.
ORG $0000 * Dbut du programme
LDA #$23 * Chargement de la valeur multiplier X1
LDB #$01 * Chargement de la 1ere valeur
BOUCLE STB $1000 * Mise en mmoire de laccumulateur B
MUL * Multiplication de A par B
CMPD #$0299 * Si A.B est infrieur ou gal $0299
BHS RESULT * alors RESULT
LDB >$1000 * Recharge de l'accumulateur B
INCB * Incrmentation de l'accumulateur B
LDA #$23 * Recharge de l'accumulateur A
BRA BOUCLE
RESULT LDB >$1000 * Recharge de l'accumulateur B
DECB * Dcrmentation de l'accumulateur B
SWI
Exercice7 :
On dispose d'une table de 10 donnes de 8 bits choisies arbitrairement. Proposer un programme de
recherche de la
donne maximale et de la donne minimale de la liste, les nombres considrs tant non signs.

Corrig 7 :
Commentaire
Pour connatre le MIN et le MAX d'une table, on enregistre d'abord la 1
re
donne dans MIN et dans MAX, puis on
vient les comparer avec la valeur suivante. Si la nouvelle donne est plus grande que la valeur
contenue dans MAX,
on met da nouvelle valeur dans MAX, on procde de manire identique pour la valeur MIN. Dans le
cas ou la valeur
n'est ni un MIN, ni un MAX, on pointe sur la valeur suivante de la table.
MIN EQU $0050 * Dclaration de l'adresse du MAX
MAX EQU $0060 * Dclaration de l'adresse du MIN
TABLE EQU $1200 * Dclaration du pointeur de fin de table
ORG $0000 * Dbut du programme
LDX #TABLE * Chargement du pointeur
LDA ,X+ * Chargement et incrmentation du pointeur
STA >MAX * Mmorise la 1ere valeur dans MAX
STA >MIN * Mmorise la 1ere valeur dans MIN
Boucle CMPX #TABLE+10 * Si le pointeur dpasse la fin de la table
BEQ FIN * alors FIN
LDA ,X * Chargement et incrmentation du pointeur
CMPA >MAX * Si A > MAX > Hight
BHI Hight
LDA ,X * Chargement et incrmentation du pointeur
CMPA >MIN * Si A < MIN > Low
BLO Low
LDA ,X+ * Chargement et incrmentation du pointeur
BRA Boucle
Hight LDA ,X+ * Chargement et incrmentation du pointeur
STA >MAX * Mmorise la valeur dans MAX
BRA Boucle
Low LDA ,X+ * Chargement et incrmentation du pointeur
STA >MIN * Mmorise la valeur dans MIN
BRA Boucle
FIN SWI
ORG $1200 * Dbut de la TABLE
FCB 2,2,3,4,5,0,7,7,7,7
Exercice8 :
Complter ce programme de sorte qu'il soit capable de dterminer galement le maximum et le
minimum lorsque les
donnes sont signes.
Corrig9
MIN EQU $0050 * Dclaration de l'adresse du MAX
MAX EQU $0060 * Dclaration de l'adresse du MIN
TABLE EQU $1200 * Dclaration du pointeur de fin de table
ORG $0000 * Dbut du programme
LDX #TABLE * Chargement du pointeur
LDA ,X+ * Chargement et incrmentation du pointeur
STA >MAX * Mmorise la 1ere valeur dans MAX
STA >MIN * Mmorise la 1ere valeur dans MIN
Boucle CMPX #TABLE+10 * Si le pointeur dpasse la fin de la table
BEQ FIN * alors FIN
LDA ,X * Chargement et incrmentation du pointeur
CMPA >MAX * Si A > MAX > High

Exercice9 :
Exercice10 :
Exercice 11 :
Exercice12 :

You might also like