CODING ★ Dr.Watson - Autoformation à l'assembleur par Micro Application ★

Dr.Watson - Autoformation à l'assembleur - Solutions

S O L U T I O N S

CHAPITRE 1

EXERCICE 1.1

ENT
LD A,65
CALL 47962
RET

EXERCICE 1.2

ENT
LD A,70
CALL 47962
LD A,82
CALL 47962
LD A,69
CALL 47962
LD A,68
CALL 47962

CHAPITRE 2

EXERCICE 2.1

ORG 30000
LD B,10
LD A,65
CALL 47962
DEC B
JR NZ,30004
RET

EXERCICE 2.2

On utilise de préférence l'instruction JR NZ à l'instruction JP NZ car la distance de saut est entre +129 et -126 octets, et l'instruction JR NZ nécessite un temps d'exécution plus court. Elle est des lors plus efficace.

EXERCICE 2.3

ORG 30000
LD C,26
LD A,65
NXT: CALL 47962
INC A
DEC C
JR NZ,NXT:
RET

CHAPITRE 3

EXERCICE 3.1

Case mémoire Contenu
: ;:
: ; :
200 ; E
201 ; D
202 ; L
203 ; H
: ; :
: ; :

EXERCICE 3.2

ENT
LD DE,100
LD (35000),DE
LD HL,400
LD (35002),HL
LD DE,(35000)
LD HL,(35002)
CALL 48118
RET

Si vous utilisez la sous-routine plot en code machine en 48106, le programme devient:

ENT
LD DE,100
LD (35000),DE
LD HL,400
LD (35002),HL
LD DE,0
LD HL,0
CALL 48106
LD DE,(35000)
LD HL,(35002)
CALL 48118
RET

EXERCICE 3.3

ENT
LD DE,200
LD HL,300
CALL 48118
LD DE,400
LD HL,200
CALL 48118
LD DE,0
LD HL,0
CALL 48118
RET

Remarque: Il n'est pas vraiment nécessaire, a part pour une illustration, de charger les coordonnées en mémoire. Ce programme est plus rapide qu'un programme qui stocke les coordonnées en mémoire et oui les lit ensuite encore une fois.

FXERCICE 3.4

ENT
LD BC,35000
LD A, 65
LD E,3
NXT: LD (BC),A
INC BC
DEC E
JR NZ,NXT:
LD E,3 ; Nombre de parcours de la boucle
LD BC,35000 Charger emplacement de départ de "A"
PUT: LD A, (BC) Mettre "A" dans l'accumulateur
INC BC ; Ajouter 1 a la case de données
CALL 47962 Mettre "A" sur l'écran
DEC E ;Décrémenter le numéro de boucle
JR NZ,PUT: Si numéro de boucle <> 0, boucler encore
RET ; FIN

EXERCICE 3.5

ENT

LD BC, 35000

LD A,65

LD E,26 ;26 parcours de boucle sont requis

NXT: LD(BC),A

INC BC

INC A ;Lettre ASCII suivante

DEC E

JR NZ,NXT:

LD BC,35000

LD E,26 ;26 parcours de boucle sont requis

PUT: LD A,(BC)

INC BC

CALL 47962

DEC E

JR NZ,PUT:

RET

EXERCICE 3.6

ENT

LD IX,35000

LD A,83

LD (IX+0),A

LD (IX+2),A

INC A

INC A

LD (IX+1),A

LD A,65

LD (IX+3),A

LD A,78

LD (IX+4),A

LD A,(IX+2)

CALL 47692

LD A,(IX+3)

CALL 47692

RET

CHAPITRE 4

EXERCICE 4.1

ENT

LD A,200

ADD A,48

CALL 47692

RET

Ceci affiche un petit bonhomme sur l'écran.

EXERCICE 4.2

ENT

LD A,&41

ADD A,&10

CALL &BB5A

RET

Ceci place un Q sur l'écran.

EXERCICE 4.3

ENT

LD C,&FA octet faible de 250

LD A,&58 octet faible de 600

AND A

ADD A,C

ADD A,65

LD (&7000),A

LD C,&00 octet fort de 250

LD A,&2 octet fort de 600

ADC A,C

ADD A,65

