A 6502 mikroprocesszor

Hasonló dokumentumok
1. Az utasítás beolvasása a processzorba

Mikroprocesszor CPU. C Central Központi. P Processing Számító. U Unit Egység

A MiniRISC processzor

Egyszerű RISC CPU tervezése

A Számítógépek felépítése, mőködési módjai

Bevezetés az informatikába

Digitális rendszerek. Utasításarchitektúra szintje

találhatók. A memória-szervezési modell mondja meg azt, hogy miként

Számítógépek felépítése, alapfogalmak

Számítógépek felépítése, alapfogalmak

A számítógép alapfelépítése

Architektúra, megszakítási rendszerek

Az integrált áramkörök kimenetének kialakítása

Balaton Marcell Balázs. Assembly jegyzet. Az Assembly egy alacsony szintű nyelv, mely a gépi kódú programozás egyszerűsítésére született.

A 32 bites x86-os architektúra regiszterei

Adatelérés és memóriakezelés

A mikroprocesszor egy RISC felépítésű (LOAD/STORE), Neumann architektúrájú 32 bites soft processzor, amelyet FPGA val valósítunk meg.

Járműfedélzeti rendszerek I. 3. előadás Dr. Bécsi Tamás

Számítógép Architektúrák

Operandus típusok Bevezetés: Az utasítás-feldolgozás menete

Mikrokontrollerek. Tihanyi Attila május 8

SZÁMÍTÓGÉPEK BELSŐ FELÉPÍTÉSE - 1

SZÁMÍTÓGÉP ARCHITEKTÚRÁK

Mikrorendszerek tervezése

Assembly programozás levelező tagozat

Aritmetikai utasítások I.

Informatika 1 2. el adás: Absztrakt számítógépek

Assembly. Iványi Péter

Számítógép Architektúrák (MIKNB113A)

Hardverközeli programozás oktatása a DIY Calculator segítségével Teaching hardware programming with DIY Calculator

Adatok ábrázolása, adattípusok

Bevezetés a számítástechnikába

Számítógép architektúrák

A Számítógépek hardver elemei

A mikroprocesszor felépítése és működése

Számítógépek felépítése

1. ábra: Perifériára való írás idődiagramja

Máté: Assembly programozás

VI. SZOFTVERES PROGRAMOZÁSÚ VLSI ÁRAMKÖRÖK

Assembly Utasítások, programok. Iványi Péter

7. Fejezet A processzor és a memória

A Számítógépek hardver elemei

Mi az assembly? Gyakorlatias assembly bevezető. Sokféle assembly van... Mit fogunk mi használni? A NASM fordítóprogramja. Assembly programok fordítása

Máté: Számítógép architektúrák

Bevezetés a számítástechnikába

Központi vezérlőegység

Bevezetés az assembly nyelvbe

Jelfeldolgozás a közlekedésben

Máté: Számítógép architektúrák

[cimke:] [feltétel] utasítás paraméterek [; megjegyzés]

2017/12/16 21:33 1/7 Hardver alapok

SzA19. Az elágazások vizsgálata

Assembly utasítások listája

Máté: Számítógép architektúrák

Digitális technika VIMIAA01 9. hét Fehér Béla BME MIT

Digitális technika VIMIAA01 9. hét

Mechatronika és mikroszámítógépek 2017/2018 I. félév. Bevezetés a C nyelvbe

Műveletek. Dr. Seebauer Márta. Budapesti Műszaki Főiskola Regionális Oktatási és Innovációs Központ Székesfehérvár

Az interrupt Benesóczky Zoltán 2004

Mechatronika és mikroszámítógépek. 2018/2019 I. félév. Külső megszakítások

DSP architektúrák dspic30f család memória kezelése

SZÁMÍTÓGÉPARCHITEKTÚRÁK

A MiniRISC processzor

Stack Vezérlés szerkezet Adat 2.

Máté: Számítógép architektúrák

A MiniRISC processzor

Processzor (CPU - Central Processing Unit)

Programozás alapjai. 10. előadás

Máté: Számítógép architektúrák

Máté: Számítógép architektúrák

Máté: Számítógép architektúrák

Újrakonfigurálható eszközök

INTEL 8085 gépi utasításkészlete

Hardverközeli programozás 1 1. gyakorlat. Kocsis Gergely

Bevezetés az assembly nyelvbe

Archi2 Gyak. (Processzorok Utasításszintű Kezelése) 2014 ősz

Számítógép felépítése

5-6. ea Created by mrjrm & Pogácsa, frissítette: Félix

A regiszterek az assembly programozás változói. A processzor az egyes mőveleteket kizárólag regiszterek közremőködésével tudja végrehajtani.

Digitális technika VIMIAA hét

A Texas Instruments MSP430 mikrovezérlőcsalád

A számítógép alapfelépítése

Assembly Programozás Rodek Lajos Diós Gábor

Programozás alapjai C nyelv 5. gyakorlat. Írjunk ki fordítva! Írjunk ki fordítva! (3)

Egyszerű számítógép működése

HARDVERKÖZELI PROGRAMOZÁS1

