Addressing modes, Hpc instruction set description – National Instruments HPC167064 User Manual

Page 28

Advertising
background image

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

MAaMemI

x

MA carry

x

C

ADC

Add with carry

MAaMemIaCMA carry

x

C

ADDS

Add short imm8

Aaimm8

x

A carry

x

C

DADC

Decimal add with carry

MAaMemIaC

x

MA (Decimal) carry

x

C

SUBC

Subtract with carry

MAbMemIaC

x

MA carry

x

C

DSUBC

Decimal subtract w carry

MAbMemIaC

x

MA (Decimal) carry

x

C

MULT

Multiply (unsigned)

MA MemI

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 b1

x

Mem Skip next if Mem e 0

28

Advertising
This manual is related to the following products: