4-3
PROGRAMMING CONSIDERATIONS
4.1.4 WORD Operands
A WORD is an unsigned, 16-bit variable that can take on values from 0 through 65,535 (2
16
–1).
Arithmetic and relational operators can be applied to WORD operands, but the result must be in-
terpreted in modulo 65536 arithmetic. Logical operations on WORDs are applied bitwise. Bits
within WORDs are labeled from 0 to 15; bit 0 is the least-significant bit.
WORDs must be aligned at even byte boundaries in the address space. The least-significant byte
of the WORD is in the even byte address, and the most-significant byte is in the next higher (odd)
address. The address of a WORD is that of its least-significant byte (the even byte address).
WORD operations to odd addresses are not guaranteed to operate in a consistent manner.
4.1.5 INTEGER Operands
An INTEGER is a 16-bit, signed variable that can take on values from –32,768 (–2
15
) through
+32,767 (+2
15
–1). Arithmetic operations that generate results outside the range of an INTEGER
set the overflow flags in the processor status word (PSW). The numeric result is the same as the
result of the equivalent operation on WORD variables.
INTEGERs must be aligned at even byte boundaries in the address space. The least-significant
byte of the INTEGER is in the even byte address, and the most-significant byte is in the next high-
er (odd) address. The address of an INTEGER is that of its least-significant byte (the even byte
address). INTEGER operations to odd addresses are not guaranteed to operate in a consistent
manner.
4.1.6 DOUBLE-WORD Operands
A DOUBLE-WORD is an unsigned, 32-bit variable that can take on values from 0 through
4,294,967,295 (2
32
–1). The architecture directly supports DOUBLE-WORD operands only as
the operand in shift operations, as the dividend in 32-by-16 divide operations, and as the product
of 16-by-16 multiply operations. For these operations, a DOUBLE-WORD variable must reside
in the lower register file and must be aligned at an address that is evenly divisible by four. The
address of a DOUBLE-WORD is that of its least-significant byte (the even byte address). The
least-significant word of the DOUBLE-WORD is always in the lower address, even when the
data is in the stack. This means that the most-significant word must be pushed into the stack first.
DOUBLE-WORD operations that are not directly supported can be easily implemented with two
WORD operations. For example, the following sequences of 16-bit operations perform a 32-bit
addition and a 32-bit subtraction, respectively.
ADD REG1,REG3 ; (2-operand addition)
ADDC REG2,REG4
SUB REG1,REG3 ; (2-operand subtraction)
SUBC REG2,REG4