0% ont trouvé ce document utile (0 vote)
15 vues25 pages

Modes d'Adressage en Assembleur 6800

Le document présente différents modes d'adressage en programmation, notamment l'adressage inhérent, immédiat, direct, étendu, indexé et relatif. Chaque mode est illustré par des exemples d'instructions et de codes machine. Ces modes d'adressage déterminent comment les données sont référencées et manipulées dans la mémoire lors de l'exécution des programmes.

Transféré par

kayiro1193
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats XLSX, PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
15 vues25 pages

Modes d'Adressage en Assembleur 6800

Le document présente différents modes d'adressage en programmation, notamment l'adressage inhérent, immédiat, direct, étendu, indexé et relatif. Chaque mode est illustré par des exemples d'instructions et de codes machine. Ces modes d'adressage déterminent comment les données sont référencées et manipulées dans la mémoire lors de l'exécution des programmes.

Transféré par

kayiro1193
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats XLSX, PDF, TXT ou lisez en ligne sur Scribd

Adressage Inhérent L'instruction se suffit à elle même

A <== #00 0000 CLRA 0000


FIN 0001 WAI 0001
0002 0002

Adressage Immédiat La donnée suit immédiatement l'instruction

A <== #86 0000 LDAA# 0000


0001 86 0001
0002 0002

Adressage Direct L'adresse basse de la case mémoire qui contient la donnée suit directem

A <== 40 0000 LDAA 0000


0001 40 0001
0002 0002
0003
0004
0005
0040 86 0006

Adressage Etendu L'adresse complète (haute puis basse) de la case mémoire qui contient

A <== 0140 0000 LDAA 0000


0001 01 0001
0002 40 0002
0003
0004
0005
0140 86 0006

Adressage Indexé L'adresse visée par le registre d'index + Offset (8bits)

A <== [X + 00] 0000 LDX# LDX# 0000


0001 01 01 0001
0002 40 3F 0002
0003 LDAA,x LDAA,x 0003
0004 00 01 0004
0005 0005
0006 0006

013F
XH XL 0140 86

Adressage Relatif Initialisation du PC avec un offset 8 bits par addition signé sans report

FB 0004 ADDA,x AB
FC 0005 00 00
FD 0006 INX 08
0009 FE 0007 BRA 20
+ FB FF 0008 FB FB
0004 PC 0009 instruction théorique suivante
4F
3E ==> 00

A
86
86

ntient la donnée suit directement l'instruction (adresse haute inchangée)

96
40
A

a case mémoire qui contient la donnée suit directement l'instruction

B6
01
40
A

CE CE
01 01
40 3F
A6 A6
00 01
A

r addition signé sans report sur la partie haute (PCH)

7F 0111 1111

SAUT AVANT ( +127 max)


02
01
00
FF
rique suivante FE
FD
SAUT ARRIERE ( -127 max)

81 1000 0001
0040 N1 86 LDAA
0041 N2 87
+
ADDA
0140 N3 06
0141 N4 07
0142 N5 08 STAA

0200 R R = N1 + N2 + N3 +…

Départ
Adresses Mnémoniques Codes Machine
0000 LDAA 96 A <== N1
0001 N1 40
0002 ADDA 9B A <== A + N2
0003 N2 41
0004 ADDA BB A <== A + N3
0005 N3 01
0006 40
0007 ADDA BB A <== A + N4
0008 N4 01
0009 41
000A ADDA BB A <== A + N5
000B N5 01
000C 42
000D STAA B7 A ==> R
000E R 02
000F 00
0010 WAI 00 / 3E
0011
A
0040 N1 86 LDAA
0041 N2 87
+
ADDA
0140 N3 06
0141 N4 07
0142 N5 08 STAA

XH XL

0200 R R = N1 + N2 + N3 +…

