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")