Herwig Siebenhofer
 / Home / 6502
 
6502 Op-Codes

    ADC
    AND
    ASL
    BCC
    BCS
    BEQ
    BIT
    BMI
    BNE
    BPL
    BRK
    BVC
    BVS
    CLC
    CLD
    CLI
    CLV
    CMP
    CPX
    CPY
    DEC
    DEX
    DEY
    EOR
    INC
    INX
    INY
    JMP
    JSR
    LDA
    LDX
    LDY
    LSR
    NOP
    ORA
    PHA
    PHP
    PLA
    PLP
    ROL
    ROR
    RTI
    RTS
    SBC
    SEC
    SED
    SEI
    STA
    STX
    STY
    TAX
    TAY
    TSX
    TXA
    TXS
    TYA

Archiv

    Kurzübersicht
    Zahlentabelle
    6502 Varianten
    6502 Register
    Adressierungen
    illegale Ops
    6502 Bugs
 

SBC             Subtract with Carry – Subtrahieren mit Carry-Flag

Grundsätzlich werden Bytewerte subtrahiert. Diese Operation wird auf eine Addition mit einem Zweierkomplement zurückgeführt. Deshalb sollte sichergesetllt sein, dass das Carry-Flag – bspw. mit SEC – vor der Subtraktion gesetzt ist. Ist das Carry-Flag gelöscht, entsteht immer ein Untertrag (Overflow-Flag wird gesetzt).

ModusSyntaxHexLängeZyklen
unmittelbarSBC #$11E922
Zero PageSBC $22E523
Zero Page,XSBC $33,XF524
absolutSBC $4400ED34
absolut,XSBC $5500,XFD34+
absolut,YSBC $6600,YF934+
indirekt,XSBC ($77,X)E126
indirekt,YSBC ($88),YF125+
+ ... zusätzlicher Taktzyklus bei erhöhtem Hi-Byte
 
beeinflußte Flags
N Negativ-Flag
V Overflow-Flag 
Z Zero-Flag
C Carry-Flag

Besonderheit:

Die Berechnung ist unabhängig vom Zustand des Decimal-Flags. Der SBC-Befehl führt deshalb bei BCD-Werten zu einem fehlerhaften Ergebnis.