User’s Manual MCUez HC12 Assembler
140 Assembler Syntax MOTOROLA
Assembler Syntax
7.4.3.12 Indexed, Post-Decrement
This addressing mode allows the user to decrement the base register by a
specified value after indexing takes place. The content of the base register is
read and then decremented by the specified value.
Valid range for a pre-decrement value is [1...8]. The base index register may be
X, Y, or SP.
Example:
ORG $1000
CST_TBL: DC.B $5, $10, $18, $20, $28, $30
END_TBL: DC.B $0
main: CLRA
CLRB
LDX #$END_TBL
loop: ADDD 2,X-
CPX #CST_TBL
BNE loop
Base register X is loaded with the address of the element following the table
CST_TBL ($1006).
The value at address $1006 ($0) is added to register D. Register X is
decremented by 2 (its value is $1004).
Register X is not equal to the address of CST_TBL, so the value at address
$1004 is added to D; and X is decremented by 2 again (its value is now $1002).
This loop is repeated as long as register X did not reach the beginning of the
table CST_TBL ($1000).