Hoppa till innehållet

MOS Technology 6502

Från Wikipedia
Version från den 2 oktober 2006 kl. 09.45 av Radiantx (Diskussion | Bidrag) (Snyggade upp artikeln lite.)

MOS Technology 6502 är en 8-bitars CPU skapad av MOS Technology år 1975. Chipet liknar till stora delar 6800-processorn som tillverkades av Motorola, men kostade mycket mindre. Processorn har tillverkats i många olika varianter, som har använts i diverse hemdatorer och TV-spel, bl.a. följande: Commodore PET, Commodore VIC-20, Commodore 64, Apple II, Atari 2600 och Nintendo Entertainment System.

Teknisk beskrivning

6502 har tre generella dataregister (ackumulatorn A, indexregistren X och Y), samt programräknare, stackpekare och ett statusregister. Alla dessa register är åtta bitar stora, utom programräknaren som är uppdelad i två bytes (adressrymd 0x0000 - 0xFFFF). Endast dataregistren kan manipuleras direkt med load- och store-instruktioner.

Bitarna i statusregistret har följande betydelse:

Bit Betydelse
0 Carry-biten. Sätts till 1 om resultatet av en instruktion som stödjer carry överskrider 8 bitar. Kan sättas manuellt med CLC- och SEC-instruktionerna.
1 Zero-biten. Sätts till 1 om resultatet av en instruktion är noll.
2 IRQ Disable. Stänger av all avbrottshantering om biten är satt. Manipuleras med CLI- respektive SEI-instruktionerna.
3 Decimal mode. Försätter processorn i BCD-läge. Manipuleras med CLD- respektive SED-instruktionerna.
4 BRK command. Sätts av instruktionen BRK, triggar ett non-maskable interrupt.
5 Oanvänd.
6 Overflow-biten. Håller reda på om en räkneoperation involverandes negativa tal har hamnat utanför talrymden.
7 Negative-biten. Sätts om högsta biten i resultatet av en instruktion är satt.

Programexempel

Följande assemblerprogram för 6502 adderar två 16 bitar stora tal, med carry-flagga:

lda TAL1_LO      ; Lägg lägsta byten av första talet i ackumulatorregistret
clc              ; Rensa carry-flaggan innan addition
adc TAL2_LO      ; Addera ackumulatorvärdet med lägsta byten i andra talet
sta RESULTAT_LO  ; Lagra nya ackumulatorvärdet i lägsta byten av resultatet
lda TAL1_HI      ; Lägg högsta byten av första talet i ackumulatorn
adc TAL2_HI      ; Addera, men rensa inte carry-flaggan denna gång
sta RESULTAT_HI  ; Lagra ackumulatorn i högsta byten av resultatet

De två bytes som utgör summan återfinns då på minnespositionerna RESULTAT_LO respektive RESULTAT_HI. Carry-flaggan motsvarar den 17:e biten av resultatet.

Externa länkar

6502.org - Mer information om processorfamiljen.