A MiniRISC processzor (rövidített verzió)

Az AVR ATmega128 mikrokontroller

Digitális technika VIMIAA hét

2016/08/31 02:45 1/6 Hardver alapok

Processzorok Utasításszintű Kezelése tavasz

Assembly. Iványi Péter

Máté: Számítógép architektúrák

Mintavételes szabályozás mikrovezérlő segítségével

Digitális technika II. (vimia111) 5. gyakorlat: Tervezés adatstruktúra-vezérlés szétválasztással, vezérlőegység generációk

Miért van szükség fordítóprogramokra? Fordítóprogramok célja és szerkezete. Miért van szükség fordítóprogramokra?

Mutatók és mutató-aritmetika C-ben március 19.

Mikrovezérlık története (nagyon) röviden

LOGIKAI TERVEZÉS HARDVERLEÍRÓ NYELVEN. Dr. Oniga István

Máté: Számítógép architektúrák

Átírás:

A 6502 mikroprocesszor Czirkos Zoltán BME EET 2013. február 13.

A 6502 processzorról Z80-korabeli Chuck Peddle (rendszer) és Bill Mensch (layout) főtervezők MOS Technology de sok cég gyártotta azóta Apple II számítógépben is, de a leghíresebb: a Commodore 64-ben

A 6502 tulajdonságai 16 µm NMOS technológia, 3500 tranzisztor, 21 mm 2 8 bites adatbusz, 16 bites címbusz Egy külső órajel, belül előálĺıtott (és kivezetett) fázisjelek Kevés regiszter (A, X, Y, P, S, PC)

6502 layout

A processzor és a külvilág I/O Nem voltak külön I/O utasítások Csak memória írás/olvasás memory mapped I/O A perifériákat a memória területére kellett leképezni Pl. a C64-en a $D000-$DFFF területeken a videókártya, hangkártya stb. Megszakítások (RST reset) NMI non maskable interrupt IRQ, (BRK szoftveres megszakításkérés)

Regiszterek A Akkumulátor, 8 bites. Aritmetikai/logikai műveletek eredményeihez. X, Y Index regiszterek, 8 bites. Növelés, csökkentés, memória elérése. P Flagek. Negative, overflow, Break, Decimal, Interrupt, Zero, Carry. PC Utasításszámláló, 16 bites. SP Veremmutató, 8 bites. A verem a $0100-$01FF területen helyezkedik el.

Utasítások Betöltés LDA, LDX, LDY load Accumulator, X, Y Tárolás STA, STX, STY store A, X, Y RMW Read-modify-write ASL, LSR, ROL, ROR, INC, DEC Aritmetikai ADC, SBC add with carry, subtract with carry Összehas. CMP, CPX, CPY compare A, X, Y Logikai AND (és), ORA (vagy), EOR (xor), BIT (és, tárolatlanul) Többi ugrás/elágazás, flag beálĺıtás, regiszter másolás és verem.

Címzési módok I. Az utasításokhoz többféle címzési mód tartozik. A gyakoriakhoz (pl. LDA) mindegyik, a ritkábbakhoz (pl. BIT) hiányosan. LDA #$01 Közvetlen (immediate). A kódban megadott bájt konstans. LDA $7805 Abszolút. Az adott 16 bites címen a memóriában. LDA $05 Nullás lap (zero page). A memória $00xx helyén. (Helyet és időt spórol!) LDA $2000,X Abszolút, X indexelt. Az adott cím + X regiszter helyen a memóriában. Így lehet tömböket elérni. Van nullás lap változata. LDA $2000,Y Abszolút, Y indexelt. Mint fent.

Címzési módok II. Indirekt címzések: LDA ($80,X) Nullás lap X-indexelt indirekt. A $00xx+X és $00xx+X+1 helyén tárolt 16 bites cím által meghatározott helyen a memóriában. Pl. X=$02: a cím $0082 és $0083 helyen van. Ha $0082 = #$E2 és $0083 = #$FC, akkor a $FCE2 címről fog olvasni. Pointereket tartalmazó tömb. LDA ($80),Y Nullás lap indirekt Y-indexelt. Az adott helyen ($00xx) tárolt címet kiolvassa, hozzáadja az Y regiszter értékét, és a kapott 16 bites címmel dolgozik. Tömb elejére mutató pointer.

Regiszter transzfer és verem Mozgatás: TAX, TXA Transfer Accumulator to X register. TAY, TYA Y regiszterrel. TSX, TXS Transfer Stack pointer to X register. PHA, PLA Push/pop Accumulator. PHP, PLP Push/pop processor status. (Flag-eket.) Ugrás: JMP $FCE2 Jump absolute. JMP ($FFFC) Jump indirect. JSR, RTS Jump subroutine, return from subroutine.

Vezérlésátadás Megszakítás: elmentik a flag regisztert (P) a verembe, elmentik a következő utasítás címét (-1), utána pedig JMP. IRQ, BRK JMP ($FFFE). NMI JMP ($FFFA). RESET JMP ($FFFC). Ez egyben azt jelenti, hogy ott ROM memória kell legyen, ami a bekapcsolás utáni első utasítás címét kell tartalmazza! Visszatérés: RTI Return from Interrupt utasítás. PLP+RTS.

