274
Data Movement Instructions
Section 5-18
Stack Operation
When bits 12 to 15 of C=9, DIST(80) can be used for a stack operation. The
other 3 digits of C specify the number of words in the stack (000 to 999). The
content of DBs is the stack pointer.
When the execution condition is OFF, DIST(80) is not executed. When the
execution condition is ON, DIST(80) copies the content of S to DBs+1+the
content of DBs. In other words, 1 and the content of DBs are added to DBs to
determine the destination word. The content of DBs is then incremented by 1.
Note
1.
DIST(80) will be executed every cycle unless the differentiated form
(@DIST(80)) is used or DIST(80) is used with DIFU(13) or DIFD(14).
2.
Be sure to initialize the stack pointer before using DIST(80) as a stack op-
eration.
Example
The following example shows how to use DIST(80) to create a stack between
DM 0001 and DM 0005. DM 0000 acts as the stack pointer.
Flags
ER:
The offset or stack length in the control word is not BCD.
Indirectly addressed EM/DM word is non-existent.
(Content of
*
EM/
*
DM word is not BCD, or the EM/DM area boundary
has been exceeded.)
During stack operation, the value of the stack 1 exceeds the
length of the stack.
@DIST(80)
#00FF
HR 10
LR 10
00000
Address Instruction
Operands
00000
LD
00000
00001
@DIST(80)
#
00FF
HR
10
LR
10
F
#00FF
0 0 F
0
HR 10
0 0 0
F
HR 15
0 0 F
5
LR 10
3 0 0
@DIST(80)
001
DM 0000
216
00000
Address Instruction
Operands
00000
LD
00000
00001
@DIST(80)
001
DM
0000
216
DM 0000
0000
DM 0001
0000
DM 0002
0000
DM 0003
0000
DM 0004
0000
DM 0005
0000
Stack pointer
incremented
First execution
DM 0000
0001
DM 0001
FFFF
DM 0002
0000
DM 0003
0000
DM 0004
0000
DM 0005
0000
Stack pointer
incremented
Second
execution
IR 001
FFFF
IR 216
9005
DM 0000
0002
DM 0001
FFFF
DM 0002
FFFF
DM 0003
0000
DM 0004
0000
DM 0005
0000