LD (&7001),A

LD A,(&7000)

CALL &BB5A

LD A, (&7001)

CALL &BB5A

RET

Ceci produit une forme comme le bras d'un robot.

EXERCICE 4.4

ENT

LD C,9

LD A,233

SUB C

CALL &BB5A

RET

Il n'est pas nécessaire de soustraire 65 de la réponse parce que CHR$(224) est un caractère imprimable (une figure souriante).

EXERCICE 4.5

ENT

LD A,126

ADD A,97

LD C,153

SUB C

CALL &BB5A

RET

Cela met "F" sur l'écran.

EXERCICE 4.6

ENT

LD DE,4008

LD HL,4248

AND A

SBC HL,DE

LD A,L

CALL &BB5A

RET

Cela met la flèche haut sur l'écran.

EXERCICE 4.7

ENT

LD HL,35000

LD A,10

LD (HL),A

INC HL

LD A,20

LD (HL),A

LD A,65

ADD A,(HL)

LD (HL),A

DEC HL

LD A,65

ADD A,(HL)

LD (HL),A

CALL &BB5A

INC HL

LD A,(HL)

CALL &BB5A

RET

Ceci affiche "KU" sur l'écran.

EXERCICE 4.8

ENT

LD DE,100

LD HL,50

CALL 48118

LD D,0

LD E,100

LD A,75

ADD A,E

LD E,A

LD H,0

LD L,50

LD A,75

ADD A,L

LD L,A

CALL 48118

RET

CHAPITRE 5

EXERCICE 5.1

LD A,&7

ADD A,&C

DAA

ADD A,65

CALL &BB5A

RET

Ceci mettra un "Z" sur l'écran.

EXERCICE 5.2

LD C,&12

LD A,&35

SUB C

DAA

ADD A,65

CALL &BB5A

RET

Ceci mettra un "d" sur l'écran.

EXERCICE 5.3

1. C=0

2. C=1

3. C=0

EXERCICE 5.4

Le masque requis sera 00000011.

EXERCICE 5.5

253 AND 75 = 73 (1001001)

EXERCICE 5.6

1. 1001 OR 1101 = 1101

2. 250 OR 25 = 251

3. (209 OR 20) AND 27 = 17

EXERCICE 5.7

1. 1101 XOR 1110100 = 127

LD C,11

LD A,116

XOR C

CALL &BB5A

RET

Ceci affiche un échiquier sur l'écran.

2. 77 XOR 200 = 133

LD C,77

LD A,200

XOR C

CALL &BB5A

RET

Ceci affiche une barre verticale sur l'écran,

3. (25 OR 255) AND 200 = 200

LD C,25

LD A,200

OR C

LD C,200

AND C

CALL &BB5A

RET

Ceci affiche deux diagonales sur l'écran,

EXERCICE 5.8

1. 0100

2. 0100010

3. 0001

EXERCICE 5.9

1. 1010 ; = 10

1101 ; = -3

0111 ; = 7

2. 1111

0111

0110

3. 0110 = -10

1000 =8 1110 = -2

EXERCICE 5.10

LD A, 20

CPL

INC A

ADD A,98

CALL &BB5A

RET

Ceci affiche un "N" sur l'écran.

CHAPITRE 6

EXERCICE 6.1

La solution est la même que pour le programme 6.1 sauf pour ces lignes:

LD C,10

LD E,9

Le programme devra afficher le caractère 155 sur l'écran, c'est-à-dire T renversé avec une barre courte.

EXERCICE 6.2

LD C,124

LD E,146

LD D,0

LD B,8

LD HL,O

NXTB: SRI C

JR NC,NOADD:

ADD HL,DE

NOADD:SLA E

RL D

DEC B

JR NZ,NXTB:

LD A,H

CALL &BB5A

LD A,H

CALL &BB5A

RET

Cela donne F.

EXERCICE 6.3

Pour réaliser facilement ceci, effacer DEC B et remplacer la ligne JR NZ,NXTB: par:

DJNZ NXTB:

EXERCICE 6.4

LD A,5

RLCA

RLCA

RLCA

RLCA

RLCA

CALL &BB5A

RET

Ceci affiche la flèche haut en haut de l'écran; le caractère ASCII pour 160.

