6809 Ensa

Embed Size (px)

Citation preview

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