From C64-Wiki
Jump to navigationJump to search
Disambiguation The title of this article is ambiguous. This article is about the 6502 instruction. For the BASIC 3.5 and 7.0 function, see DEC (BASIC 3.5)..

DEC (short for "DECrease") is the mnemonic for a machine language instruction which decrements the numerical value of the contents of the address specified, by one, and "wraps over" if the value goes below the numerical limits of a byte.

  • If the byte in question is taken as an unsigned integer, DEC "counts down" from 255 thru 0/$FF thru $0. If a byte already containing the value 0/$0 is DECremented, it "wraps over" to the value 255/$FF.
  • If the byte is taken as a signed integer, DEC will "count down" from +127 thru −128, or +$7F thru −$80. If a byte already holding the value −128/−$80 is DECremented, it "wraps over" to the value +127/$7F.

Addressing modes[edit]

Opcode Addressing
in bytes
Number of
Dec Hex
206 CE Absolute DEC nnnn 3 6
222 DE Absolute,X DEC nnnn,X 3 7
198 C6 Zeropage DEC nn 2 5
214 D6 Zeropage,X DEC nn,X 2 6

DEC supports the four different addressing modes shown in the table at right. In the assembler formats listed, nn represents a single-byte (8-bit) figure, and nnnn is a two-byte (16-bit) address.

CPU flags[edit]

DEC affects 2 of the CPU's status flags:

  • The negative status flag is set if the result is negative, i.e. has it's most significant bit set.
  • The zero flag is set if the result is zero, or cleared if it is non-zero.