Overriding Expression Sizes
With the 65816 comes addressing modes with byte, word, and xword (24 bits) sizes. There are times where you want to use 16-bit immediate values, Absolute, or Absolute Long addressing modes
but the value equates to a smaller size and the assembler "optimizes" the addressing mode. The methods described here allows you to force a parameter size to your needs.
Syntax:
[<label>[:]] LDA !#expr ; '!#' forces 2 byte immediate value
|
[<label>[:]] LDA \1expr ; force 1 byte using direct page addressing modes
|
[<label>[:]] LDA \2expr ; force 2 bytes using absolute addressing modes
|
[<label>[:]] LDA \3expr ; force 3 bytes using absolute long addressing modes
|
Example:
alpha: LDA !#$1234 ; will generate $1234 for the immediate value.
|
alpha: LDA !#$12 ; will generate $0012 for the immediate value.
|
alpha: LDA \1$12345678 ; will generate $78 - taking the lease significant byte of the expression.
|
beta: LDA \2alpha ; will generate the 2 least significant bytes of the value of alpha.
|
LDA \3alpha-1 ; will generate the 3 least significant bytes of the value of alpha minus 1.
|