60
EPSON
S5U1C62000A MANUAL
(S1C60/62 FAMILY ASSEMBLER PACKAGE)
CHAPTER 5: ASSEMBLER
Precautions
• Minus numbers -1 to -32768 are handled as 0xffff to 0x8000.
• The assembler handles expressions as 16-bit data. Pay attention to the data size when using it as 4-bit
immediate data, especially when it has a minus value.
Example:
ld a,-2+1
... NG. It will be expanded as "ld a,0xffff".
ld a,(-2+1)&0xf
... OK. It will be expanded as "ld a,0xf".
• Expressions are calculated with a sign (like a signed short in C language).
Pay attention to the calculation results of the >>, / and % operators using hexadecimal numbers.
Example:
#define NUM1 0xfffe/2
... -2/2 = -1 (0xffff)
The / and % operators can only be used within the range of +32767 to -32768.
#define NUM2 0xfffe>>1
... -2>>1 = -1 (0xffff)
Mask as (0xfffe>>1)&0x7fff.
• Do not insert a space or a tab between an operator and a term.
5.5.10 Location Counter Symbol "$"
The address of each instruction code is set in the 13-bit location counter when a statement is assembled. It
can be referred using a symbol "$" as well as labels. "$" indicates the current location, thus it can be used
for relative branch operation. The operators can be used with this symbol similar to labels.
Example:
jp $
... Jumps to this address (means endless loop).
jp $+2
... Jumps to two words after this address.
jp $-10
... Jumps to 10 words before this address.
jp $+16+(16*(BLK>16))
... Operators and defined symbols can be used.
Precaution
When the address referred to relatively with "$" is in another section, it should be noted if the in-
tended section resides at the addressed place, because if the section is relocatable, the absolute
address is not fixed until the linking is completed.