National Instruments HPC467064 Computer Hardware User Manual


 
HPC167064 CPU
The HPC167064 CPU has a 16-bit ALU and six 16-bit regis-
ters
Arithmetic Logic Unit (ALU)
The ALU is 16 bits wide and can do 16-bit add subtract and
shift or logic AND OR and exclusive OR in one timing cycle
The ALU can also output the carry bit to a 1-bit C register
Accumulator (A) Register
The 16-bit A register is the source and destination register
for most IO arithmetic logic and data memory access op-
erations
Address (B and X) Registers
The 16-bit B and X registers can be used for indirect ad-
dressing They can automatically count up or down to se-
quence through data memory
Boundary (K) Register
The 16-bit K register is used to set limits in repetitive loops
of code as register B sequences through data memory
Stack Pointer (SP) Register
The 16-bit SP register is the pointer that addresses the
stack The SP register is incremented by two for each push
or call and decremented by two for each pop or return The
stack can be placed anywhere in user memory and be as
deep as the available memory permits
Program (PC) Register
The 16-bit PC register addresses program memory
Addressing Modes
ADDRESSING MODESACCUMULATOR AS
DESTINATION
Register Indirect
This is the ‘‘normal’’ mode of addressing for the
HPC167064 (instructions are single-byte) The operand is
the memory addressed by the B register (or X register for
some instructions)
Direct
The instruction contains an 8-bit or 16-bit address field that
directly points to the memory for the operand
Indirect
The instruction contains an 8-bit address field The contents
of the WORD addressed points to the memory for the oper-
and
Indexed
The instruction contains an 8-bit address field and an 8- or
16-bit displacement field The contents of the WORD ad-
dressed is added to the displacement to get the address of
the operand
Immediate
The instruction contains an 8-bit or 16-bit immediate field
that is used as the operand
Register Indirect (Auto Increment and Decrement)
The operand is the memory addressed by the X register
This mode automatically increments or decrements the X
register (by 1 for bytes and by 2 for words)
Register Indirect (Auto Increment and Decrement) with
Conditional Skip
The operand is the memory addressed by the B register
This mode automatically increments or decrements the B
register (by 1 for bytes and by 2 for words) The B register is
then compared with the K register A skip condition is gener-
ated if B goes past K
ADDRESSING MODESDIRECT MEMORY AS
DESTINATION
Direct Memory to Direct Memory
The instruction contains two 8- or 16-bit address fields One
field directly points to the source operand and the other field
directly points to the destination operand
Immediate to Direct Memory
The instruction contains an 8- or 16-bit address field and an
8- or 16-bit immediate field The immediate field is the oper-
and and the direct field is the destination
Double Register Indirect Using the B and X Registers
Used only with Reset Set and IF bit instructions a specific
bit within the 64 kbyte address range is addressed using the
B and X registers The address of a byte of memory is
formed by adding the contents of the B register to the most
significant 13 bits of the X register The specific bit to be
modified or tested within the byte of memory is selected
using the least significant 3 bits of register X
HPC Instruction Set Description
Mnemonic Description Action
ARITHMETIC INSTRUCTIONS
ADD Add MA
a
MemI
x
MA carry
x
C
ADC Add with carry MA
a
MemI
a
CMA carry
x
C
ADDS Add short imm8 A
a
imm8
x
A carry
x
C
DADC Decimal add with carry MA
a
MemI
a
C
x
MA (Decimal) carry
x
C
SUBC Subtract with carry MA
b
MemI
a
C
x
MA carry
x
C
DSUBC Decimal subtract wcarry MA
b
MemI
a
C
x
MA (Decimal) carry
x
C
MULT Multiply (unsigned) MAMemI
x
MAX0
x
K 0
x
C
DIV Divide (unsigned) MAMemI
x
MA rem
x
X 0
x
K 0
x
C
DIVD Divide Double Word (unsigned) X  MAMemI
x
MA rem
x
X 0
x
K carry
x
C
IFEQ If equal Compare MA  MemI Do next if equal
IFGT If greater than Compare MA  MemI Do next if MA
l
MemI
AND Logical AND MA and MemI
x
MA
OR Logical OR MA or MemI
x
MA
XOR Logical Exclusive-OR MA xor MemI
x
MA
MEMORY MODIFY INSTRUCTIONS
INC Increment Mem
a
1
x
Mem
DECSZ Decrement skip if 0 Mem
b
1
x
Mem Skip next if Mem
e
0
28