Flag-ek és elágazás Betöltő (load) és logikai utasítások az N és Z flaget, léptetők a C flaget is módosítják; aritmetikai utasítások az N, V, Z, és C flageket. Utasítások D, I és C flagek szoftverből álĺıthatóak (CLD/SED, CLI/SEI, CLC/SEC), a V flag csak törölhető (CLV). Elágazások BPL/BMI: Negatív flag, BVC/BVS: overflow flag, BNE/BEQ: Zero flag, BCC/BCS: Carry flag. (8 bites relatív offszet az operandus.) CMP+branch Gyakran CMP előzi meg (CoMPare) az ugrást. Az egy kivonás, de csak a flag-eket álĺıtja. CMP+BEQ (BNE): ugrás, ha (nem) egyenlő. CMP+BCC: ugrás, ha kisebb, CMP+BCS: ugrás, ha egyenlő vagy nagyobb.

Példaprogram ciklus A $0400-tól kezdődő területre beírja a számokat 0-tól 127-ig..2000 LDX #$00 ; X = 0.2002 TXA ; A = X.2003 STA $0400,X ; mem[$0400+x] = A.2006 INX ; X = X+1.2007 CPX #$80 ; X == $80?.2009 BNE $2002 ; ha nem, ugrás 2002-re.200b RTS ; vége

Példaprogram sztring másolása Sztring másolása. C stílusú sztring a végén lezáró 0. A forrás sztringre ($20) mutat, a cél sztringre ($26)..2000 A0 00 LDY #$00 ; Y = 0.2002 B1 20 LDA ($20),Y ; A = mem[mem[$20]+y].2004 91 22 STA ($26),Y ; mem[mem[$26]+y] = A.2006 F0 03 BEQ $200B ; ugrás, ha 0 ; b. if equal = b. if zero!.2008 C8 INY ; Y = Y+1.2009 D0 F7 BNE $2002 ; ugrás, ha nem 0.200b 60 RTS

Példaprogram sztring másolása gyorsan Önmódosító: a címeket bemásolja saját magába (2016-os és 2019-es sorba.) A direkt elérésű címzés gyorsabb, mint az indirekt!.2000 A5 20 LDA $20 ; $20,$21 $2017,$2018.2002 8D 17 20 STA $2017.2005 A5 21 LDA $21.2007 8D 18 20 STA $2018.200a A5 26 LDA $26 ; $26,$27 $2019,$201A.200c 8D 1A 20 STA $201A.200f A5 27 LDA $27.2011 8D 1B 20 STA $201B.2014 A0 00 LDY #$00 ; folytatás: ahogy eddig.2016 B9 FF FF LDA $FFFF,Y.2019 99 FF FF STA $FFFF,Y.201c F0 03 BEQ $2021.201e C8 INY.201f D0 F5 BNE $2016.2021 60 RTS

Példaprogram buborékrendezés I. ($30)-tól: rendezendő tömb. Elemszám: első elem. $32: flag, hogy volt-e csere SORT8 LDY #$00 ; csere flag = HAMIS (0) STY $32 LDA ($30),Y ; elemszám olvasása TAX ; X-be teszi INY ; elsö elemre mutat DEX ; elemszám csökkentése NXTEL LDA ($30),Y ; elem beolvasása A-ba INY CMP ($30),Y ; nagyobb, mint ami utána van? BCC CHKEND BEQ CHKEND ;...

Példaprogram buborékrendezés II. ;... igen, csere. PHA ; csere. az elsöt a verembe LDA ($30),Y ; fogja a másikat DEY ; Y csökkentése - elözö elem STA ($30),Y ; kiírja oda PLA ; mentett elem a veremböl INY ; Y visszanövelése STA ($30),Y ; mentett elem kiírása LDA #$FF ; csere flag = IGAZ STA $32 CHKEND DEX ; lista vége? BNE NXTEL ; nem, vissza az ellenörzéshez BIT $32 ; igen. csere flag még HAMIS? BMI SORT8 ; nem. újra végig a tömbön RTS ; igen. a tömb rendezett.

Hasznos linkek Donald F. Hanson: 6502 Block Diagram http://www.witwright.com/donpub/6502-block-diagram.pdf 6502 Instruction Set http://homepage.ntlworld.com/cyborgsystems/cs_main/ 6502/6502.htm http://www.masswerk.at/6502/6502_instruction_set.html xa65: nyílt forráskódú 6502 cross assembler. http://www.floodgap.com/retrotech/xa/

Irodalomjegyzék Michael Steil: Reverse Engineering the MOS 6502 CPU http://www.youtube.com/watch?v=k5mimbqyb4e Michael Steil: The Ultimate Commodore 64 Talk http://www.pagetable.com/?p=53 The MOS 6502 and the Best Layout Guy in the World http://research.swtch.com/2011/01/ mos-6502-and-best-layout-guy-in-world.html 6502 Source Code Repository http://6502.org/source/