Départ
Adresses Mnémoniques Codes Machine
0000 LDAA 96 A <== N1
0001 N1 / [40] 40
0002 CLRB 5F B <== #00
0003 ADDA 9B A <== A + N2
0004 N2 / [41] 41
0005 ADDB# CB B <== B + 1
0006 01 01
0007 ADDA BB A <== A + N3
0008 N3 / 01
0009 [0140] 40
000A INCB 5C B <== B + 1
000B ADDA BB A <== A + N4
000C N4 01
000D [0141] 41
000E INCB 5C B <== B + 1
000F ADDA BB A <== A + N5
0010 N5 01
0011 [0142] 42
0012 INCB 5C B <== B + 1
0013 STAA B7 A ==> R
0014 R 02
0015 [0200] 00
0016 WAI 00 / 3E
A
003F
0040 N1 16
0041 N2 08 ADDA,x
0042 N3 09
0043 N4 10

0140 N5 06
0141 N6 07
0142 N7 08 STAA
0143 N8 09
XH XL

0200 R R = N1 + N2 + N3 +…

Départ
Adresses Mnémoniques Codes Machine
0000 CLRA 4F A <== #00
0001 LDX# CE
0002 00 00 X <== #0040
0003 40 40
0004 LDAB# C6 B <== #04
0005 04 04
FA 0006 ADDA,x AB A <== A + [X + 00]
FB 0007 00 00
FC 0008 INX 08 X <== X + 1
FD 0009 DECB 5A B <== B - 1
FE 000A BNE 26
FF 000B FA FA Z == 0 (B != 0)
PC 000C LDX# CE O X <== #0130
000D 01 01
000E 30 30
000F LDAB# C6 B <== #04
0010 04 04
FA 0011 ADDA,x AB A <== A + [X + 10]
FB 0012 10 10
FC 0013 INX 08 X <== X + 1
FD 0014 DECB 5A B <== B - 1
FE 0015 BNE 26
FF 0016 FA FA Z == 0 (B != 0)
PC STAA B7 ON
R 02 A ==> R
[0200] 00
WAI 00 / 3E Fin
A

7F 0111 1111

02
01
00
FF
FE
FD

81 1000 0001

0009
+ FB
0004
003F
0040 N1 16
0041 N2 08 ADDA,x
0042 N3 09
0043 N4 10

0140 N5 06
0141 N6 07
0142 N7 08 STAA
0143 N8 09
XH XL

0200 R R = N1 + N2 + N3 +…