2.LD A, 254

RRCA

CALL &BB5A

RET

Ceci affiche CHR$(127); un échiquier sur l'écran.

EXERCICE 6.5

LD A,255

CALL &BB5A

RES 4,A

CALL &BB5A

SET 1,A

RES 3,A

CALL &BB5A

RET

Ceci affiche une flèche a deux têtes, une fusée et une pyramide à son côté, sur l'écran.

CHAPITRE 7

EXERCICE 7.1

ENT

LD DE,0

LD HL,0 Met curseur graphique sur(0,0)

CALL &BBC0

LD DE,100 ;Charge 100 dans DE

LD HL,200 ;Charge 200 dans HL

PUSH DE Sauvegarde DE sur la pile

PUSH HL Sauvegarde HL sur la pile

CALL &BBF6 Dessine ligne jusqu'à (100,200)

LD DE,0

LD HL,0 Met curseur sur (0,0)

CALL &BBC0

POP DE Met ancien contenu de HL dans DE

POP HL Met ancien contenu de DE dans HL

CALL &BBF6 Dessine ligne jusqu'à (100,200)

RET

EXERCICE 7.2

ENT

LD A,43 Met "+" dans A

PUSH AF Stocke A sur la Pile actuelle

CALL &BB5A Met "+" sur écran

LD (&7148),SP Enregistre valeur actuelle de SP

LD HL,&7148 Se prépare pour:

LD SP,HL Fixer a nouveau la pile en 30000

LD A,61 Met "=" dans A

PUSH AF Stocke A dans nouvelle pile

CALL &BB5A Met "=" sur écran

LD HL,(&714A) Trouve emplacement originel de SP

LD SP,HL Revient sur la pile originelle

POP AF Retrouve "+"

PUSH AF

CALL &BB5A

LD HL,&7146 Parce que A et F sont dans la nouvelle pile

LD SP,HL

POP AF

CALL &BB5A

LD HL,(&714A)

LD SP,HL

POP AF

CALL &BB5A

RET

CHAPITRE 8

EXERCICE 8.1

LD HL,&B100

LD DE,&C000

LD BC,&3FFF

LOOP: LDI

JP PO,FINISH:

JP LOOP:

FINISH:RET

ANNEXE 5

EXERCICE A5.1

i) 3

ii) 4

iii) 128

iv) 131

v) 183

vi) 115

EXERCICE A5.2

i) 31

ii) 41

iii) 189

iv) 136

EXERCICE A5.3

i) 9

ii) 19

iii) 165

iv) 174

v) 14

vi) 26

vii) 234

EXERCICE A5.4

i) 0000 0100 v) 0101 0011

ii) 0001 0000 vi) Trop grand pour représentation

; BCD sur deux octets

iii) 0111 0111 vii) Trop grand pour représentation

; BCD sur deux octets

iv) 1001 0111 viii) Trop grand pour représentation

; BCD sur deux octets

EXERCICE A5.5

i) 1 ; v) 49

ii) 9 ; vi) 23

iii) 15 ; vii) 97

iv) 20 ; viii) 88

★ ANNÉES: 1985
★ AUTEUR: T. Hebertson
★ CONVERTION: CRACKERS VELUS

Page précédente : Dr.Watson - Autoformation à l'assembleur
 
Je participe au site:

» Vous avez remarqué une erreur dans ce texte ?
» Aidez-nous à améliorer cette page : en nous contactant via le forum ou par email.

CPCrulez[Content Management System] v8.7-desktop/c
Page créée en 277 millisecondes et consultée 1418 fois

L'Amstrad CPC est une machine 8 bits à base d'un Z80 à 4MHz. Le premier de la gamme fut le CPC 464 en 1984, équipé d'un lecteur de cassettes intégré il se plaçait en concurrent  du Commodore C64 beaucoup plus compliqué à utiliser et plus cher. Ce fut un réel succès et sorti cette même années le CPC 664 équipé d'un lecteur de disquettes trois pouces intégré. Sa vie fut de courte durée puisqu'en 1985 il fut remplacé par le CPC 6128 qui était plus compact, plus soigné et surtout qui avait 128Ko de RAM au lieu de 64Ko.