MOS Technology 6502
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.
- 6502asm.com - En virtuell maskin baserad på 6502, skriven i JavaScript.