DEX
From C64-Wiki
Jump to navigationJump to searchMnemonic: | DEX | ||||||
2. Schreibweise: | {{{2. Schreibweise}}} | ||||||
Opcode: | $CA | ||||||
Operator(en): | |||||||
Byte count: | 1 | ||||||
Command type: | Arithmetic- and logic command | ||||||
Address mode: | Implied | ||||||
register flags: | |||||||
Negative Flag | |||||||
Zero Flag | |||||||
Cycles: | 2 | ||||||
DEX (short for "DEcrease X") is the mnemonic for a machine language instruction which decrements the numerical value of X index register, by one, and "wraps over" if the value goes below the numerical limits of a byte.
- If the X index register is taken as an unsigned integer, DEX "counts down" from 255 thru 0/$FF thru $0. If the index register already contains the minimum value of 0/$0 as it is decremented, it "wraps over" to the value 255/$FF.
- If the X index register is taken as a signed integer, DEX will "count down" from +127 thru −128, or +$7F thru −$80. If the register already contains the value −128/−$80 when it is decremented, it "wraps over" to the value +127/$7F.
Function flow
Explanation of the mnemonic shortcut
DEX | DEcrement X register |
Decrement X register |
Example
; This program clears the datasette I/O buffer (192 bytes) ; Start program with SYS 49152 *=$c000 ; Start address BUFFER=$033c COUNT=192 lda #0 ; fill up character ldx #COUNT ; how many characters clear_byte: sta BUFFER-1,x ; clear location, address offset by one, because X counted only to 1 dex ; memory index and counter bne clear_byte ; exit if count is zero rts ; back to BASIC
Momory content:
.c000 a9 00 lda #$00 .c002 a2 c0 ldx #$c0 .c004 9d 3b 03 sta $033b,x .c007 ca dex .c008 d0 fa beq $c004 .c00a 60 rts
Comparison with Basic command
10 X=X-1