6809 ensa
TRANSCRIPT
-
7/22/2019 6809 Ensa
1/15
Prsentation
dumicroprocesseur6809
cole nationale des sciences appliques de Fs, Maroc
ACHRAF MAHHA ELARBI ENNAIR
Powered by www.microelec.patricklecoq.fr All right reserved
-
7/22/2019 6809 Ensa
2/15
Le microprocesseur6809de Motorola est un microprocesseur 8 bits -grandsuccesseur du 6800 - dont l'organisation interne est oriente 16 bits.
Il possde 59 instructions (plus de 1460 instructions avec toutes lescombinaisons) et il comprend:
Un bus Data sur 8 bits; Un bus d'adresse sur 16 bits permettant un adressage mmoire de
64 KiloOctets; Deux accumulateurs de 8 bits "A" et "B" transformables en 1
accumulateur de 16 bits "D". Deux registres d'index de 16 bits "X" et "Y" pour la gestion des
piles utilisateur et systme; Deux registres pointeur de pile "U" et "S";
Un pointeur de page "DP" de 8 bits servant l'adressage direct dela mmoire;
Un registre d'tat "CC" sur 8 bits; Le compteur de programme sur 16 bits "PC" pointant toujours sur
l'adresse que le microprocesseur doit excuter.
Il existe deux versions de ce processeur, le 6809 et le 6809E. Leurbrochage diffre ainsi que leurs signaux mais leur jeu d'instruction estidentique.
1. Le 6809 possde une horloge interne.2. Le 6809E a lui besoin d'une horloge externe.
Le 6809 de Motorola fut au dpart produit en versions 1 MHz et 2 MHz,mais des versions plus rapides furent produites par la suite.
Le 6809 possde 9 modes d'adressage: L'adressage inhrent
L'adressage immdiat L'adressage direct L'adressage tendu L'adressage tendu indirect L'adressage relatif court L'adressage relatif long L'adressage index L'adressage index indirect
Organisation du processeur 6809 :
http://www.microelec.patricklecoq.fr/guide/6809.html#debut -
7/22/2019 6809 Ensa
3/15
Le microprocesseur, fabriqu en technologieMOS Canal N, comporte 40 broches et il estaliment en 5V uniquement. (Broche Vssc'estle GND soit 0V, Vcc c'est le 5V)
Il a un cycle d'horloge interne de 2 MHz(frquence externe divise par 4) ; Il possde3 bus indpendants :
Bus de donnes sur 8 bits (D0 D7)est bidirectionnel et chaque sortie peutpiloter 8 charges TTL;
Bus d'adresse sur 16 bits (A0 A15)est unidirectionnel, il peut piloter 8charges TTL;
Bus de contrle de 10 bits pour le 6809et de 12 bits pour le 6809E:
1 - Le signal lecture-criture R/W (read/write)dtermine le sens du transfert des donnes.Lorsque R/W = 1, le 6809 fait une lecture.Lorsque R/W = 0, le 6809 fait une criture surle bus de donnes.
2 et 3 - Les lignes d'tat du bus BA (BusAvailable) et BS (Bus State) renseignent les
priphriques du 6809 sur la disponibilit desbus de donnes et d'adresse.
BA = BS = 0 : le 6809 les bus dedonnes et d'adresse sont disponible
BA = 0, BS = 1 : le 6809 vient derecevoir une interruption.
BA = 1, BS = 0 : Excution del'instruction SYNC. Le 6809 attend lasynchronisation sur une ligned'interruption avec ses bus haute
impdance. BA = BS = 1 : Signal HALT sur 6809 =>
Les bus sont haute impdance.
4 - La ligne HALT permet d'interrompre defaon matrielle le droulement d'unprogramme. Le 6809 termine l'instruction encours puis positionne BA et BS 1. Ledroulement reprend ds que labroche HALT est 1.
Boitier HD6809E de Hitachi
http://www.microelec.patricklecoq.fr/guide/images/6809-boitier.jpg -
7/22/2019 6809 Ensa
4/15
5 - La ligne RESET permet la rinitialisation complte du 6809. Le 6809 se relanceen lecture du vecteur RESET aux adresses FFFE-FFFF, il charge ce vecteur dans lecompteur programme et se replace en excution.
6 - La ligne NMI (Non Masquable Interrupt) est une ligne d'interruption non
masquable. Elle permet d'excuter une routine d'interruption dont l'adresse estcontenue dans le vecteur FFFC-FFFD. Le contenu de la totalit des registres du6809 est sauvegard dans la pile systme.
7 - La ligne FIRQ ( Fast Interrupt Request) a son vecteur situ en FFFA-FFFB, elleest masque ou non suivant l'tat du bit F du registre CC. Les registres du 6809 nesont sauvegards que partiellement.
8 - La ligne IRQ (Interrupt Request) a son vecteur en FFF8-FFF9. Elle estconditionne par le bit 1 de CC et tous les registres sont sauvegards. Ledroulement de la routine peut tre interrompu par FIRQ ou NMI.
Signaux spcifiques au 6809
Les entres d'horloge XTAL et EXTALLes sorties E et Q sont des horloges destines aux priphriques du processeur.Elles sont en quadrature de phase.L'entre mmoire prte MRDY ( Memory ReaDy) permet l'allongement del'horloge E.L'entre accs direct mmoire DMA / BREQ suspend le fonctionnement du 6809,permettant ainsi la libration des bus pour des priphriques intelligents ou unrafrachissement de mmoires dynamiques.
Signaux spcifiques au 6809E
Les broches Ein et Qin sont les entres d'horloges du 6809E. Ces deux signauxdoivent tre en quadrature.Le signal d'indication de dernier cycle LIC (Last Instruction Cycle) est l'tathaut LIC = 1 chaque fois que le microprocesseur excute le dernier cycle machined'une instruction.Le siganl TSC (Three State Control) joue le mme rle que DMA/BREQ pourle 6809 et offre les mmes possibilits.
Le signal de prvention d'accs mmoire AVMA (Advanced Valid Memory Address)nous prvient en passant l'tat haut au cours du cycle d'un accs bus parle 6809E.Le signal BUSY a le mme fonctionnement qu'AVMA mais elle ne passe l'tat hautque pendant l'excution d'une lecture-criture d'une donne.
-
7/22/2019 6809 Ensa
5/15
Organisation interne du processeur 6809
Le 6809 possde plusieurs registres utiliss pour la manipulation et le traitement des donnes.Ils sont :
2 accumulateurs de 8 bits A et B transformables en 1 accumulateur de 16 bits, D. Ils sontutiliss pour les instructions arithmtiques, logiques et de chargement de donnes 8 bits (ou16 bits) en mmoire. Ils sont pour cela entirement identiques.L'accumulateurD est en fait la concatnation de A et B, le registre A reprsentant les poidsforts (bits 8 15) et B les poids faibles (bits 0 7).
2 registres d'index X etY, sur 16 bits. Ils permettent d'adresser tout l'espace mmoire avec enplus la capacit d'tre pr-dcrment ou post-incrment pour faciliter le traitement devariables en tables.
2 registres pointeurs de pile U et S. U (User) est utilis uniquement par le programmeur. S(System) par le systme pour les oprations de sauvegarde en cas d'interruption ou de saut un sous-programme (Adresse de retour). La pile est un emplacement ou le microprocesseursauvegarde le contenu de ses registres internes pendant un certain temps. Elles oprent enmode dernier entr-premier sorti (LIFO : Last In - First Out). Le pointeur de pile pointe vers la
dernire ente effective de la pile. Un compteur programme PC ( Program Counter), sur 16 bits, pointe l'adresse mmoire
laquelle le 6809 doit excuter une instruction.
-
7/22/2019 6809 Ensa
6/15
Un registre "codes conditions" CC, affichant en permanence l'tat de ces bits. Le contenu duregistre d'tat est essentiellement conditionn par l'ALU.
Le bits C (Carry - BO) est positionn lors d'une opration arithmtique uniquement. Ilest 1 dans le cas d'une addition dont le rsultat est suprieur 255 ($FF) ou lorsquele rsultat d'une soustraction (SUB, NEG, CMP, SBC) est positif. Dans le cas del'instruction MUL (A multipli par B, rsultat sur 16 bits dans D), CARRY est gal au
bit B7 de D. Le bit V (oVerflow - B1) est le rsultat d'un OU EXCLUSIF entre les retenues
arithmtiques de B6 et de B7. Les oprations logiques de chargements, de stockageset de transferts positionnent V 0. Seules les oprations comme ADD, ADC, SUB,SBC, NEG et CMP positionnent V la valeur approprie.
Le bit Z (Zro - B2) est l'indicateur d'un rsultat nul. Toutes les instructionspositionnent ce bit.
Le bit N (NEGATIVE - B3) indique un rsultat ngatif. Pour toutes lesinstructions, N prend la valeur du bit de poids fort de l'oprande ou de l'accumulateuren mouvement. Il est trs utile lors de travaux signs sur des entiers compris entre+127 et -128.
Le bit I (Interrupt -B4) autorise lorsque il est 0 le traitement des interruptions IRQ etles dvalident quand il est 1. Ce bit est uniquement manipul par l'utilisateur mais
est positionn 1 par un RESET . Le bit H (Half-carry - B5) est un bit de demi-retenue entre le quartet faible et le quartet
fort de A ou B. Le bit F (Fast interrupt - B6) conditionne le traitement de la ligne FIRQ. Il est 0 aprs
un RESET et dans ce cas FIRQ est dvalide. Si l'utilisateur le force 1, FIRQ esttraite.
Le bit E (B7) est l'indicateur de sauvegarde partielle li la ligne d'interruption FIRQ.Lorsqu'il est 0 aprs un RESET seulement, une partie des registres internes sontsauvegards pendant le traitement de l'interruption. Lorsqu'il est 1, tous les registressont sauvegards dans la pile systme.
Un registre de "page mmoire" DP (Direct Page), sur 8 bits, est utilis pour adresser despages en mmoire. Une page est un bloc de 256 mots. Aussi les emplacements mmoire 0 255 forment la page 0 de la mmoire. Le 6809 possde un bus d'adresse de 16 bits, celadonne 256 pages. Le registre DP spcifie le numro de page, c'est dire les 8 bits de poidsfort d'une adresse. Les 8 autres bits sont indiqus par l'instruction excuter. Leregistre DP permet une excution plus rapide des programmes. Il est automatiquement remis 00 par un RESET.
http://www.microelec.patricklecoq.fr/guide/6809.html#debut -
7/22/2019 6809 Ensa
7/15
Modes d'adressage :
L'adressage inhrentLe code opratoire contient toutel'information ncessaire l'excution
de l'instruction.Ex: ABX, ASLA, RORA, etc.
L'adressage immdiatLe code opratoire est directementsuivi par un oprande de 1 ou 2octets.Ex: CMPA #$2B06 --> Comparaisonde A avec la valeur hexa 2B06;
ADDB #%1001100 --> Addition de lavaleur binaire 1001100 B.
L'adressage directIl permet en collaboration avec leregistre DP de charger un
accumulateur avec le contenu den'importe quelle adresse mmoire.Ex: Avec DP = 00LDA < $00 charge A avec le contenude l'adresse $0000;CMPX < $35 compare X avec lecontenu des adresses $0035 et$0036.
L'adressage tenduIl permet d'atteindre toute la mmoiremais avec un oprande 2 octets.Ex: LDA $5100 --> charge A avec lecontenu de l'adresse $5100.
L'adressage tendu indirectC'est le contenu de l'adresse citecomme oprande qui va indiquerl'adresse mmoire.Ex: On a l'adresse $0100 de lammoire la valeur $35 et l'adresse$0101 contient la valeur $B7.LDA [$1000] ---> CHARGE A avec lecontenu de l'adresse $35B7.
L'adressage relatif courtIl permet d'atteindre toute la mmoirepar un dplacement de +127 ou -128octets.
Ex: A l'adresse $00FE on al'instruction BRA $0110 Branchement l'adresse $0110.($0110(de BRA $0110) - $0100 (dePC) = $0010 cette valeur est ajouteau compteur programme lors del'excution)
L'adressage relatif longMme principe que l'adressage relatifcourt mais permet d'atteindre toute lammoire par un dplacement de+32767 -32768.Ex: LBEQ $2000 --> Branche le
droulement l'adresse $2000 si le bitZ de CC est positionn.
-
7/22/2019 6809 Ensa
8/15
L'adressage indexOn utilise un registre d'index de 16bits qui spcifie une base laquelleon ajoute un dplacement sign de 5,8 ou 16 bits.
L'adressage index indirect
Le registre d'index contient l'adresseeffective de l'octet manipuler.
Description des instructions du 6809
ABXajoute l'accumulateur B X (nonsign)
ADCA, ADCBaddition du contenu mmoire l'accumulateur avec retenue
ADDA, ADDB addition mmoire l'accumulateurADDD
addition mmoire avecaccumulateur D (16 bits)
ANDA, ANDBET logique mmoire etl'accumulateur
ANDCC ET logique du CCR avec la mmoireASL, ASLA, ASLB dcalage arithmtique gaucheASR, ASRA, ASRB dcalage arithmtique droit
BCC, LBCCbranchement si pas de retenue (bitC)
BCS, LBCS branchement si retenu (bit C)BEQ, LBEQ branchement si gal zro (bit Z)
BGE, LBGEbranchement si suprieur ou gale
zro
BGT, LBGTbranchement si suprieur zro(sign)
BHI, LBHIbranchement si suprieur (nonsign)
BHS, LBHSbranchement si suprieur ou gal(non sign)
BITA, BITBtest d'un bit mmoire avecl'accumulateur
BLE, LBLEbranchement si infrieur ou gal(sign)
BLO, LBLO branchement si infrieur (non sign)
BLS, LBLS
branchement si infrieur ou gal
(non sign)BLT, LBLT branchement si infrieur (sign)BMI, LBMI branchement si ngatif (bit N)
BNE, LBNEbranchement si diffrent de zro (bitZ)
BPL, LBPL branchement si positif (bit N)BRA, LBRA branchement inconditionnelBRN, LBRN non branchementBSR, LBSR branchement un sous-programme
BVC, LBVCbranchement si pas dedpassement (bit V)
BVS, LBVS branchement si dpassement (bit V)
CLR, CLRA, CLRB
mise zro mmoire ou de
l'accumulateur
-
7/22/2019 6809 Ensa
9/15
CMPA, CMPBcomparaison mmoire avecl'accumulateur
CMPDcomparaison mmoire avecl'accumulateur D (16 bits)
CMPS, CMPUcomparaison pointeur de pile avecmmoire
CMPX, CMPY comparaison index avec mmoireCOM, COMA, COMB
complment deux de la mmoireou de l'accumulateur
CWAIET logique du CCR et attented'interruption
DAA ajustement dcimale de A
DEC, DECA, DECBdcrmentation de 1 mmoire ouaccumulateur
EORA, EORBOU exclusif mmoire etaccumulateur
EXG D,R Echange de D et de R
EXG R1,R2Echange de R1 et R2 (R1, R2 = A,B, CC, DP)
INC, INCA, INCB Incrmentation de 1 mmoire ouaccumulateur
JMP saut inconditionnelJSR saut un sous-programme
LDA, LDBchargement d'un accumulateur partie de la mmoire
LDS, LDUchargement de la pile partie de lammoire
LDX, LDUchargement de l'index partie de lammoire
LEAS, LEAUchargement de l'adresse effectivedans le pointeur de pile
LEAX, LEAYchargement de l'adresse effective
dans l'indexLSL, LSLA, LSLB
dcalage logique gauche mmoireou accumulateur
LSR, LSRA, LSRBdcalage logique droite mmoireou accumulateur
MUL multiplication non signe (AxB=D)NEG, NEGA, NEGB ngation mmoire ou accumulateurNOP Non OPration
ORA, ORBOU logique mmoire et l'-accumulateur
ORCCOU logique du CCR avec lammoire
PSHSempilement de tout registre sauf S
sur la pile S
PSHUempilement de tout registre sauf Usur la pile U
PULSDpilement de tout registre sauf Ssur la pile S
PULUDpilement de tout registre sauf Usur la pile U
ROL, ROLA, ROLBrotation gauche mmoire ouaccumulateur
ROR, RORA, RORBrotation droite mmoire ouaccumulateur
RTI retour d'interruptionRTS retour de sous-programme
SBCA, SBCB soustraction accumulateur et de lammoire avec retenue
-
7/22/2019 6809 Ensa
10/15
SEXextension du signe B au travers del'accumulateur A
STA, STB stockage accumulateur en mmoireSTD stockage de D en mmoire (16 bits)
STS, STUstockage de pointeur de pile enmmoire
STX, STY stockage de l'index en mmoireSUBA, SUBB
soustraction accumulateur mmoiresans retenue
SUBD soustraction D et mmoire (16 bits)SW11, SW12, SW13 interruption par logiciel
SYNCsynchronisation avec uneinterruption
TFR D,R transfert de D dans RTFR R,D transfert de R dans DTFR R1,R2 transfert de R1 dans R2TST, TSTA, TSTB test d'une mmoire ou accumulateur
Jeu d'instruction du 6809
Instruction Mnemonic
Addressing Mode
Description
CC bit
Immediate Direct Indexed Extended Inherent 5 3 2 1 0
Op ~ # Op ~ # Op ~ # Op ~ # Op ~ # H N Z V C
ABX 3A 3 1X = B+X(Unsigned)
ADC ADCA 89 2 2 99 4 2 A9 4+ 2+ B9 5 3 A = A+M+C!+!+
!+!+
!+!+
!+!+
!+!+
ADCB C9 2 2 D9 4 2 E9 4+ 2+ F9 5 3 B = B+M+C !+ !+ !+ !+ !+
ADD
ADDA 8B 2 2 9B 4 2 AB 4+ 2+ BB 5 3 A = A+M !+ !+ !+ !+ !+
ADDB CB 2 2 DB 4 2 EB 4+ 2+ FB 5 3 B = B+M !+ !+ !+ !+ !+
ADDD C3 4 3 D3 6 2 E3 6+ 2+ F3 7 3 D = D+M:M+1 !+ !+ !+ !+
AND
ANDA 84 2 2 94 4 2 A4 4+ 2+ B4 5 3 A = A && M !+ !+ 0
ANDB C4 2 2 D4 4 2 E4 4+ 2+ F4 5 3 B = B && M !+ !+ 0
ANDCC 1C 3 2 C = CC && IMM 7
ASL
ASLA 48 2 1 Arithmeticshift
left
8 !+ !+ !+ !+
ASLB 58 2 1 8 !+ !+ !+ !+
ASL 08 6 2 68 6+ 2+ 78 7 3 8 !+ !+ !+ !+
ASR
ASRA 47 2 1 Arithmeticshiftright
8 !+ !+ !+
ASRB 57 2 1 8 !+ !+ !+
ASR 07 6 2 67 6+ 2+ 77 7 3 8 !+ !+ !+
BIT
BITA 85 2 2 95 4 2 A5 4+ 2+ B5 5 3Bit Test A(M&&A)
!+ !+ 0
BITB C5 2 2 D5 4 2 E5 4+ 2+ F5 5 3Bit Test B(M&&B)
!+ !+ 0
CLR
CLRA 4F 2 1 A = 0 0 1 0 0
CLRB 5F 2 1 B = 0 0 1 0 0
CLR 0F 6 2 6F 6+ 2+ 7F 7 3 M = 0 0 1 0 0
CMPCMPA 81 2 2 91 4 2 A1 4+ 2+ B1 5 3 Compare M from
A8 !+ !+ !+ !+
http://www.microelec.patricklecoq.fr/guide/6809instruction.html#debut -
7/22/2019 6809 Ensa
11/15
CMPB C1 2 2 D1 4 2 E1 4+ 2+ F1 5 3 Compare M fromB
8 !+ !+ !+ !+
CMPD1083
5 4 1093
7 3 10A3
7+ 3+ 10B3
8 4 Compare M:M+1from D
!+ !+ !+ !+
CMPS11
8C
5 4 11
9C
7 3 11
AC
7+ 3+ 11
BC
8 4 Compare M:M+1
from S
!+ !+ !+ !+
CMPU1183
5 4 1193
7 3 11A3
7+ 3+ 11B3
8 4 Compare M:M+1from U
!+ !+ !+ !+
CMPX 8C4 3 9C 6 2 AC 6+ 2+ BC 7 3 Compare M:M+1
from X!+ !+ !+ !+
CMPY108C
5 4 109C
7 3 10AC
7+ 3+ 10BC
8 4 Compare M:M+1from Y
!+ !+ !+ !+
COM
COMA 43 2 1A =complement(A)
!+ !+ 0 1
COMB 53 2 1B =complement(B)
!+ !+ 0 1
COM 03 6 2 63 6+ 2+ 73 7 3 M =complement(M)
!+ !+ 0 1
CWAI 3C=>20
2CC = CC ^ IMM;Wait for Interrupt
7
DAA 19 2 1 Decimal Adjust A !+ !+ 0 !+
DEC
DECA 4A 2 1 A = A - 1 !+ !+ !+
DECB 5A 2 1 B = B - 1 !+ !+ !+
DEC 0A 6 2 6A 6+ 2+ 7A 7 3 M = M - 1 !+ !+ !+
EOREORA 88 2 2 98 4 2 A8 4+ 2+ B8 5 3 A = A XOR M !+ !+ 0
EORB C8 2 2 D8 4 2 E8 4+ 2+ F8 5 3 B = M XOR B !+ !+ 0
EXG R1,R2 1E 8 2 Exchange R1,R2
INC
INCA 4C 2 1 A = A + 1 !+ !+ !+
INCB 5C 2 1 B = B + 1 !+ !+ !+
INC 0C 6 2 6C 6+ 2+ 7C 7 3 M = M + 1 !+ !+ !+
JMP 0E 3 2 6E 3+ 2+ 7E 4 3 pc = EA
JSR 9D 7 2 AD 7+ 2+ BD 8 3Jump tosubroutine
Instruction 6809 suite
Instr Mnemonic
Addressing Mode
Description
CC bitImmediate Direct Indexed Extended Inherent 5 3 2 1 0
Op ~ # Op ~ # Op ~ # Op ~ # Op ~ # H N Z V C
LD
LDA 86 2 2 96 4 2 A6 4+ 2+ B6 5 3 A = M !+ !+ 0
LDB C6 2 2 D6 4 2 E6 4+ 2+ F6 5 3 B = M !+ !+ 0
LDD CC 3 3 DC 5 2 EC 5+ 2+ FC 6 3 D = M:M+1 !+ !+ 0
LDS10CE
4 4 10DE
6 3 10EE
6+ 3+ 10FE
7 4S = M:M+1 !+ !+ 0
LDU CE 3 3 DE 5 2 EE 5+ 2+ FE 6 3 U = M:M+1 !+ !+ 0
LDX 8E 3 3 9E 5 2 AE 5+ 2+ BE 6 3 X = M:M+1 !+ !+ 0
LDY108E
4 4 109E
6 3 10AE
6+ 3+ 10BE
7 4
Y = M:M+1 !+ !+ 0
LEA LEAS 32 4+ 2+ S = EA
-
7/22/2019 6809 Ensa
12/15
LEAU 33 4+ 2+ U = EA
LEAX 30 4+ 2+ X = EA !+
LEAY 31 4+ 2+ Y = EA !+
LSL
LSLA 48 2 1Logical
shiftleft
!+ !+ !+ !+
LSLB 58 2 1 !+ !+ !+ !+
LSL 08 6 2 68 62+ 78 7 3 !+ !+ !+ !+
LSR
LSRA 44 2 1Logical
shiftright
0 !+ !+
LSRB 54 2 1 0 !+ !+
LSR 04 6 2 646
2+ 74 7 3 0 !+ !+
MUL 3D 11 1D = A*B
(Unsigned)!+ 9
NEG
NEGA 40 2 1 A = !A + 1 8 !+ !+ !+ !+
NEGB 50 2 1 B = !B + 1 8 !+ !+ !+ !+
NEG 00 6 2 60
6
2+ 70 7 3 M = !M + 1 8 !+ !+ !+ !+NOP 12 2 1 No Operation
OR
ORA8A 2 2 9A 4 2 AA 4
2+ BA 5 3 A = A || M !+ !+ 0
ORBCA 2 2 DA 4 2 EA 4
2+ FA 5 3 B = B || M !+ !+ 0
ORCC 1A 3 2 C = CC || IMM 7
PSH
PSHS34 5
+2 Push Registers
on S Stack
PSHU36 5
+2 Push Registers
on U Stack
PUL
PULS 35 5+
2 Pull Registersfrom S Stack
PULU37 5
+2 Pull Registers
from U Stack
ROL
ROLA 49 2 1
Rotate left thrucarry
!+ !+ !+ !+
ROLB 59 2 1 !+ !+ !+ !+
ROL 09 6 2 696
2+ 79 7 3 !+ !+ !+ !+
ROR
RORA 46 2 1
Rotate Rightthru carry
0 !+ !+
RORB 56 2 1 0 !+ !+
ROR 06 6 2 666
2+ 76 7 3 0 !+ !+
RTI 3B6/15
1Return from
Interrupt? ? ? ? ?
RTS 39 5 1Return fromsubroutine
SBC
SBCA82 2 2 92 4 2 A2 4
2+ B2 5 3 A = A - M - C 8 !+ !+ !+ !+
SBCBC2 2 2 D2 4 2 E2 4
2+ F2 5 3 B = B - M - C 8 !+ !+ !+ !+
SEX 1D 2 1Sign extend B
into A!+ !+ 0
ST STA 97 4 2 A7 42+ B7 5 3 M = A !+ !+ 0
-
7/22/2019 6809 Ensa
13/15
STB D7 4 2 E7 42+ F7 5 3
M = B!+ !+ 0
STDDD 5 2 ED 5
2+ FD 6 3
M:M+1 = D !+ !+ 0
STS10DF
6 3 10EF
63+ 10
FF
7 4M:M+1 = S !+ !+ 0
STUDF 5 2 EF 5
2+ FF 6 3
M:M+1 = U !+ !+ 0
STX9F 5 2 AF 5
2+ BF 6 3
M:M+1 = X !+ !+ 0
STY109F
6 3 10AF
63+ 10
BF
7 4M:M+1 = Y !+ !+ 0
SUB
SUBA80 2 2 90 4 2 A0 4
2+ B0 5 3
A = A - M 8 !+ !+ !+ !+
SUBBC0 2 2 D0 4 2 E0 4
2+ F0 5 3
B = B - M 8 !+ !+ !+ !+
SUBD83 4 3 93 6 2 A3 6
2+ B3 7 3
D = D - M:M+1 !+ !+ !+ !+
SWI
SWI3F 19 1 Software
interrupt 1
SWI2
10
3F
20 2Softwareinterrupt 2
SWI3
11
3F
20 2Softwareinterrupt 3
SYNC 13>=4
1Synchronize to
Interrupt
TFR R1,R2 1F 6 2 R2 = R1
TST
TSTA 4D 2 1 Test A !+ !+ 0
TSTB 5D 2 1 Test B !+ !+ 0
TST 0D 6 2 6D6
2+ 7D 7 3 Test M !+ !+ 0
Lgende :
OP Operation Code(Hexadecimal) ! Complement of M!+ Test and set if true,cleared otherwise
~ Number of MPU Cycles = Transfer into Not Affected# Number of Program Bytes H Half carry (from bit 3) CC Condition Code Register
+ Arithmetic Plus N Negative (sign bit) : Concatenation
- Arithmetic Minus Z Zero Result || Logical or
* Multiply V Overflow, 2's complement && Logical and
C Carry from ALU EOR Logical Exclusive or
Notes:1. This column gives a base cycle and byte count. To obtain total count, add the values obtained from
the INDEXED ADDRESSING MODE table, in Appendix F.2. Rl and R2 may be any pair of 8 bit or any pair of 16 bit registers.
The 8 bit registers are: A, B, CC, DPThe 16 bit registers are: X, Y, U, S, D, PC
-
7/22/2019 6809 Ensa
14/15
3. EA is the effective address.4. The PSH and PUL instructions require 5 cycles plus 1 cycle for each byte pushed or pulled.5. 5(6) means: 5 cycles if branch not taken, 6 cycles if taken (Branch instructions.6. SWI sets I and F bits. SW12 and SW13 do not affect I and F.7. Conditions Codes set as a direct result of the instruction.
8. Value of half carry flag is undefined.9. Special Case Carry set if b7 is SET.
Interruption 6809
Evnement Adresse Fonctionnalit
Restart FFFE
NMI FFFC
E = 1PSHS X,Y,D,U,DP,PC,CCF = 1
I = 1PC = [$FFFC]{19 cycles}
SWI FFFA
E = 1PSHS X,Y,D,U,DP,PC,CCF = 1I = 1PC = [$FFFA]{19 cycles}
IRQ FFF8
E = 1PSHS X,Y,D,U,DP,PC,CCF = 1
I = 1PC = [$FFF8]{19 cycles}
FIRQ FFF6
E = 0PSHS PC,CCF = 1I = 1PC = [$FFF6]{10 cycles}
SWI2 FFF4
E = 1PSHS X,Y,D,U,DP,PC,CCPC = [$FFF4]
{20 cycles}
SWI3 FFF2
E = 1PSHS X,Y,D,U,DP,PC,CCPC = [$FFF2]{20 cycles}
Reserved FFF0
Programmation :
Le programme doit tre saisi dans un fichier texte non format avec l'extension ."ASM".On peut utiliser:
Le bloc note, Ultraedit, etc. sous Windows;
-
7/22/2019 6809 Ensa
15/15
VI, Gedit sous Linux.
Puis, on utilisera un assembleur comme :
AS6809 X6809 Macro Assembler AS 1418
Exemple : Programme simple de test d'une zone RAM :
Adresse Code Mnmonique Commentaire :
Label Opration Oprande
$A000 12 NOP pourquoi pas ...
$A001 F6400A LDB >$400A
$A004 12 NOP
$A005 4F CLR A
$A006 5F CLR B Initialisation de A et B. (A=B=0)
$A007 8E0000 Dbut LDX #$0000 Initialise X 0 Dbut zone mmoire
$A00A 1F98 TFR B -> A Contenu de B dans A
$A00C A780 Deb-criture STA 00 , XEcriturede A dans mmoire dont l'adresseest dans X
$A00E 4C INC A A=A+1
$A00F 8C0800 CMP X #$0800 Test si X = 0800 Fin de zone mmoire
$A012 26F8 BNE Deb-criture Boucle tant que X n'a pas atteint 0800
$A014 8E0000 LDX #$0000Initialise X 0 Dbut zone mmoire (Dbut
boucle de vrification)$A017 1F98 TFR B -> A Contenu de B dans A
$A019 A180 Deb-criture CMP A 00 , XLectureet comparaison du contenu de lammoire dont l'adresse est X avec A
$A01B 260A BNE ErreurSi donne mmoire diffrent de A alorsbranchement sur erreur
$A01D 4C INC A A=A+1
$A01E 8C0800 CMP X #$0800 Test si X = 0800 Fin de zone mmoire
$A021 26F6 BNE Deb-criture Boucle tant que X n'a pas atteint 0800
$A023 5C INC B B=B+1
$A024 20E1 BRA Dbut
Recommence la boucle partir de "Dbut"mais avec un B=B+1.Le test boucle sur lui-mme indfiniment. Laseule sortie est l'erreur.
Erreur ... ... Gestion de l'erreur (Affichage, ...)
... ...
etc.
Vecteur de dmarrage : Adresse FFFE =$A000 (ici adresse $0000 de l'Eprom du pland'adressage de la carte)