Départ
Adresses Mnémoniques Codes Machine
0000 CLRA 4F A <== #00
0001 LDX# CE
0002 00 00 X <== #0040
0003 40 40
0004 LDAB# C6 B <== #04
0005 04 04
FA 0006 ADDA,x AB A <== A + [X + 00]
FB 0007 00 00
FC 0008 INX 08 X <== X + 1
FD 0009 DECB 5A B <== B - 1
FE 000A BNE 26
FF 000B FA FA Z == 0 (B != 0)
PC 000C LDX# CE O X <== #0130
000D 01 01
000E 30 30
F8 000F ADDA,x AB A <== A + [X + 10]
F9 0010 10 10
FA 0011 INX 08 X <== X + 1
FB 0012 CPX# 8C X - #0134
FC 0013 01 01
FD 0014 34 34
FE 0015 BNE 26 O Z == 0 (X != #0134)
FF 0016 F8 F8 N
PC STAA B7 A ==> R
R 02
[0200] 00 Fin
WAI 00 / 3E
A
003F
0040 N1 16
0041 N2 08 ADDA,x
0042 N3 09
0043 N4 10

0140 N5 06
0141 N6 07
0142 N7 08 STAA
0143 N8 09
XH XL

0200 R R = N1 + N2 + N3 +…

Départ
Adresses Mnémoniques Codes Machine
0000 CLRA 4F A <== #00
0001 LDX# CE
0002 00 00 X <== #0040
0003 40 40
F8 0004 ADDA,x AB A <== A + [X + 00]
F9 0005 00 / 10 00 / 10
FA 0006 INX 08 X <== X + 1
FB 0007 CPX# 8C X - #0044 / #0134
FC 0008 00 / 01 00 / 01
FD 0009 44 / 34 44 / 34
FE 000A BNE 26 O Z == 0 (X != #0134)
FF 000B F8 F8
PC 000C CPX# 8C X - #0044 / #0134
000D 01 01
000E 34 34
000F BEQ 27 Z == 1 (X == #0134)
0010 0E 0E
PC 0011 LDX# CE X <== #0134
01 0012 01 01
02 0013 34 34
03 0014 STX DF XH ==> [08] / XL ==> [09]
04 0015 08 08
05 0016 LDX# CE X <== #0130
06 0017 01 01
07 0018 30 30
08 0019 LDAB# C6 B <== #10
09 001A 10 10
0A 001B STAB D7 B ==> [05]
0B 001C 05 05
0C 001D BRA 20
0D 001E E5 E5
0E PC 001F STAA B7 A ==> R
0020 R 02
0021 [0200] 00 Fin
0022 WAI 00 / 3E
0023
A

A 00 - 16 - 1E - 27 - 37 -
B 10
X 0040 - 0041 - 0042 - 0043 - 0044 - 0134 - 0130 -

O
00 1F
+ E5
00 04
044 - 0134 - 0130 -
003F
0040 N1H 01
XH XL 0041 N1L FB
0042 N2H 0A
0043 N2L 1C
0044 RH 0C
0045 RL 17 0

0100 00 +
0101 41
00F0 00
00F1 3F
Départ
Adresses Mnémoniques Codes Machine
0000 LDX# / LDX CE / FE X <== #0041
0001 00 / 01 00 / 01
0002 41 / 00 41 / 00
0003 CLC 0C C <== 0
F4 0004 LDAA,x A6 A <== [X + 00]
F5 0005 00 00
F6 0006 ADCA,x A9 A <== A + [X + 02] + C
F7 0007 02 02
F8 0008 STAA,x A7 A ==> [X + 04]
F9 0009 04 04
FA 000A DEX 09 X <== X - 1
FB 000B CPX# / CPX 8C / 9C X - #003F
FC 000C 00 / F0 00 / F0
FD 000D 3F / NOP 3F / 01
FE 000E BNE 26 Z=0
FF 000F F4 F4
PC 0010 WAI 00 / 3E Fin
0011
0012
0013
0014
0015
0016
0017
0018
0019
001A
001B
001C
001D
001E
001F
0020
0021
0022
0023
CLC / ADCA
ADCA ADDA
1 1
01 FB
0A 1C
0C 17

X = 0041

X != #003F
0040
0041
SP 0042
0043 70
0044 07
0045

Départ
Adresses Mnémoniques Codes Machine
0000 LDS# 8E SP <== #0044
0001 00 00
0002 44 44
0003 LDAA# 86 A <== #07
0004 07 07
0005 LDAB# C6 B <== #70
0006 70 70
0007 PUSHA 36 A ==> [SP]
0008 PUSHB 37 B ==> [SP]
0009 PULA 32 SP <== SP + 1
000A PULB 33 SP <== SP + 1
000B WAI 00 / 3E Fin
A 07
B 70

SP <== SP - 1
SP <== SP - 1
A <== [SP]
B <== [SP]
Modes d'adressage

AX AH AL clc inhérent
13 mov ah,13h immédiat
13 13 mov al,ah direct
var1 mov al,var1 direct
00 0D mov ax,13 immédiat

Equivalent 6800
8086 6800
CS:IP PC
SS:SP SP
DS:SI Index (source index) mov bx,[si] indexé
DS:DI Index (destination index) mov [di+3],ch indexé
SF N
ZF Z
AF H
PF *
CF C

Gestion sortie Ecran

ds 0B800h AX = 0E30h
0

2000
0 ==> 0E30h di

mov bx, 0b800h


mov ds,bx
mov di,2000
mov ax,0E30h
3998 mov [di],ax

Gestion Acquisition Clavier

AH AL
AX 00 30
0F Code ASCII de la touche actionnée (ex. Frappe "0")

int 16h
Gestion data ( .data )

ds @data
usercar 30 AL
lea si,usercar usermess A
p
p

c
si h
e
00
mov ds,0b800h adressage immédiat impossible vers DS

(ex. Frappe "0")

Vous aimerez peut-être aussi