Informatique Industrielle : TD 1 Microprocesseur
Télécharger PDFExercice 1 : Résultats des instructions
1- Après LDA #$56, le registre A contient $56.
2- Après ADDD #$5006, CLRA, COMB et STD $500A, les registres A et B contiennent respectivement $00 et $00, et l’adresse $500A contient $E6D5 + $5006 = $36DC.
3- Après NEGB, INCB, ADDD #$46, SUBB #$46 et STB $5002, le registre B contient $00 et l’adresse $5002 contient $00.
Exercice 2 : Modes d’adressage et résultats
Analyse des instructions
CLRB : Le registre B est mis à $00.
LDA #$0C : Le registre A contient $0C.
STA $0100 : L’adresse $0100 contient $0C (mode adressage direct).
LDA #$01 et TFR A,DP : Le registre DP (Data Page) contient $01.
LDA #$A7 et STA $01 : L’adresse $01A7 contient $A7 (mode adressage direct avec DP).
LDX #$0100 : Le registre X contient $0100.
Loop1 : LDA ,X : Charge $0C dans A (adresse $0100).
INCB : Incrémente B de 1.
ADDA B,X : A = $0C + $0C = $18 (adresse $0100 + $0001).
STA ,X+ : Stocke $18 à $0101 et incrémente X.
CMPX #$0001 et Beq loop1 : Compare X à $0101 (car DP = $01 et X = $0100 + $0001).
BRA loop2 : Retourne à loop2.
Contenu mémoire après exécution
Adresse $0100 : $0C
Adresse $0101 : $18
Adresse $01A7 : $A7
Registre B : $01
Registre X : $0101
Exercice 3 : Programme de copie et soustraction
Copie des valeurs
LDA #$46
STA $0030
LDA #$61
STA $00C0
LDA #$07
STA $0110
LDA #$46
STA $0190
Soustraction des constantes
LDA #$55
SUBA #$55
STA $0020
LDA #$45
STA $0020
SUBA $0020
STA $0020
Soustraction avec retenue
LDA #$00
TFR A,DP
LDD $0020
SUBA $0071
STA $0071
Exercice 5 : Addition de deux nombres binaires (N et M)
a) Mode adressage étendu
LDA $1010
ADDA $1011
STA $1020
b) Mode adressage direct
LDA
ADDA
STA
c) Mode adressage indexé (X)
LDX #$1010
LDA $1010,X
ADDA $1011,X
STA $1020,X
Exercice 6 : Addition des nombres de $30 à $40
LDX #$30
LDD #$0000
Loop: ADDD $30,X
LEAX $0001,X
CMPX #$41
BNE Loop
STD $50
Exercice 7 : Transfert de 16 octets
Transfert normal
LDX #$120
Loop: LDA ,X
STA $170,X
LEAX $0001,X
CMPX #$130
BNE Loop
Transfert avec inversion des octets
LDX #$120
Loop: LDA ,X
STA $17F,X
LEAX $0001,X
CMPX #$130
BNE Loop
Exercice 8 : Produit arithmétique de deux nombres binaires
a) Mode adressage étendu
LDA $0040
LDD $0041
PSHS A
PSHS B
PULS A,B
MUL
STA $0050
STB $0051
b) Mode adressage direct
LDA
LDD
PSHS A
PSHS B
PULS A,B
MUL
STA
STB
c) Mode adressage indexé (X)
LDX #$0040
LDA $0040,X
LDD $0041,X
PSHS A
PSHS B
PULS A,B
MUL
STA $0050,X
STB $0051,X
Exercice 9 : Addition arithmétique de deux nombres binaires sur 16 bits
a) Mode adressage étendu
LDA $4000
ADDA $4002
STA $4004
LDA $4001
ADCA $4003
STA $4005
b) Mode adressage direct
LDA
ADDA
STA
LDA
ADCA
STA
c) Mode adressage indexé (X)
LDX #$4000
LDA $4000,X
ADDA $4002,X
STA $4004,X
LDA $4001,X
ADCA $4003,X
STA $4005,X
Exercice 10 : Multiplication arithmétique de deux nombres binaires sur 16 bits
a) Mode adressage étendu
LDA $4000
LDD $4002
PSHS A
PSHS B
PULS A,B
MUL
STA $4004
STB $4005
b) Mode adressage direct
LDA
LDD
PSHS A
PSHS B
PULS A,B
MUL
STA
STB
c) Mode adressage indexé (X)
LDX #$4000
LDA $4000,X
LDD $4002,X
PSHS A
PSHS B
PULS A,B
MUL
STA $4004,X
STB $4005,X
Exercice 11 : Recherche du max/min et tri décroissant
Recherche du max et min
LDX #$0200
LDA $0200,X
STA $0202
LDD $0200,X
Loop: LEAX $0001,X
LDA $0200,X
CMPA $0202
BLS Min
STA $0202
BRA Next
Min: STA $0203
Next: LEAX $0001,X
CMPX #$0202
BNE Loop
Tri décroissant
LDX #$0200
LoopExt: LEAY $0001,X
LoopInt: LDA ,X
CMPA ,Y
BHI Echange
LEAY $0001,Y
CMPY X
BNE LoopInt
LEAX $0001,X
CMPX #$0214
BNE LoopExt
BRA Fin
Echange: PSHS A
PSHS Y
PULS B,Y
PSHS X
PULS A,X
PSHS A
PULS B,X
PULS A
STA ,X
LEAY $0001,Y
BRA Echange
Fin: END
FAQ
Qu’est-ce que le mode d’adressage étendu ?
Le mode d’adressage étendu permet d’accéder à une adresse mémoire sur 16 bits, en utilisant deux octets pour spécifier l’adresse.
Comment fonctionne l’instruction TFR ?
L’instruction TFR (Transfer Register) permet de transférer le contenu d’un registre vers un autre registre, comme par exemple TFR A,DP qui copie le contenu du registre A vers le registre DP.
Quelle est la différence entre ADDA et ADDD ?
ADDA ajoute le contenu d’un registre ou d’une mémoire au registre A, tandis que ADDD ajoute le contenu d’une mémoire à 16 bits au registre D (composé des registres A et B).