MCS 4 Assembly Language Programming Manual Dec73
MCS-4_Assembly_Language_Programming_Manual_Dec73 MCS-4_Assembly_Language_Programming_Manual_Dec73
msc-4-asm-manual-1973
msc-4-asm-manual-1973
MCST%7E4%20(Intel%204004)%20Assembly%20Language%20Programming%20Manual%20PRELIMINARY%20EDITION
User Manual: manual pdf -FilePursuit
Open the PDF directly: View PDF
.
Page Count: 149
| Download | |
| Open PDF In Browser | View PDF |
®
INTEL CORP. 3065 Bowers Avenue, Santa Clara, California 95051 • (408) 246-7501
Assemblv
Language Programming
Manual
MCST~4
PRELIMINARY EDITION
December 1973
"@ I ntel Corporation 1973
The INTELLEC 4 Microcomputer System
Programming Manual
PAGE No.
1.0
INTRODUCTION . • . • • • . • • . • • • • • • • • • • • • •
1-1
2.0
COMPUTER ORGANIZATION
2-1
2.1
2.2
2.3
2-2
WORKI NG REGl STERS (INDEX REGISTERS)
THE ACCUMULATOR
• • • . • • • . • •
MEMORIES • • • • . • • • • •
2.3.1
2.3.2
·2.3.3
2.4
2.5
2.6
2.7
THE STACK • • • • • • • • • • • • • '" • . • •
INPUT/OUTPUT
.••.••.
••
••
COMPUTER PROGRAM REPRESENTATION IN MEMORY
MEMORY ADDRESSING • • • •
• ••
2.7. 1
2.7.2
2.7.3
2.7.4
2.7.5
2.7.6
2.7.7
2.8
3.0
READ-ONLY MEMORY
PROGRAM RANDOM ACCESS MEMORY . • .
DATA RANDOM ACCESS MEMORY
DIRECT ADDRESSING
SAME PAGE ADDRESSING
INDIRECT ADDRESSING
.
IMMEDIATE ADDRESSING
PROGRAM RAM ADDRESSING
DATA RMv1 ADDRESSING . .
.
SUBROUTINES AND USE OF THE STACK
FOR ADDRESSING
3.1
2-3
2-4
2-5
2-7
2-9
2-10
2-13
2-13
2-14
2-15
2-16
2-16
2-16
2-17
2-20
CARRY BIT
THE 4004 INSTR.UCTION SET
2-3
2-3
•••
3-1
ASSEMBLY LANGUAGE
3-1
3.1 .1
3. 1 .2
3-1
HOW ASSEMBLY LANGUAGE IS USED
STATEMENT MNEMONICS
i
3-4
rn'.bl\ffiILJE
(Q)}f'
(G;(Q)mJrn'I:Emf1rfB> -- (Continued)
The INTELLEC 4 Microcomputer System
Programming Manual
PAGE No.
3.1.3
3.1.4
3.1.5
3.1 • 6
3.2
DATA STATEMENTS
3.2.1
3.2.2
3.3
3.3.2
TWO'S COMPLE!v1ENT
CONSTANT DATA
INC
FIN
INCREMENT REGISTER
FETCH INDIRECT • • •
INDEX REGISTER TO ACCUMULATOR INSTRUCTIONS.
3.4.1
3.4.2
3.4.3
3.4.4
3.5
••••
INDEX REGISTER INSTRUCTIONS
3.3.1
3.4
LAB EL FIELD • • •
CODE FIELD . • •
OPERAND FIELD
COMMENT FIELD
ADD ADD REGISTER TO ACCUMULATOR
WITH CARRY • • • • • • • • . . . •
SUB SUBTRACT REGISTER FROM ACCUMULATORWITH BORROW • . • • • • •
LD
LOAD ACCUMULATOR • • • . • • • .
XCH EXCHANGE REGISTER AND ACCUMULATOR . . • • •
3-5
3-6
3-7
3-11
3-12
3-12
3-15
3-16
3-17
3-18
3-20
3-21 .
3-22
3-24
3-25
ACCUMULATOR INSTRUCTIONS.
3-26
3.5.1
3-27
3-27
3.5.6
CLB
CLC
lAC
CMC
CMA
RAL
3.5.7
RAR
3.5.2
3.5'-3
3.5.4
3.5.5
3.5.8
3.5.9
TCC
DAC
CLEAR BOTH ••
CLEAR CARRY. •
INCREMENT ACCUMULATOR • • • •
COMPLEMENT CARRY • • • . •
COMPLEMENT ACCUMULATOR •
ROTATE ACCUMULATOR LEFT
TH ROUGH CARRY ~ • . • • . • •
ROTATE ACCUMULATOR RIGHT
THROUGH CARRY . • • • • • .
TRANSMIT CARRY AND CLEAR.
DECREMENT ACCUMULATOR •
ii
3-28
3-29
3-29
3-30
3-31
3-32
3-32
TABLE
OF
CONTENTS --
(Continued)
The INTELLEC 4 Microcomputer System
Programming Manual
PAGE No.
3.5.10
3.5.11
3.5.12
3.5.13
3. 6
3.7
3.8
3.10
3.11
TRANSFER CARRY SUBTRACT • • • • •
SET CARRY . • • . • • • • • . . . •
DECIMAL ADJUST ACCUMULATOR . .
KEYBOARD PROCESS ••
3-33
3-34
3-34
3-35
IMMEDIATE INSTRUCTIONS • • . •
3-36
3. 6. 1
3.6.2
3-36
3-37
FIM
LDM
FETCH IMMEDIATE
LOAD ACCUMULATOR. • •
TRANSFER OF CONTROL INSTRUCTIONS
3-38
3,7.1
3.7.2
3.7.3
3.7.4
3-38
3-40
3-41
3-43
JUN
JIN
JCN
ISZ
JUMP UNCONDITIONALLY
JUMP INDIRECT • • • • ...
JUMP ON CONDITION
INCREMENT AND SKIP IF ZERO .
SUBROUTINE LINKAGE COMMANDS
3.8.1
3.8.2
3.9
TCS
STC
DAA
KBP
JMS
BBL
~
,
JUMP TO SUBROUTINE . '
BRANCH BACK AND LOAD
3-45
3-45
3-46
NOP INSTRUCTION NO OPERATION . .
:tv1EMORY SELECTION INST!{UCTIONS
3-48
3-48
3. 10.1
3.10.2
3-48
3-50
DCL DESIGNATE COMMAND LINE
SRC SEND REGISTER CONTROL .
INPUT/OUTPUT RAM INSTRUCTIONS
3.11.1
3.11.2
3.11.3
3.11.4
3.11.5
3.11.6
•..
RDM READ DATA RAM DATA CHARACTER •.
RDn READ DATA RAM STATUS CHARACTER •
RDR READ ROM PORT . . . . . . . . . . .
WRM VvRITE DATA RAlvI CHARACTER • . . .
WRn WRITE DATA RAM STATUS CHARACTEH
vVMP WRITE RAIvI PORT . . . . . . . . . . .
iii
3-53
3-54
3-54
3-55
3-56
3-57
3-58
TAB LEO F
G 0 N TEN T S - -
( Continu ed )
The INTELLEC 4 Microcomputer System
Programming Manual
PAGE No.
3.11. 7
3.11.8
3.11.9
WRR
ADM
SBM
3.11.10 WPM
3.12
PSEUDO INSTRUCTION
3.12.1
3.12.2
4.0
WRITE ROM PORT • • • • • • • • • •
ADD DATA RAM TO ACCUMULATOR
WITH CARRY . • • . • • . •
SUBTRACT DATA RAM FROM
MEMORY WITH BORROW
WRITE PROGRAM RAM
•••••
EQUATE FUNCTION
ORIGIN FUNCTION
3-59
3-60
3-61
3-62
3-65
3-65
3-66
PROGRAMMING TECHNIQUES • • • •
4-1
4.1
4.2
4.3
4-3
4-5
4.4
CROSSING PAGE BOUNDARIES
SUBROUTINES • • • • . . . • •
BRANCH TABLE PSEUDOSUBROUTINE
LOGICAL OPERATIONS
4.4.1
4.4.2
4.4.3
4.5
4.6
4.7
4.8
4.9
APPENDIX
APPENDIX
APPENDIX
APPENDIX
"A"
"B"
"C"
"DII
LOGICAL "AND" .
LOGICAL II OR"
• . • .
LOGICAL "XOR" EXCLUSIVE-OR
4-1
4-8
4-8
4-9
4-11
MULTI-DIGIT ADDITION •.
MULTI-DIGIT SUBTRACTION
DECIMAL ADDITION
DECIMAL SUBTRACTION. •
FLOATING POINT NUMBERS
4-13
INSTRUCTION SUMMARY
INSTRUCTION MACHINE CODES
ASCII TABLES . . . • . . • • . •
. • • • .
BINARY-DECIMAL-HEXADECIMAL CONVERSION
TABLES • • • • • . • • . • • • • • • . • • • • .
A-I
B-1
C-1
iv
4-15
4-18
4-20
4-24
D-l
-- TERMS
AND
ABBREVIATIONS --
Address
A 12 bit number as signed to a read -only-memory or program
random -access memory location corresponding to its sequential
position.
Bit
The smallest unit of information which can be represented.
bit may be in one of two states 0 or 1).
(A
I
Byte
A group of 8 contiguous bits occupying a single memory location.
Character
A group of 4 contiguous bits of data.
Instruction The smallest single operation that the computer can be directed
to execute.
Obj ect
Program
A program which can be loaded directly into the computer's memory
and which requires no alteration before execution. An object program
is usually on paper tape and is produced by assembling
a source program. Instructions are represented by binary machine
code in an object program.
I
Program
A sequence of instructions which l taken as a group I allow the
computer to accomplish a desired task.
Source
Program
A program which is readable by a programmer but which must be
transformed into object program format before it can be loaded into
the computer and executed. Instructions in an as sembly language
source program are represented by their assembly language mnemonic.
System
Program
A program written to help in the process of creating user programs.
User
Program
A program written by the user to make the computer perform any
nnnB
nnnH
nnn represents a number in binary format.
nnn represents a number in hexadecimal format.
desired ta sk.
Note:
All numbers in this manual are assumed to be decimal unless otherwise specified.
A representation of a byte in memory. Bits which are fixed as
o or 1 are indicated by 0 or 1; bits vvhich may be either 0 or 1
in different circumstances are represented by letters; thus RP
represents a three-bit field which contains one of the eight
possible combinations of zeroes and ones.
1.0
INTRODUCTION
This manual has been written to help the reader program the INTEL 4004
microcomputer in assembly language, and to show how it is economical and
practical to do so. Accordingly this manual assumes that the reader has a good
understanding of logic, but may be unfamiliar with programming concepts.
I
For those readers vlho do understand programming concepts, several features of the
INTEL 4004 microcomputer are described below. They include:
• 4 bit pa.rallel CPU on a single chip.
• 46 instructions, including conditional branching,
subroutine capability and binary and decimal
arithmetic modes.
I
• Direct addressing for 32,768 bits of read-only
memory, 5120 bits of data random-access memory
and 32 768 bits of program random-access
memory .
I
• Sixteen 4 -bit index registers and a three 12 -bit
register stack.
INTEL 4004 microcomputer users will have widely differing programming needs.
Some users may wish to write a few short programs, while other users may have
extensive programming requirements.
For the user with limited programming needs two system programs resident on the
INTELLEC 4 (Intel! s development system for the MCS-4microcomputer) are provided;
they are an Assembler and a System Monitor. Use of the INTELLEC 4 and its system
programs is described in the INTELLEC 4 Operator's Manual.
I
For the user with extensive programming needs, cross assemblers are available
which allow programs to be generated on a computer having a FORTRAN compiler
whose word size is 32 bits or greater, limiting INTELLEC 4 use to final checkout of
programs only.
1 --1
2.0
COMPUTER ORGANIZATION
This section provides the programmer with a functional overview of the 4004
computer. Information is presented in this section at a level that provides a programmer with necessary background in order to write efficient programs.
To the programmer the computer is represented as consisting of the following
parts:
I
(1)
Sixteen working registers which serve a s temporary storage for data I
and provide the means for addressing memory.'
(2 )
The accumulator in vvhich data is processed.
(3)
Memories which may hold program instructions or data (or sometimes
both) and which must be addressed location by location in order to
access stored information.
I
I
I
(4 )
The stack which is a device used to facilitate execution of subroutines,
as described later in this section.
(5 )
Input/Output I which is the interface between a program and the outside
world.
I
2-1
2.1
WORKING REGISTERS
(INDEX REGISTERS)
The 4004 provides the programmer with sixteen 4-bit registers. These may be referenced individually by the integers 0 through 15 or as 8 register pairs by the even
integers from 0 through 14. The register pairs may also be referenced by the symbols
OP through 7P. These correspondences are shown as follows:
I
INDIVIDUAL REGISTER REFERENCE
Register 0
....
0
1
.....
Register 1
Register 2
~
2
3
.....
Register 3
Register 4
~
4
5
.......
Register 5
Register 6
....
6
7
......
8
9
...
Register 7
10
11
.....
Register 11
12
'13
14
15
Register 8
Register 10
Register 12
Register 14
...
....
..
--...
Register 9
Register 13
Regi'ster 15
REGISTER PAIR REFERENCE
o or OP
...
0
1
Register Pair 2 or IP
....
2
3
Register Pair
Regi ster Pair 4 or 2P
..
4
5
Register Pair
....
6
7
8
9
6 or 3P
Register Pair 8 or 4P
)III
Register Pair 10 or SP
....
10
11
Register Pair 12 or 6P
....
12
13
14
15
Register Pair 14 or 7P
..
2-2
2. 2
THE ACCUMULATOR
The accumulator is a special 4-bit register in which data may be transformed by
program instructions.
2.3
MEMORIES
The 4004 can be used with three different types of memory which have different
organizations and characteristics, and are used for different purposes. These
are described below.
2.3.1
READ-ONLY MEMORY
Read-only memory (ROM) is used for storing program instructions and constant
data which is never changed by the program. This is because the program can
read locations in ROM, but can never alter (write) ROM locations.
ROM may be visualized as in Figure 2-1, as a sequence of bytes, each of which
may store 8 bits (two hexadecimal digits). Up to 4096 bytes of ROM may be present, and an individual byte is addressed by its sequential number between 0 and
4095.
ROM is further divided into pages each of which contains 256 bytes. Thus locations
o through 255 comprise page 0 of ROM location 256 through 511 comprise page
1 and so on.
I
I
2-3
DECIMAL
ADDRESS
0
HEXADECIMAL
ADDRESS
~
8 bits
----
0
PAGE 0
255
256
FF
100
------------------------PAGE 1
511
IFF
------------- •
3840
FOO --------------
•
PAGE 15
4095
FFF --------------
.,
FIGURE 2-1.
ROM ORGANIZATION
f\s described in Section 3, certain instructions function differently when located
in the last byte (or bytes) of a page than when located elsewhere.
2.3.2
PROGRAM RANDOM ACCESS MEMORY
Program random access memory (RAM) is organized exactly like ROM. 4096
locations are always available, which are used to hold program instructions
or data. Unlike ROM, however, program RAM locations can be altered by
program instructions.
2-4
2.3.3
DATA RANDOM ACCESS MEMORY
As its name implies I data random access memory (DATA RAM) is used for the
temporary storage of data by programs.
Figures 2-2 and 2-3 show how this memory is addressed:
"DCL" INSTRUCTION CHOOSES 1 OF 8
DATA RAM BANKS
/
I
~~
•
•
\
0
DATA RAM
CHIP 0
DATA RAM
CHIP 0
DATA RAM
CHIP 1
DATA RAM
CHIP 1
DATA RAM
CHIP 2
DATA RAM
CHIP 2
DATA RAM
CHIP 2
DATA RAM
CHIP 3
DATA RAM
CHIP 3
DATA RAM
CHIP 3
DATA RAM
BANK 0
DATA RAM
BANK 1
DATA RAM
CHIP 0
.
.
.
.
.
.
FIGURE 2-2.
DATA RAM BANK ORGANIZATION.
2-5
.
DATA RAM
CHIP 1
DATA RAM
BANK 7
Decimal
Addresses
16 Directly Addres sable
4-bit characters per
DATA RAM Register.
Hexadecimal
Addresses
4 Specially Addressable
4 bit status characters
per DATA RAM Register.
, , ._ _ _ _---.JA _ _ _ _ _ _
,
0-15
16-31
32-47
48-63
...
OO-OF
10-1F
20-2F
30-3F
1:111.
111111
DATA
DATA
DATA
DATA
RAM
RAM
RAM
RAM
REGISTER
REGISTER
REGISTER
REGISTER
0
1
2
3
FIG URE 2-3.
DATA RAM CHIP 0 ORGANIZATION
In order to address 0. 4 bit character of DATA RAM, the programmer first uses a
"DeL" instruction as described in Section 3.10.1 to choose one of a maximum of
eight DATA RAM BANKS. An eight bit address is then sent via an "SRC" instruction as described in Section 3.10,2 which chooses one of four DATA RAM CHIPS
within the DATA RAM BANK, one of four 16-character DATA RAM REGISTERS within
the DATA RAM CHIP and one of 16 4-bit characters within the DATA RAM REGISTER.
Within any particular DATA RAM BANK then addres ses 0- 63 indicate which of
the 64 directly addressable characters of DATA RAM CHIP 0 is to be addressed.
Addresses 64-127 correspond to the characters of CHIP I, addresses 128-191
correspond to CHIP 2, and addresses 192-255 correspond to CHIP 3.
I
I
I
In addition, each DATA RAM REGISTER has four 4-bit STATUS characters associated
with it. These status characters may be read and written like the data characters
but are accessed by special instructions as described in Section 3.
I
2-6
2.4
THE STACK
The stack consists of three 12-bit registers used to hold addresses of program instructions. Since progra~s are always run in ROM or program RAM the
stack registers will always refer to ROM locations or program RAM locations.
I
Stack operations consist of writing an address to the stack and reading an address
from the stack. In order to understand the se operations it may be helpful to visualize the stack as three registers on the surface of a cylinder as shown below:
I
I
I
a
represents an address
Each stack register is adjacent to the other two stack registers.
pointer to the next stack register available.
'
The 4004 keeps a
Writing An Address To The StacJs.:
To perform a stack write operation;
(1 )
The address is written into the register indicated by the pointer.
(2 )
The painter is advanced to the next sequential register.
Any register may be used to hold the first address written to the stack. More than
three addresses may be written to the stack; however this will cause a corresponding number of previously stored addresses to be overwritten and lost. This is
illustrated in Figure 2-4.
I
2-7
After 2 Writes
aI bI
......
C
I
After 3 Writes
After 4 Writes
a
a
d
b
b
b
c
c
d represent any 4 memory addres ses •
represents the stack pointer.
FIGURE 2-4.
STACK WRITE OPERATIONS
Storing the fourth address (d) overwrites the first address stored (a).
Reading An Address From The Stack:
To perform a stack read operation;
(1 )
The pOinter is backed up one register.
(2 )
The memory addres s indicated by the pOinter is read.
The address read remains in the stack undisturbed. Thus I if 4 addresses are
written to the stack and then three reads are performed, the stack will appear as
in Figure 2 -5 •
2-8
First read:
Address d is read
d
Second read:
Address c is read
Third read:
Address b is read
§
d
b
b
c
d
b
c
b, c, d represent any 3 memory addres ses .
-repres ents the stack pointer.
,'!'111;-
FIGURE 2-5.
STACK READ OPERATIONS.
Section 2.7.7
2.5
describes how the stack is used by. programs.
INPUT/OUTPUT
Programs communicate with the outside world via 4-bit input or output ports. The
operation of these ports is controlled by special I/O instructions described in Section 3.
These ports are physically located on the same devices which hold ROMs and
DATA RAMs; therefore, they are referred to as ROM ports or RAM ports. These
are totally separate from the instruction or data locations provided in ROM or
RAM, and should not be confused with them.. The ports associated with RAMs may
be used only for output.
2-9
2. 6
COMPUTER PROGRAM REPRESENTATION IN MEMORY
A computer program consists of a sequence of instructions. Each instruction performs an elementary operation such as the movement of data an arithmetic
operation on data, or a change in instruction execution sequence. Instructions are described individually in Section 3.
I
A program will be stored in Read -Only Memory or Program Random Acces s
Memory. It will appear as a sequence of hexadecimal digits which represent the
instructions of the program. The memory address of the instruction being executed
is recorded in a 12-bit register called the Program Counter and thus it is pos sible
to track a program a s it is being executed. After ea ch instruction is executed the
program counter is advanced to the address of the next instruction. Program execution
proceeds sequentially unless a transfer-of-control instruction (jump or skip) is
executed which causes the program counter to be set to a specified address.
Execution then continues sequentially from this new address in memory.
I
I
I
Upon examining the contents of a ROM or program RAM memory location
there is no way of telling whether a byte contains Ln encoded instruction or constant data. For example, the hexadecimal code F2 has been selected to represent
the instruction lAC (increment accumulator). Thu s the hex; value F2 stored in a memory
byte could represent either the instruction lAC or the hex data value F2.
I
I
It is up to the programmer to insure that data is not misinterpreted as an instruction code, but this is Simply done as follows:
Every program ha s a starting memory address, which is the memory address of the
location holding the first instruction to be executed. Just before the first instruction is executed, the program counter will automatically be set to this address,
and this procedure will be repeated for every instruction in the program. 4004
instructions may require 8 or 16 bits for their encoding; in each ca se the program
counter is set to the corresponding address as shown in Figure 2-6.
2-10
MEMORY
ADDRESS
(Hexadecimal)
INSTRUCTION
NUMBER
PROGRAM COUNTER
CONTENTS
(Hexadecimal)
13A
13A
}
1
13B
}
2
3
13E
}
13F
}
4
13F
}
5
140
13C
13D
140
141
13B
13D
FIGURE 2-6.
PROGRAM COUNTER CONTENTS AS INSTRUCTIONS ARE EXECUTED.
In order to avoid errors, the programmer must be sure that a byte of constant data
does not follow an instruction when another instruction is expected. Referring to
Figure 2-6, an instruction is expected in location 13FH, since instruction 4 is to
be executed after instruction 3. If location 13 FH held constant data, the program
would not execute correctly. Therefore, when writing a program, do not place
constant data in between adjacent instructions that are to be executed consecutiv-ely.
A cIa ss of instructions (referred to as transfer-of-control instructions) cause program
execution to branch to an instruction other than the next sequential instruction. The
memory address specified by the transfer of control instruction must be the address
of another instruction; if it is the address of a memory location holding data, the
program will not execute correctly. For example, referring to Figure 2-6, suppose
instruction 2 specifies a jump to location 14 OR and instructions 3 and 4 were replaced by data. Then following execution of instruction 2, the program counter would
be set to 140H and the program would execute correctly. But if, in error, instruction
2 were to specify a jump to 13EH, an error would result since this location now holds
data. Even if instructions 3 and 4 were not altered, a jump to location 13EH would
cau sean error, since this is not the first byte of the instru ction.
I
2-11
Upon reading Section 3, you will see that it is easy to avoid writing an assembly
language program with jump instructions which have erroneous memory addresses.
Information on this subject is given here rather to help the programmer who is debugging programs by entering hexadecimal codes directly into program RAM
(Programs usually exist in ROM I and therefore cannot be altered in this manner).
2-12
2. 7
MEMORY ADDRESSING
By now it will have become apparent that addressing specific memory bytes constitutes an important part of any computer program. There are a number of ways in
which this can be done as described in the following subsections.
I
2.7. 1
DIRECT ADDRESSING
With direct addressing I as the name implies I an instruction provides an exact
memory address. The following instruction provides an example of direct addressing:
"Jump to location3A2 H
lJ
This instruction is represented by 4 hexadecimal digits in RQM or program
RAM. The first digit is a 4, signifying a jump instruction while the final 3 digits
specify the address.
I
This instruction would appear in memory as follows:
ARBITRARY MEMORY
ADDRESS·
(Hexadecimal)
any
any + 1
MEMORY
tJd}
~
J
.
ump 'Instructlon
....._ _ _...)
Address 3A2H specified.
3A2
3A3
3A4
2-13
2.7.2
SAME PAGE ADDRESSING
Some instructions supply two hexadecimal digits which replace the lo·vvest 8 bits
of the program counter addressing a ROM or program RAM location on the
same page as the instruction being executed. (Two addresses are on the same
pcge if the highest order hexadecimal digit of their addresses are equal. See
S e cti on 2. 3 • 1 ) •
I
The following instruction provides an example of same page addressing:
II
Jump on condition 2 to location 3BH of this page.
II
This instruction would appear in memolY a s follows:
MEMORY
MEMORY ADDRESS
(Hexadecimal)
30F
310
l
3AO
3Al
E1
·
~___ code for jump on condition
{ ~I
__
2
address within this page
The identical encoding 120FH if-located at location 501H, would cause a jump to
memory address 50FH.
2-14
2.7.3
INDIRECT ADDRESSING
With indirect addressing an instruction specifies a register pair which in tum holds
an 8 bit value used for same page addressing (Section 2. 7 .2). Suppose that registers
4 and 5 hold the 4-bit hexadecimal numbers 1 and B I respectively. Then the instruction:
I
"Jump indirect to contents of register pair 4"
would appear a s follows:
MEMORY
ADDRESS
(Hexadecimal)
200
21B
21C
MEMORY
~
REGISTER PAIR
4
)lI.-
S·
I
B
17
The 3 indicates a "jump indirect" instruction; the 5 indicates that the address indicated
on this page is held in register pair 4. If register pair 4 had held the hex numbers 3 and
C, a jump to location 23CH would have occurred.
2-15
2.7.4
IMMEDIATE ADDRESSING
An immediate instruction is one that provides its own data.
ample of immediate addres sing:
II
The following is an ex-
Load the accumulator with the hexadecimal number 3" •
This instruction would be coded in memory a s follows:
MEMORY
The digit D signifies a "load accumulator immediatefl instruction; the digit 3 is the
number to be loaded.
2.7.5
PROGRAM RAM ADDRESSING
When a program stores an 8 bit value into a program RAM location a· special
sequence of instructions must be used as described in Section 3.11. 10 {the WPM
instruction) •
2.7. 6 DATA RAM ADDRESSING
To address a location in DATA RAM, the DeL and SRC instructions must be used as
described in Sections 2.3.3 3.10.1, and 3.10.2. When the DeL has chosen a
specific DATA RAM bank, the address of the specific character is held in a register
pair accessed by the SRC instruction.
I
2-10
2.7. 7
SUBROUTINES AND USE OF THE STACK FOR ADDRESSING
Before understanding the purpose or effectiveness of the stack
understand the concept of a subroutine.
I
it is necessary to
Consider a frequently used operation such as addition. The 4004 provides instructions to add one character of data to another, but what if you wish to add numbers
outside the range of 0 to 15 (the range of one character)? Such addition will require
a number of instructions to be executed in sequence. It is quite possible that this
addition routine may be required many times within one program; to repeat the identical code every time it is needed is possible, but very wasteful of memory:
,i
I
Program
,•
I
Addition
,i
•
Program
,
Addition
•••
Program
,
Addition
I
Etc.
2-17
A more efficient means of accessing the addition routine would be to store it once
and find a way of accessing it when needed:
I
I
Program'
Program
l
I
:
-------"":Addltion
-----.
..
~--I
.
Program
t
I
1
1
A frequently accessed routine such as the addition above is called a subroutine,
and the 4004 provides instructions that call subroutines and return from subroutines.
When a subroutine is executed, the sequence of eve41ts may be depicted as follows:
.
.
Main Pro ram
'~all instruction_~........._ _ _-:..~~_
The arrows indicate the execution sequence.
When the" Call" instruction is executed I the address of the" next JJ instruction is
written to the stack (see Section 2.4), and the subroutine is executed. The last
executed instruction of a subroutine will always be a special II Return Instruction"
which reads an address from the stack into the program counter, and thus causes
program execution to continue at -the "Next" instruction as illu strated on the next
page.
2-18
I
Memory
Address
(Hexadecima 1)
C02
C03
C04
COS
C06
FOO
FOI .
F02
F03
Write addres s of next instruction
COSH to the·stack.
In struction
CALL SUBROUTINE
AT F02H""'NEXTINSTRUCTION----------------~
Branch to
subroutine
starting at FO 2 H
FIRST SUBROUTINE INSTRUCTION ......--~----.a
Return to next
instruction
Body of Subroutine
F4E
F4F
RETURN
Read return address
( COS H) from stack.
Since the stack provides three registers subroutines may be nested up to three
deep; for example, the addition subroutine could itself call some other subroutine
and so on. An examination of the sequence of write and read stack operations will
show that the return path will always be identical to the call path, even if the same
subroutine is called at more than one level; however, an attempt to nest subroutines
to a depth of more than 3 will cau se the program to fail, since s·.orne addresses will
have been overwritten.
I
t
2-19
2 •8
CARRY BIT
To make programming easier/ a carry bit is provided by the 4004 to reflect the
results of data operations. The descriptions of individual instructions in Section
3 specify which instructions affect the carry bit and '\¥hether the execution of
the instruction is dependent in any wayan the prior status of the carry bit. The
carry bit is "set" if 1 and" reset" if o.
Certain data operations can cause an overflow out of the high-order 3-bit. For
example/ addition of two hexadecimal digits can give rise to an answer that
does not fit in one digit:
321 0
Bit Number
1 0 1 a
a1 11
A
+7
2J
0001
L..-Carry:::: 1
An operation that results in a carry out of bit 3 will set the carry bit.
An operation that could have resulted· in a carry out of bit 3 but did not will reset
the carry bit.
2-20
3.0
THE 4004 INSTRUCTION SET
This section describes the 4004 assembly language instruction set.
For the reader who understands assembly language, Appendix A provides a complete summary of the 4004 instructions.
For the reader who is not completely familiar with assembly language, this section
describes individual instructions with examples and machine code equivalents.
3.1
ASSEMBLY LANGUAGE
3. 1 • 1
HOW ASSEMBLY LANGUAGE IS USED
Upon examining the contents of read-only memory or program random-access
memory, a program would appear as a sequence of hexaaecimal digits which are
interpreted by the machine a s instruction codes, addresses, or constant data. It is
possible to write a program as a sequence of digits (just as they appear in memory) ,
but that is slow and expensive. For example, several instructions reference memory
to addres s -another instruction:
HEXADECIMAL
MEMORY ADDRESS
332
FO
333
43
334
56
354
20
355
FF
356
60
The above program operates as follows:
3-1
Byte 332H specifies that the accumulator and carty bit are to be cleared.
Bytes 333H and 334H specify that program execution is to continue at location 35 6H.
Byte 356H specifies that register 0 is to be incremented.
Now suppose thqt an error discovered in the program logic neces sitates placing
a new instruction after byte 332H. Program code would have to change as follows:
HEXADECIMAL
MEMORY ADDRESS
332
333
334
335
354
355
356
357
OLD CODE
NEW CODE
FO
FO
43
56
New In s tru ction
43
57
2-D
FF
. 2:0
60
FF
60
Note that many instructions have been moved and as a result some must be changed
to reflect the new addresses of instructions. The potential for making mistakes
is very high and is aggravated by the complete unreadability of the program.
Writing programs in assembly language is the first and most significant step towards economical programming; it provides a readable notation for instructions,
and separates the programmer from a need to know or specify absolute memory
addresses.
Assembly language programs are written as a sequence of instructions which are
converted to executable hexadecimal code by a special program caned an ASSEMB-
LER.
3-2
Assembly language
program written by
programmer
----
ASSEMBLER
PROGRAM
Executable hexadecimal machine
code
-
OBJECT PROGRAM
SOURCE PROGRAM
FIGURE 3-1.
ASSEMBLER PROGRAM CONVERTS ASSEMBLY LANGUAGE
SOURCE PROGRAM TO HEXADECIMAL OBJECT PROGRAM
As illustrated in Figure 3-1, the assembly language program generated by a programmer is called a SOURCE PROGRAM. The assembler converts the SOURCE
PROGRAM into an equivalent OBJECT PROGRAM I which consists of a sequence of
hexadecimal codes that can be loaded into ROM or program RAM and executed.
For example:
Source Program
NOW,
CLB
JUN
FIM
NXT I
INC
is converted by
the As sembler to
On-e Pas sible Version of
the Obj ect Program
FO
NXT
4356
o
o
2-OFF
255
60
3-3
Now if a new instruction must be added, only one change is required. Even
the reader who is not yet familiar with assembly language will see how simple
the addition is:
NOW,
NXT
I
CLB
(New instruction inserted here)
TUN
NXT
FIM
INC
o
o
255
The assembler takes care of the fact that a new instruction will shift the rest
of the program in memory.
3.1.2
STATEMENT MNEMONICS
Assembly language instructions must adhere to a fixed set of rules as described
in this section. An instruction has four separate and distinct parts or FIELDS.
Field 1 is the LABEL field. It is the instruction location's label or name, and it
is used to reference the instruction.
Field 2 is the CODE field.
instruction.
It defines the operation that is to be performed by the
Field 3 is the OPERAND field.
by the CODE field.
It provides any address or data information needed
Field 4 is the COMMENT field. It is present for the programmer's convenience
and is ignored by the assembler. The programmer uses comment fields to describe
the operation and thus make the program more readable.
The assembler uses free fields; that is I any number of blanks may separate fields.
3-4
Before describing each field in detail, here are some general examples:
LABEL
CODE
CMI,
CLB
LAB,
INC
3
/ Increment register 3.
JUN
CMI
/ Jump to instruction CMI.
FIM
OP 255
/ Load hex FF (decimal 255) into
/ register pair o.
FCH,
3.1.3
OPERAND
COMMENT
/ Clear accumulator and carry.
LABEL FIELD
This is an optional field. If present, the first character of a label mu st be a
letter of the alphabet. The remaining characters may be letters or decimal digits
The label field must end with a comma, immediately following the last character of
the label. Labels may be any length, but should be unique in the first three characters; the assembler cannot always distinguish between labels whose first three
characters are identical. If no label is present, at least one blank must begin the line.
e
Here are some examples of valid label fields:
CMO,
NUL,
EGO,
Here are some invalid labels:
4GE,
AGE
A/A,
does not begin with a letter.
valid label, but label field does not end with a comma.
contains invalid character.
The following label ha s more than 3 characters:
STROB
The assembler may not be able to differentiate, this label from others beginning
with the characters STR.
3-5
Since labels serve as instruction addresses, they cannot be duplicated.
example, the sequence:
NOW,
JUN
NXT
NXT,
INC
2
NXT I
CLB
For
is ambiguous; the ·assembler cannot detennine which NXT address is referenced
by the rUN instruction.
3.1.4
CODE FIELD
This field contains a code which identifies the machine operation (add, subtract I
jump, etc.) to be performed: hence the term operation code or op-code. The
instructions described i~ Sections 3. 3 thru 3. II,
are each identified by a
mnemonic label which must appear in the code field. For example, since the
II jump unconditionally" instruction is identified by the letters "JUN", these
letters mu st appear in the code field to identify the instruction a s jump unconditionally" •
II
There must be at least one space following the code field.
LAB,
rUN
LAB,
rUNAWY
AWY
is legal, but:
is illegal.
3-6
Thus:
OPERAND FIELD
3.1.5
This field contains information used in conjunction with the code field to define
precisely the operation to be performed by the instruction. Depending upon the
code field, the operand field may be absent or may consist of one item or two
items separated by blanks.
There are five types of information [( a) through (e ) below] that may be requested
as items of an operand field, and the information may be specified in five ways
[( 1 ) through (5) below].
The five ways of specifying information are as follows:
( 1)
A decimal number.
Example:
LABEL
ABC,
CODE
LDM
OPERAND
14
COMMENT
/Load accumulator with decimal
/14 (Il10 binary).
The current program counter. This is specified as the character' *' and
is equal to the address of the first byte of the current instruction.
( 2)
Example:
LABEL.
GO,
CODE
OPERAND
JUN
*+6
If the instruction above is being as sembled at location 213, it will cause
program control to be transferred to address 219.
3-7
( 3)
Labels that have been a ssigned a decimal number by the assembler.
(See Section 3.12. 1 for the equate procedure) .
Example:
Suppose label VAL ha s been equated to the number 42 and ZER
has been equated to the number O. Then the following instructions all load register pair zero with the hexadecimal value 2A (decimal 42):
I
LABEL
CODE
AI,
FIM
FIM
FIM
A2,
A3
OPERAND
42
0
ZER
ZER
42
VAL
~
(4)
Labels that appear in the label field of another instruction.
Example:
CODE
LABEL
(5)
LPl,
TUN
LP2,
CMA
OPERAND
COMMENT
LP2
/ Jump to instruction at LP2.
Arithmetic expressions involving data types (1) to (4) above connected by the operators + (addition) and - (subtra ction). Th-e se operators
treat their arguments as 12-bit quantities, and generate 12-bit quantities
as their result. If a value is generated which exceeds the number of
bits available for it in an instruction the value is truncated on the left.
I
For example if VAL refers to hexadecimal address FFE, the instruction:
I
TUN
VAL
is encoded as 4FFEH; a 4 -bit operation code and 12 bi-t value.
instruction:
TUN
VAL +
However the
J
9
will be encoded as 4007H, where the value i007H has been truncated on the left
to 12 bits (three hex digits) giving a value oi ::007 H.
3-8
Using some or all of the above data specifications, the following five types
of information may be requested:
(a)
A register to serve as the source or destination in a data operation.
Methods I, 3, or 5 may be used to specify the register, but the
specification must finally evaluate to one of the decimal numbers
o to 15.
Example:
LABEL
CODE
II,
I2,
13,
INC
INC
INC
OPERAND
4
R4
16-12
As suming label R4 ha s been equated to 4, all the above instructions
will increment register 4.
(b)
A register pair to serve a~ the source or destination in a data op-
eration. The specification must evaluate to one of the even decimal numbers from 0 through 14 (corresponding to register pair designators OP through 7P) •
Example:
LABEL
CODE
OPERAND
II,
12,
13,
SRC
SRC
SRC
IP
2
RG2
Assuming label RG2 has been equated to 2, all of the above instructions
refer to register pair 1 P (registers 2 and 3).
(c)
Immediate data, to be used directly as a data item.
3-9
Example:
LABEL
CODE
ACl,
LDM
OPERAND
DATA
COMMENT
/Load the accumulator with
/the value of DATA.
DATA could take any of the following fonns:
19
12 + 72 - 3
VAL
{where VAL has been equated to a number} •
(d)
A 12 bit addres s, or the label of another location in memory.
Example:
LABEL
HR,
( e)
CODE
TUN
TUN
OPERAND
OVR
513
COMMENT
/Tump to instruction at OVR.
/Tump to hex address 201 (decimal 513).
A condition code for use by the TCN (jump on condition) instruction.
This must evaluate to a number from 0 to 15.
Example:
LABEL
CODE
TCN
TCN
OPERAND
4 LOC
2+2 LOC
The above instructions cause program control to be transferred to address LOC if
condition 4 (accumulator zero) is true.
3.1.6
COMMENT FIELD
The only rule governing this field is that it must begin with a slash (/).
terminated by the end of the line.
A comment field may appear alone on a line:
LOC,
CLB
/This is a comment
/This is a comment line
3-11
It is
3.2
DATA STATEMENTS
This section describes ways in which data can be specified in and interpreted
by a program. Any 4 bit character in DATA RAM contains one of the 16 possible
combinations of zeros and ones.
Arithmetic instructions assume that the DATA RAM characters upon which they
operate are in a special format called "two's complement" I and the operations
performed on these bytes are called "two's complement arithmetic" •
3.2.1
TWO'S COMPLEMENT
When a character is interpreted as a signed two's complement number I the low
order 3 bits supply the magnitude of the number, while the high order bit is
interpreted as the sign of the number (0 for positive numbers 1 for negative).
I
The range of positive numbers that can be represented in signed two's complement notation is, therefore, from 0 to 7~
0:::
OOOOB
I
0001B·
:::
6 0 1 lOB
7
0 1 lIB
To change the sign of a number represented in two's complement I the following
rules are applied:
(a)
Invert each bit of the number (producing the -so-called
one's complement).
(b)
Add one to the result ignoring any carry out of the
high order bit position.
Example:
I
Produce the two's complem-ent r-epresentation of -6
Following the rules above
I
+6:::
Invert each bit:
Add one
0110B
100 1 B
101 0 B
3-12
.
Therefore the two' s complement representation of -6 is the hexadecimal number
r A'.
(Note that the sign bit is set indicating a negative number.)
I
I
Example: What is the value of the hexadecimal number' C' interpreted as a signed
two's complement number? The high order bit is set, indicating that this is a
negative number. To obtain its value, again invert each bit and add one. (This is
equivalent to subtracting one f:um the number and inverting each bit) .
CH
=
1 1 0 0B
ODIIB
Invert ea ch bit
Add one
o1
0 0B
Thus, the value of -CH is - 4.
The range of negative numbers that can be represented in signed two's complement notation is from -1 to -8.
-1
-2
-7
-8
=
=
=
=
III 1 B
1 1 1 0B
100 1 B
100 0 B
To perform the subtracti()n 6-3
I
the following operations are performed:
Take the two' s complement of 3 = 1 1 0 1 B
Add the result to the minuend:
6
+ (-3)
=
=
all0B
1 1
a1
B
o 0 lIB
= 3 I the correct answer
When a data character is interpreted as an unsigned two's complement number
value is considered positive and in the range a to 15.
O=OODO B
1=0001 B
o1 1 1 B
8 = 1 0 0 0 B
7 =
15
1 1 1 1 B
3-13
I
its
Two's complement arithmetic is still valid. When performing an addition operation, the carry bit is set when the result is greater than 15. When performing
subtraction, the carry bit is set when the result is positive". If the carry bit
is reset, the result is negative and present in its two's complement form.
Example:
Subtract 3 from 10 using unsigned two's complement arithmetic.
10 = 1 0 lOB
-3 = 1 1 0 1 B
-L1
0111B
Lcarry
=
1
Since the carty bit is set, the result (7) is correct and positive.
Example:
Subtract 15 from 12 u sing unsigned two's complement arithmetic.
12
-15
=
=
JU
1 1 0 0 B
0 0 0 1 B
1101 B =
L..-Carry
-3
=0
Since the carry bit is reset, the result is negative and in its two's complem€nt
form.
WHY TWO'S COMPLEMENT?
Using two's complement notation for negative numbers any subtraction problem
becomes a sequence of bit inversions and additions. Therefore fewer circuits
are needed to perform subtraction.
I
I
3-14
3.2.2
CONSTANT DATA
Eight-bit data values can be assembled into ROM or program RAM locations by writing a blank code field and an operand field beginning with a positive number. If the operand is greater than 8 bits it will be truncated on the
left.
I
Assume that label VAL has been equated to 14 and the label
LOC appears on an instruction a s sembled at hexadecimal
location 34B.
Example:
I
LABEL
Cl
C2
CODE
OPERAND
ASSEMBLED DATA
1
O+VAL
1
4095
FF
O+LOC
4B
C3,
OE
The following are irivalid data statements.:
LABEL
C4,
C5,
CODE
OPERAND
ABC
-18
COMMENT
/Does not begin with a number.
/Number is not positive.
3-15
3.3
INDEX REGISTER INSTRUCTIONS
This section describes two instructions which involve index registers or register pairs.
These instructions occupy one byte a s follows:
FIN:
10
_
f
a
1
••
1
I
I01
R P
'.
_t
_
~
Looo
for register
001 for register
010 for register
all for register
100 for register
101 for register
110 for register
III for register
INC:
pair a or OP.
pair 2 or 1 P.
pair 4 or 2P.
pair 6 or 3~.
pair 8 or 4P.
pair 10 or 5P.
pair 12 or 6P.
pair 14 or 7P.
E~
'W
Loooo
0001
OOlD
0-011
01-00
0101
0110
0111
3-16
for
for
for
for
for
for
for
for
regi ster
register
register
register
regis"ter
"reg! ster
regi ster
regi ster
0
1
2
3
4
5
6
7
1000
1001
1010
1011
lIDO
1101
1110
1111
for
for
for
f-Or
for
for
for
for
regi ster
register
register
register
register
register
register
register
8
9
1{)
11
12
13
14
15
3.3.1
INC
INCREMENT REGISTER
Format:
LABEL
CODE
OPERAND
INC
REG
I
011
1
_
f
I
/
I
OI:E G'I
_,
,
I
.
Description:
The index register indicated by REG is incremented by one.
The carry bit is not affected.
Example:
If register 3 contains the number 6, the instruction:
INC
3
will cause register 3 to contain the number 7.
If register 8 contains the number 15 (1 1 1 1 binary)
INC
I
the instruction:
8
will cause register 8 to contain -{) I leaving the carry bit unchanged.
3-17
3 • 3 .2
FIN
FETC HIND IRECT
Format:
LABEL
CODE
OPERAND
FIN
RP
I
1,-----'/
--.......-..
. Description:
The contents of registers 0 and 1 are concatenated to form the lower 8 bits of a
ROM or program. RAM address. The upper 4 bits of the address are assumed
equal to the upper 4 bits of the address at which the FIN instruction is located
(that is the address of the FIN instruction and the address referenced by register
o and 1 are on the same page). The 8 bits at the designated addres s are loaded
into the register pair specified by RP. The 8 bits at the designated address are
unaffected; the contehts of registers 0 and I are unaffected unles s RP = O.
I
The carry bit is not affected.
Example:
Suppose a program in memory appears as follows:
DECIMAL
ADDRESS
HEXADECIMAL
ADDRESS
INSTRUCTION
ASSEMBLED
DATA
603
25B
110
6E
681
2A9
FIN 7P
3E
If register 0 contains the hex digit 5 and register 1 contains the hex digit B when
the FIN instruction is executed the 8 bits located at hex addres s 25B vvill be
loaded into register pair 7 P. Thus regi ster 14 will ~ontain the hex digit 6 (D 11 0
binary) and register 15 will contain the hex .nigit E {1 11 {j binary) .
I
3-1B
If registers 0 and 1 had conta:ined CH and 4 when the FIN was executed the 8
bits at hex address 2C4 '\vould have been loaded into registers 14 and 15.
I
NOTE: If a FIN instruction is located in the last location of a page I the upper
4 bits of the designated address will be assumed equal to the upper 4 bits of the
next page.
Thu s if the in struction :
FIN
7P
is located at decimal addres s 511 (hex 1 IT) and registers 0 and I contain 3 and
CH I the 8 bits at hex address 13C (not 13C) will be loaded into registers 14 and 15.
This is dangerous programming practice and should be avoided whenever possible.
3-19
3.4
INDEX REGISTER TO ACCUMULATOR INSTRUCTIONS
This section describes instructions which involve an operation between an index
register and the accumulator. Instructions in this clas s occupy one byte as
follows:
00
01
10
·11
for
ADD~
for SUB
for LD
for XCH
L
0000
0001
0010
0011
0100
0101
0110
oIII
for register
a
for
for
for
for
for
for
for
1
2
3
4
5
6
7
register
register
register
register
register
register
register
1000
100 1
1010
1011
1100
110 1
1110
1111
for
for
for
for
for
for
for
for
register
register
register
register
register
register
register
register
The general assembly language instruction format is:
LABEL
CODE
OPERAND
LABEL,
OP
REG
"-v-'"
I
t
T____ o through 15
~--...,-------
ADD
I
SUB, LD
I
or XCH
Optional instruction label
3-2{)
8
9
10
11
12
13
14
15
3.4.1
ADD
ADD REGISTER TO ACCUMULATOR WITH CARRY
Format:
LABEL
CODE
OPERAND
ADD
REG
I
~
~
11 1 01 ~
1
0
0
E G
I
I
Description:
The contents of the index register REG plus the contents of the carry bit are
added to the accumulator. The result is kept in the accumulator; the contents
of REG are unchanged. The carry bit is set if there is, a carry out of the highorder bit position, and reset if there is no carty.
Example:
Suppose the accumulator contains 6, register 14 contains 9
I
and the carry bit
= o.
Then the instruction:
ADD
14
will perform the following operation:
Accumulator
Register 14
Carry
=
o 11 0
=
1001 B
=
.JLI
B
0
1 11 1 B
t
=
Result
=
Carry
=
15
The accumulator contains 15 and the carry bit is reset. If the carry bit had been
one at the start of the previous operation, the following woul-d have occurred:
3-21
0110 B
1 001 B
1
Accumulator
Register 14
Carry
...LJ
OOOOB
+
The accumulator would contain 0
3.4.2
SUB
I
=
Result = 0
=
Carry
while the cany bit would be set.
SUBTRACT REGISTER FROM ACCUMULATOR WITH BORROW
Format:
LABEL
OPERAND
CODE
REG
SUB
\ _.--I
~
Description:
The contents of index register REG are subtracted with borrow from the accumulator.
The result is kept in the accumulator; the contents of REG are unchanged. A borrow
from the previous subtraction is indicated by the carry bit being equal to one ·at
the beginning of this instruction. If the carry bit equals zero at the beginning of
this instruction it is assumed that no borrow occurred from the previous subtraction.
This instruction sets the carry bit if there is no borrow out of the high order bit
position, and resets the carry bit if there is a borrow.
The subtract with borrow operation is actually performed by complementing each bit
of the contents of REG and adding the resulting value plus the complement of the
carry bit to the accumulator.
Note: This instruction may he used to subtract numbers greater than 4 bits in
The carry bit must be complemented by the program between each required
subtraction operation. For an example of this, see Section 4.8.
lengt~.
Example: In order to perform a normal subtraction, the carry bit should = O.
Suppose the accumulator contains 6, register +0 contains 2 and the carry bit = O.
Then the instruction:
SUB
10
I
will penorm the followif:}g operation:
3-22
Accumula tor
Register 10. = 001 0
Complemented
Complement of carry
=
0110 B
=
1101 B
1
l..J o 1 0 0 B =
Re suI t = 4
\ - - - -__ Carry = 1 indicating no borrow
Had the carry bit been = 1/ the operation would have produced the following:
Accumulator
10
Complement of register 14
Complement of carry
=
0110 B
1101 B
0
=
=
2J
\
3-23
001 1 B
= 3
. Carry = 1 indicating no borrow .
Result
3.4.3
LD
LOAD ACCUMULATOR
Format:
LABEL
CODE
OPERAND
LD
REG
\ I
Description:
The contents of REG are stored into the accumulator I replacing the previou s contents
of the accumulator. The contents of REG are unchanged. The carry bit is not
affected.
Example:
If register 12 contains 0 1 0 0 B the instruction
I
LD
12
will cause the accumulator also to contain 0 1 0 0 B.
3-24
3.4.4
XCH
EXCHANGE REGISTER AND ACCUMULATOR
Format:
LABEL
CODE
OPERAND
XCH
REG
\
.----..
11
I
01 ~
&,1 ]
~
I
E G,
•
Description:
The contents of the register specified by REG are exchanged with the contents of
the accumulator.
The carry bit is not affected.
Example:
If the accumulator contains 1 100 B and register 0 contains 0 0 lIB
then the in struction
I
XCH
0
will cause the accumulator to contain 00 lIB and register 0 to
contain 1 100 B.
3-25
I
3.5
ACCUMULATOR INSTRUCTIONS
This section describes instructions which operate only on the contents of the
accumulator and/or the carry bit.
Instructions in this class occupy one byte as follovvs:
[1,1 ,I ,I J~iX;~ ]
-
, ' - - - - - - 0000
0001
0010
0011
0100
0101
for
for
for
for
for
for
CLB
CLC
lAC
CMC
CMA
RAL
0110
0111
1000
1001
1010
1011
1100
for
for
for
for
for
for
for
RAR
TCC
DAC
TCS
STC
DAA
KBP
The general assembly language instruction format is:
LABEL
CODE
LABEL,
OP
-....-
t
OPERAND
~
t-----AIWayS blank.
- - - - - - - - - - C L B , CLC, lAC, CMC, CMA, RAL,
RAR, TCC, DAC, TCS STC DAA,
or KBP •
I
' " - - - - - - - - - - - - - - - - Optional instruction label.
3-26
I
3.5 • 1
CLB
CLEAR BOTH
Format:
LABEL
CODE
OPERAND
CLB
~
Description:
The accumulator is set to 0000 B and the carry bit is reset.
I
3.5.2
CLC
CLEAR CARRY
Format:
LABEL
CODE
OPERAND
GLC
~
Description:
The earlY bit is reset to ().
3-27
3.5.3
lAC
INCREMENT ACCUMULATOR
Format:
LABEL
OPERAND
De scription:
The contents of the accumulator are incremented by one. The carry bit is set if
there is a carry out of the high order bit position I and reset if there is no carry.
Example:
If the accumulator contains 1001 B the instruction rAC will perform
the following operation:
I
=
+
1001B
0001B
.JU
1 0 lOB
Accumulator
=
Ne"\v contents of accumulator.
, , ' - - - - - Carry =
If the accumulator contains 1111 B
operation:
Accumulator
I
=
+
1 1 lIB
OOOlB
-1J
0000B
0
the instruction rAC will perform the following
=
N GW contents of accumulator.
\~---- Carry =
3-28
1
CMC
3.5.4
COMPLElvlENT CARRY
Format:
LABEL
OPERAND
CODE
Description:
If the carry bit
3.5.5
CMA
=
0 I it is set to 1.
If the carry bit is = 1, it is set to O.
COMPLEMENT ACCUMULATOR
Format:
LABEL
CODE
OPERAND
CMA
~
Description:
Each bit of the contents of the accumulator is complemented (produ-cing the socalled one's complement).
The carry bit is not affected.
Example:
If the accumulator contains 0110 B, the instruction CMA v;ill caus-e
the accumulator to contain lODl B.
3-29
3.5.6
RAL
ROTATE ACCUMULATOR LEFT THROUGH CARRY
Format:
CODE
LABEL
OPERAND
RAL
""
-~
Description:
The contents of the accumulator are rotated one bit position to the left.
The high-order bit of the accumulator replaces the carry bit
replaces the low-order bit of the accumulator.
Example:
I
while the carry bit
Suppose the accumulator contains 1101 B, and the carry bit = O.
Before RAL is executed:
Carry
Accumulator
After RAL is executed:
1 ,0 1
t
,_ 0
Carry
=1
Accumulator
3-30
3.5.7
RAR
ROTATE ACCUMULATOR RIGHT THROUGH CARRY
Format:
CODE
LABEL
OPERAND
RAR
'\
Description:
The contents of the accumulator are rotated one bit position to the right.
The low-order bit of the accumulator replaces the carry bit, while the carry bit
replaces the high-order bit of the accumulator.
\7
Example:
Suppose the accumulator contains 0110B, and the carry bit = 1
Before RAR is executed:
Carry
Accumulator
r
lO ,1
,I , 0
I
After RAR is executed:
.
101
,
,1
Carry
Accumulator
3-31
=0
3.5.8
TCC
TRANSMIT CARRY AND CLEAR
Format:
LABEL
OPERAND
CODE
TCC
~
(1 .1 ,1 .1
10 .1 ,1
.1
. Description:
If the carry bit = a I the accumulator is set to OOOOB. If the carry bit = I, the
accumulator is set to 0001B. In either case the carry bit is then reset.
I
3.5.9
DAC
DECREMENT ACCUMULATOR
Format:
LABEL
OPERAND
CODE
DAC
~
Description:
The contents of the accumulator are decremented by one. The cany bit is set
if there is no borrow out of the high-order bit position and reset if there is a
borrow.
I
Example:
If the accumulator contains 1001 B, the instruction DAC will perform
the following operation:
3-32
Accumulator
+
( -1 )
=
=
..LI
10 0 1B
11 11B
10 00B=
New contents of accumulator
=
'--------Carry
1 indicating no borrow.
If the accumulator contains 0000, the instruction DAC will perform the following:
Accumulator =
+ (-1)
-
JLJ
0000 B
1 1 lIB
11 11 B=
New contents of accumulator
,'------Carry
3.5.10
TCS
=0
indicating a borrow.
TRANSFER CARRY SUBTRACT
Format:
LABEL
CODE
OPERAND
TeS
~
Description:
If the carry bit = -0, the accumulator is set to 9. If the carry bit = I, the
accumulator is set to 10. In either case~ the carry bit is then reset.
NOTE: This instruction is used when subtracting decimal numbers greater than
4 bits in length. For an example of this, see Section 4.8.
3-33
3.5.11
STC
SET CARRY
Format:
LABEL
CODE
OPERAND
STC
~
Description:
The carIY bit is set to 1.
3.5.12
DAA. DECIMAL ADJUST ACCUMULATOR
Format:
LABEL
CODE
OPERAND
DAA
~
Description:
If the contents of the accumulator are greater than 9, or if the carty bit = I,
the accumulator is incremented by 6. Otherwise, the accumulator is not affected.
If the result of incrementing the accumulator produces a carry out of the high order
bit position, the cany bit is set. Otherwise the carry bit is unaffected (in particular
it is not reset) .
NOTE:
This instruction is used when adding decimal numbers.
this see Section 4. 7 •
I
3-34
For an example of
I
3.5.13
KBP
KEYBOARD PROCESS
Format:
LABEL
CODE
OPERAND
KBP
~
Description:
If the accumulator contains OOOOB, it remains unchanged. If one bit of the accumulator is set, the accumulator is set to a number from 1 to 4 indicating which bit was
set.
If more than one bit of the accumulator is set, the accumulator is set to 1111 B.
This process is summarized as
foll~ws:
BINARY CONTENTS OF
ACCUMULATOR BEFORE
KBP
BINARY CONTENTS OF
ACCUMULATOR AFTER
KBP
0000
0001
0010
0100
1000
0011
0101
0110
0111
1001
1010
1011
1100
1101
1110
1111
0000
0001
0010
0011
0100
1111
1111
1111
1111
1111
1111
1111
1111
1-111
1111
tIll
The carry bit is not affected.
3-35
3.6
IMMEDIATE INSTRUCTIONS
This section describes two instructions which use data that is part of the instruction itself.
3.6.1
FIM
FETCH IMMEDIATE
The FIM instruction occupies two bytes.
Format:
LABEL
CODE
OPERAND
F~
RP
DATA
~/."
~,
"
10,0,110'* rio I. p, l} ..,;r
k
L
~
lA,
....
000
001
010
011
100
101
110
III
for
for
for
for
f-or
for
for
for
I
./
8-bit data quantity
register
register
register
regi ster
regi ster
register
register
register
pair
pair
pair
pair
pair
pair
pair
pair
a
2
4
6
8
10
12
14
or
or
or
or
or
or
or
or
OP
IP
2P
3P
4P
SP
6P
7P
Description:
The 8 bits of immediate data are loaded into the register pair specified by RP.
The earlY bit is not affected.
3-36
Example:
The instruction
FIM
254
2
will cause register 2 to contain 15, and register 3 to con~ain 14. This is because
254 decimal is encoded as FE hexadecimal; the upper four. bits are loaded into
register 2 and the lower four bits are loaded into register 3.
The instruction:
FIM
6
IP
will cause register 2 to contain 0, and register 3 to contain 6.
3.6.2
LDM
LOAD ACCUMULATOR IMMEDIATE
The LDM instruction occupies one byte.
Format:
LABEL
CODE
OPERAND
LDM
DATA
/
11
-
1 0 liD
,"
_
A T AI
.,
1_
L
A 4-bit data quantity
Description:
The 4 bits of immediate data are loaded into the accumulator.
The carry bit is not affected.
Example:
The instruction:
LDM
0
will clear the accumulator.
3-37
The instruction:
LDM
15
will set each bit of the accumulator.
3.7
TRANSFER OF CONTROL INSTRUCTIONS
This section describes instructions which alter the normal execution sequence of
instructions.
3.7.1
rUN
rUMP UNCONDITIONALLY
The rUN instruction occupies two bytes:
Format:
CODE
OPERAND
rUN
ADDR
I
______
.~A,
________
~
~
'
~
~
LABEL
________
~~
_________
J
~A
12-bit memory address.
Description:
Program execution is transferred to the instruction at location ADDR, which may
be anywhere in memory. (If the rUN is located in ROM, ADDR is a ROM address;
if located in program RAM, ADDR is a program RAM addres s).
The carry bit is not affected.
NOTE: This instruction and the rMS instruction (Section 3.8.1),
use a 12
bit address, and can reference any memory location. Their operation is not influenced by their position within a page of memory wherea s some other instrucI
3-38
tions are. Therefore, only a rUN or rMS instruction should be u sed to transfer
control from one page of memory to another.
Example:
Arbitrary Memory
Address (Hex)
360
362
Operand
As sembled Data
Label
Code
AD,
rUN
ADD
LRG
1
43EO
82
370
371
LAC,
LDM
rUN
3
AD
D3
4362
3EO
3E2
LRG,
FIM
rUN
OP 4
LAC
2004
4370
Normally, program instructions are executed sequentially. A 12-bit register
called the program counter holds the address of the instruction to be executed.
The rUN instruction replaces the program counter contents, causing program
execution to continue at that address.
Thus the execution sequence of this example is as follows:
The rUN instruction at 360H replaces the contents of the program counter with 3EOH.
The next instruction .executed is the FIM at" location LRG which loads register
o with the value 0, and register 1 with the value 4. The rUN at 3E2H is then
executed.
The program counter is set to 370H, and the LDM at this address loads the accumulator with the value 3. The rUN at 37lH sets the program counter to 362H, where the
ADD instruction adds the contents of register I plus the carry bit to the accumulator.
From here, normal program execution continues at location 36 3H .
3-39
3.7.2
JIN
JUMP INDIRECT
The JIN instruction occupies one byte.
Format:
LABEL
CODE
OPERAND
JIN /RP
~
IO,O,l,d~ ~hl
~
Looo
001
OJ.O
011
100
101
110
111
for register pair
for register pair
for register pair
for register pair
for register pair
for -regi ster pair
for regi ster pair
for register pair
0
2
4
6
8
10
12
14
or
or
or
or
or
or
or
or
OP
IP
2P
3P
4P
SP
6P
7P
Description:
The 8 bits held in the register pair specified by RP are loaded into the lower 8
bits of the program counter. The highest 4 bits of the program count-er are unchanged. Therefore I program execution continues at this address on the same
page of memory in which the JIN instruction is loaded.
The carry bit is not affected.
Example:
Hexadecimal
Memory Address
Code
3E4
3E6
FIM
JIN
Operand
OP
OP
3-40
21
Assembled Data
2015
The FIM instructions loads register 0 with the value I and register I with the
value 5. The JIN instruction then causes a jump to hexadecimal location 315.
NOTE:
If the JIN instruction is located in the last location of a page in
memory, the highest 4 bits of the program counter are incremented by one, causing
control to be transferred to the corresponding location on the next page.
If the above example, the JIN had been located at address 255 decimal (OFF hexadecimai) control would have been transferred to address 115 hexadecimal, not 015
hexadecimal. Thi s is dangerous programming practice and should be avoided
whenever possible.
I
I
3.7.3
TCN
JUMP ON CONDITION
The JCN instruction occupies two bytes.
Format:
LABEL
CODE
OPERAND
JCN
CN
ADDR
//
---
L
An 8-bit address
" - - - - - - - A four bit condition code
Description:
If the condition specified by eN is false no action occurs and program execution
continues with the next sequential instruction. If the condition specified by
eN is true I the 8 bits specified by ADDR replace the lower 8 bits of the program
counter. The highest 4 bits of the program counter are unchanged. Therefore I
program execution continues at the specified addres s on the same page of memory
in which the JCN instruction is located. The carry bit is not affected.
I
3-41
The condition code is specified in the assembly language statement as a decimal
value from 0 to 15, which is represented in the assembled instruction as the
corresponding 4 bit hexadecimal digit. Each bit of the condition code has a
meaning, as follows:
CN
l
,
I
~ L-. If this bit = 1, jump if the test signal of the 4004 is = O.
~ If this bit = 1, jump if the carry bit = 1.
If this bit
If this bit
= I,
= I,
jump if the accumulator
= o.
invert the other jump conditions.
More than one condition at a time may be tested. If the leftmost bit of the condition
code is zero a jump occurs if any of the remaining specified conditions is true (an
.. or" condition). If the leftmost bit is one a jump occurs if the logical inverse of the
"ortl condition is true. In Boolean notation the equation for the jump condition is as
follows:
JUMP = C, •
( (ACC = 0 ) • ~ . + (carry = 1) • ..,£3 + TEST • C
CJ •
«(ACC =f:. 0) + C2} • «carry = 0) +C 3 ' 8 (TEST + C4))
Example:
I
I
I
40
Hexadecimal
Memory Address
302
Label
Code·
LOG,
LDM
4
D4
JCN
bLOC
1602
Operand
Assembled Data
..
38B
38D
The condition code is encoded as 0110 B. Therefore the JCN will cause a jump to
address .302 H if the accumulator = 0, or if the carry bit = 1. If neither of these is
true program execution continues with the instruction at location 3BDH.
I
I
NOTE: If the JCN instruction is located in the last two locations of a page in
memory and the jump condition is true the highest 4 bits of the program counter
are incremented by 1, causing control to be transferred to the corresponding location on the next page.
f
3-42
If in the above example, the JCN had been located at addresses 254 and 255
decimal (OFE and OFF hexadecimal) a true condition would have caused jump
to location 102 hexadecimal rather than 002 hexadecimal. This is dangerous
programming practice { and should be avoided whenever pos sible.
3.7.4
ISZ
INCREMENT AND SKIP IF ZERO
The ISZ instruction occupies two bytes.
Format:
CODE
LABEL
ISZ
OPERAND
REG
ADDR
-,---~-------j"'---.,
ADD R
L''----..L
, - - -_ _-"'1
An B bit addres s
000 0 for register a
0001 for register 1
1111 for register 15
Description:
The index register specified by REG is incremented by one. If the result is 0000 B,
program execution continues with the next sequential instruction. If the result
does not equal 0000 B the 8 bits specified by ADDR replace the lovve st 8 bits of
the program counter. The highest 4 bits of the program counter are unchanged.
Therefore I program execution continues at the specified address on the same page
of memory in which the ISZ instruction is located.
I
The carry bit is not affect€d.
3-43
Example:
Hexad ecima I
Memory Addres s
30F
311
31A
31C
Label
Code
Operand
Assembled Data
FIM
XCH
OP
2
0
LP,
2000
B2
ISZ
0
LP
7011
The FIM instruction loads registers 0 and 1 with O.
The XCH is then executed. Program execution continues until the ISZ is reached.
Register 0 is incremented to contain l, and since this result is non-zero, program control is transferred back to location 311H. This process continues until
register 0 = 1111B. Then the ISZ increments register 0 producing a result of OOOOB,
and execution continues with the instruction at 31CH. '
I
If the ISZ instruction is located in the last two locations of a page in
NOTE:
memory and the incrementation produces a non-zero result, the highest 4 bits of
the program counter are incremented by I, causing control to be transferred to the
corresponding location on the next page.
If in the above example, the ISZ had been located at decimal addresses 1022 and 1023
(3FE and 3FF hexadecimal), control would have been transferred to location 411
hexadecimal and the XCH and remaining instructions would have been executed
only once. Thus this is dangerous programming practice ( and should be avoided
whenever possible.
I
3-44
3.8
SUBROUTINE LINKAGE COMMANDS
This section describes the commands which call and cause return from subroutines.
They cause a transfer of program control and use the address stack (see Sections 2.4
and 2. 7 • 7) •
3.8.1
JMS
JUMP TO SUBROUTINE
The JM S instruction occupie s two bytes.
'Format:
LABEL
CODE
OPERAND
JMS
ADDR
/
________
r~------~A
,
v~------~I
LA
12-bit memory address
Description:
The address of the instruction immediately following the JMS is written to the
address stack for later use by a BBL instruction. Program execution continues at
memory address ADDR, which may be on any page.
The carty bit is not affected.
NOTE:
Since the JMS uses a 12 bit memory address it operates the same wherever it is located in memory and can reference any address in memory. For this
reason I only a JMS or JUN instruction should be used to transfer program control
from one page of memory to another.
I
I
3-45
Example:
Hexadecimal
Memory Address
011
013
3AO
Label
SUB,
Operand
Code
As sembled Data
JMS
XCH
SUB
0
53AO
DO
INC
1
61
BBL
6
C6
The JMS instruction causes the 12 bit address 013H (the address of the instruction
following the JMS) to be written to the address stack. Execution continues with
the INC instruction at SUB, and proceeds sequentially from this pOint.
3.8.2
BBL
BRANCH BACK AND LOAD
The BBL instruction occupies one byte.
Format:
LABEL
OPERAND
CODE
BBL
(1 11 I 0 I 0
DATA
I
/
D A
I
.T IA
I
LA 4-bit DATA value
Description:
The 4 bits of immediate data encoded in the instruction are loaded into the accumu1ator. Then the last 12 bit address saved on the address stack (by a JMS instruction)
3-46
is read from the stack and placed in the program counter. Thus, ~xecution continues with the instruction immediately following the last JMS instruction.
The carry bit is not affected.
Example: In the example of Section 3.8. I, the BBL instruction load s the value
6 into the accumulator. The address 013 is read into the program counter, and program execution proceeds with the XCH instruction.
3-47
3.9
NOP INSTRUCTION
NO OPERATION
This instruction occupies one byte.
Format:
LABEL
OPERAND
CODE
NOP
Description:
No operation is performed. The program counter is incremented by one and execution continues with the next sequential instruction.
The carry bit is not affected.
MEMORY SELECTION INSTRUCTIONS
3.10
This section describes instructions which specify DATA RAM data and status characters RAM output ports and ROM input and output ports to be operated on by
I/O and RAM instructions described in Section 3. 11 .
I
3.10. 1
DCL
DESIGNATE COMMAND LINE
The DCL instruction occupies one byte.
Format:
LABEL
CODE
OPERAND
DCL
3-48
Description:
As described in Section 2.3. 3 there may be up to 8 DATA RAM BANKS each of
which consists of four DATA RAM units. The DCL instruction uses the rightmost
3 bits of the accumulator to determine which of the 8 DATA RAM BMJKS will be
referenced during subsequent operations.
I
The selection is made as follows:
RIGHTMOST 3 BITS
OF ACCUMULATOR
DATA RAM BANK
SELECTED
0,
000
001
010
all
100
101
110
5
6
III
7
0
1
2
3
4
This choice remains in effect until the next DCL is executed, or an external RESET
signal is received. A RESET causes DATA RAM BANK a to be selected.
The carry bit is not affected.
Example: The following instructions will select DATA RAM BANK 3:
LDM
DCL
3
/Load accumulator with 0011 B
3-49
3.10.2
SRC
SEND REGISTER CONTROL
The SRC instruction occupies one byte.
Format:
LABEL
OPERAND
CODE
SRC
1°,0,1,0
~
RP
If. f 11 I
"-v--
L
000 for
001 for
010.for
011 for
100 for
101 for
110 for
III for
register pair
register
register
register
regi·ster
register
register
register
pair
pair
pair
pair
p.air
pair
pair
a or OP
2
4
6
8
10
12
14
or
or
or
or
or
or
or
1P
2P
3P
4P
5P
6P
7P
Description:
The 8 -hits contained in the register pair specified byRP are used as an address.
This address may designate a particular DATA RAM data character, a DATA RAM
status character, a RAM output port, or a ROM input/output port. (A description
of these elements appears in Section 2). In fact, the address designates
all of these simutaneously; it is up to the programmer to then write the correct
I/O or RAM instruction (described in Section 3.11) to access the proper entity.
The address sent by the SRC remains in effect until changed by a subsequent
SRC.
The only DATA RAM bank which receives the SRC address is the one selected by
the last previous DCL instruction.
The carry bit and the contents of the register pair are unaffected.
The 8 bits of the address sent by the SRC are interpreted as follows:
3-50
(1)
When referencing a DATA RAM data character:
~ -v- - - - - - -
I
1
!
1 of 16 4-bit data characters within
i:-======~_-_-_the register.
'--_ _ _
~
1 of 4 registers within the DATA RAM
chip.
1 of 4 DATA RAM chips within the DATA
RAM bank previously selected by a DeL
instruction.
(2)
When referencing a DATA RAM status character:
I . I'
~-----
1
~l-
_____
These bits are not relevant for this reference.
1 of 4 registers within the DATA RAM chip.
1 of 4 DATA RAM chips within the DATA RAM
bank previously selected by a DeL instruction.
( 3)
When referencing a RAM output port:
I
I
I
~
,
+-J-----._----
These bits are not relevant for this reference.
'-._ _ _ _ _ _ _ _ _ The port associated with 1 of 4 DATA RAM
chips within the DATA RAM bank previously
selected by a DeL.
3-51
( 4)
When referencing a ROM input or output port:
I . •
I
Example:
I
I
t. .________
These bits are not relevant for this
reference.
The port associated with 1 of 16
ROM's.
The instructions:
FIM
SRC
IP
IP
180
will cause the eight bit value 101101 OOB to be used as an address. Subsequent
instructions could then reference DATA RAM data character number 4 of register
3 of chip 2/ any of the status characters associated with DATA RAM register 3
of chip 2/ RAM output port number 2 (the port a ssociated with DATA RAM chip 2) ,
or ROM port number 11 (the port associated with ROM number 11). The address
remains in effect until another SRC instruction is executed.
3-52
3. 11
INPUT/OUTPUT AND RAM INSTRUCTIONS
This section describes instructions which access DATA RAM characters or perform input or output operations. One instruction, WPM, allows the programmer
to read or write 8-bit program RAM locations. These instructions use
addresses selected by the DCL and SRC instructions described in Section 3. 1 . o.
Instructions in this class occupy one byte as follows:
1
0000
0001
0010
0011
0100
0101
0110
0111
for
for
for
for
for
for
for
for
1 1 0
1o
P
!
WRM
WMP
WRR
WPM
WRO
WRI
WR2
WR3
1000
1001
1010
1011
1100
1101
1110
1111
for
for
for
for
for
for
for
for
SBM
RDM
RDR
ADM
RDO
RDl
RD2
RD3
The general assembly language instruction format is:
LABEL
CODE
LAB,
I
-...---.-
OPERAND
OP
L
Always blank
WRM, WMP, WRR, WPM, WRO, WRI, WR2, WR3,
SBM, RDM RDR, ADM RDO RDl, RD2 or RD3
I
' ' - - - - - - Optional instruction label.
3-53
I
I
I
3.11.1
RDM
READ DATA RAM DATA CHARACTER
Format:
CODE
LABEL
\1,1, 1 1
OPERAND
°11,0,° 11 I
Description:
The DATA RAM data character specified by the last SRC instruction is loaded into
the accumulator. The carry bit and the data character are not affected.
Example:
CODE
LABEL
OPERAND
rIM
2P
SRC
RDM
2P
5
The above instructions will read the contents of DATA RAM data character number
5 of register 0 of chip 0 of the currently selected DATA RAM bank into the accumulator.
3.11.2
RDn
READ DATA RAM STATUS CHARACTER
Format:
LABEL
OPERAND
CODE
RDn
1
\ 1 ! 1 I 1I 0 1
I
!
'-y-J
t
n =
3-54
b,
1
I
2, or 3
De"scription:
The DATA RAM status character whose number from 0 to 3 is specified by n associated with the DATA RAM register sp'ecified by the last SRC in'struction, is loaded
into the accumulator.
I
The carry bit and the status character are not affected.
Example:
LABEL
CODE
OPERAND
FIM
SRC
RD3
2P
2P
5
The above instructions will read the contents of DATA RAM status character 3 of
register 0 of chip 0 of the currently selected DATA RA11 bank into the accumulator.
3.11.3
RDR
READ ROM PORT
Format:
LABEL
CDDE
OPERAND
RDR~
~
3-55
Description:
The ROM port specified by the last SRC instruction is read. When using the 4001
ROM each of the 4 lines of the port may be an input or an output line; the data on
the input lines is transferred to the corresponding bits of the accumulator. Any
output lines cause either a 0 or a 1 to be transferred to the corresponding bits of
the accumulator. Whether a 0 or a 1 is transferred is a function of the hardvv:are
not under control of the programmer.
I
I
The carry bit is not affected.
Example:
LABEL
CODE
OPERAND
FIM
SRC
RDR
3P
3P
160
The above instructions will read the contents of the port associated with ROM number
ten into the accumulator. If the leftmost I/O line is an output line and the remaining
I/O lines are input lines containing 01 OB the accumulator will contain either 101 OB
or OOIOB.
I
NOTE: On the INTELLEC 4, a ROM port may be used for either input or output. If
programs tested on the INTELLEC 4 are to be run later with a 4001 ROM I the programmer
must be careful not to use one port for both functions.
3. 11 .4
WRM
WRITE DATA RAM CHARACTER
Format:
LABEL
CODE
OPERAND
WRM
\
.---A-....
Description:
The contents of the accumulator are written into the DATA RAM data character specified by the la st SRC instruction.
The carry bit and the accumulator are not affected.
3-56
Example:
LABEL
CODE
FIM
SRC
LDM
OPERAND
OP
OP
15
180
WRM
The above instruction will cause DATA RAM data character number 4 of register 3
of chip 2 of the DATA RAM bank selected by the last DCL instruction to contain
15 (1111B).
3. 11. 5
WRn
WRITE DATA RAM STATUS CHARACTER
Format:
LABEL
CODE
OPERAND
WRn
0, I, 2, or 3
-Description:
The contents of the DATA RAM s:tatus character whose number from 0 to 3 is specified by n, associated with the DATA RAM register specified by tbe last SRC'
instruction, are repla ced by the contents of the accumulator.
The carry bit and the a-ccumulator are not affected.
3-57
Example:
LABEL
CODE
OPERAND
FIM
SRC
LDM
WRI
OP
OP
o
2
The above instructions will write the value 2 into status character 1 of DATA RAM
register 0 of chip 0 of the currently selected DATA RAM bank.
3.11.6
WMP
WRITE RAM PORT
Format:
LABEL
CODE
WMP
OPERAND
"-
...--"----..
11 ,1,1,01 0,0,0,11
Description:
The contents of the accumulator are written to the output port as sociated with the
DATA RAM chip selected by the la st SRC instruction. This value will stay at th€
output port until overwritten.
The carry bit and the accumulator are unchanged •
Example:
LABEL
CODE
OPERAND
FIM
SRC
LDM
WMP
3P
3P
6
3-58
64
The above instructions will write the value 6 to the output port associated with
DATA RAM chip 2 of the currently selected DATA RAM bank.
3.11. 7
WRR
WRITE ROM PORT
Format:
LABEL
CODE
11 ,1,1,01
OPERAND
0 ,0,1
1
°I
Description:
The contents of the accumulator are written to the output port associated with the
ROM selected by the last SRC instruction. This value will stay at the output port
until overwritten.
The carry bit and the accumulator are unchanged.
Example:
LABEL
CODE
OPERAND
FIM
SRC
LDM
WRR
4P
4P
64
15
The above instructions will write the 'value 15 to the output port associated with
ROM number 4.
3-59
3.11.8
ADM
ADD DATA RAM TO ACCUMULATOR WITH CARRY
Format:
CODE
LABEL
OPERAND
ADM
"-
....- " -
Description:
The DATA RAM data character specified by the last SRC instruction, plus the
carry bit, are added to the accumulator.
The carry bit will be set if the result generates a carry
wise.
I
and will be reset other-
The data character is not affected.
Example:
CODE
LABEL
OPERAND
OP
OP
FIM
SRC
ADM
o
If the carry bit = 0 the accumulator contains 10 , and DATA RAM data character
o of register 0 of chip 0 contains 7 the ADM will perform the following operation:
I
I
Accumulator
Data character
Carry bit
=
1 0 lOB
o 1 11 ~
o
1I __0_0_0_1_B_=_
=
=
~
3-60
New contents. of accumulator.
Carry bit will be set.
3.11.9
SBM
SUBTRACT DATA RAM FROM MEMORY WITH BORROV\T
Format:
LABEL
OPERAND
CODE
SBM~
~
\1,1,1,0111°1°1° I
De scription:
The value of the DATA RAM character specified by the last SRC instruction is subtracted
from the accumulator with borrow. The data character is unaffected. A borrow from the
previous subtraction is indicated by the carry bit being equal to one at the beginning
of this instruction. No borrow from the previous subtraction is indicated by the carry
bit being equal to zero at the beginning of this instruction.
This instruction sets the carry bit if the result generates no borrow and resets the
carry bit if the result generates a borrow.
I
The subtract with borrow operation is actually performed by complementing each bit of
. the data character and adding the. resulting value plus the complement of the carry bit
to the accumulator.
NOTE: When this instruction is used to subtract numbers greater than 4 bits in
length the carry bit must be complemented by the program between each required
subtraction operation. For an· example of this, s€e Section 4.8.
J
Example:
LABEL
CODE
FIM
SRC
SBM
OPERAND
1P
1P
1
If the carry bit = I, the accumulator contains 7, and DATA RAM character 1 of
register 0 of chip 0 contains 5, the SBM will perform the following operation:
Accumulator
Data character = 0101
Complemented
Complement of Carry
=
o 11
1B
B
=
=
101 0 B
·0
.QJ
000 1 B
== New contents of accumulator.
, ' - - - - - - - - Carry bit will be reset indicating a borrow.
3-61
3 . 11 . 10
v'lPM
WRITE P ROG RAM RAM
Format:
LABEL
CODE
OPERAND
111,1010,0,1,1\
Description:
This is a special instruction which may be used to write the contents of the accumulator into a half byte of program RAM I or read the contents of a half byte of program
RAM into a ROM input port where it can be acces sed by a program.
The carry bit is unaffected.
NOTE:
Two WPM instructions must always appear in close succes sion; that is,
each time one WPM instruction references a half byte of program RAM as indicated by
an SRC address, another WPM must access the other half byte before the SRC
address is altered. An internal counter keeps track of which half-byte is being
accessed. If only one WPM occurs, this Gounte-r will be out of sync with the program
and errors will occur. In this situation a RESET pulse must -be used to re-initialize
the machine.
I
NOTE:
A vVPM instruction requires an SRC address to access program RAM.Whenever a WPM is executed, the DATA RAM which happens to correspond to this SRC
address will also be written. If data needed later in the program is being held in
such a DATA RAM, the programmer must save it elsewhere before executing the
WPM instruction.
Storing Data Into Program RAM:
A program must perform the following actions in order to store eight bits of data into
a program RAM location:
(1)
The value 1 must be written to ROM port number 14.
signal, permitting the store operation to work.
{2}
The highest 4 bits of the program RAM address to be accessed must be
written to ROM port number 15.
(3)
The lowest 8 bits of the program RAM address to be accessed must be sent
out by an SRC instruction.
3-62
Thi sis a "write enable"
(4 )
The higher 4 bits of data to be written must be loaded into the accumulator and.written with the first WPM; the lower 4 bits of data must then
be loaded into the accumulator and written with the second WPM.
(5)
The value 0 must be written to ROM port number 14, clearing the "write
enable" .
Reading Data From Program RAM:
A program must perform the following actions in order to read eight bits of data
from a program RAM location:
( 1)
The highest 4 bits of the program RAM address to be accessed must be
written to ROM port 15.
( 2)
The lowest 8 bits of the program RAM address to be accessed must be sent
out by an SRC instruction.
(3)
Two WPM instructions in succession must be executed. The first reads,
the leftmost 4 bits of the program RAM location into ROM port 14; the second
reads the rightmost 4 bits of the program RAM location into ROM port 15 ..
Example:
The following routines access a program RAM location whose address
is held in status characters 0, 1, and 2 of DATA RAM register 0 of DATA RAM chip
DATA RAM
Register
Regi-ster
Register
Register
PROGRAM RAM
cmp 0
Hex Address
0
1
2
3
4AA
4AB
4AC
'----v-'"
Status Cnara cters
Routine STR stores the contents of registers 2 and 3 into the addressed location;.
routine FeR reads the contents of the addressed location into registers 2 and 3.
3-63
o.
LABEL
CODE
STR ,
rIM
SRC
LDM
WRR
JMS
LD
WPM
LD
WPM
FIM
SRC
CLB
WRR
BBL
COMMENT
OPERAND
OP
OP
1
224
/ Select ROM port 14.
I
/
/
/
/
COM
2
I
3
OP
OP
Turn on write enable.
Routine COM sets up PRAM
address.
High 4 data bits to accumulator.
Write to PRAM
Low 4 data bits to accumulator.
224
/ Select ROM port 14.
/ Turn off write enable.
/ Return to program
0
/
/
COM 1
FIM
SRC
RDI
XCH
RD2
XCH
RDO
FIM
SRC
WRR
SRC
BBL
OP
OP
JMS
W-FM
WPM
FIM
SRC
RDR
XCH
INC
SRC
RDR
XCH
BBL
COM
0
/
/
/
/
/
/
10
11
OP
OP
Select DATA RAM chip 0 register
Read mid-dle 4 bits of address.
Save in register 10.
Read lowest 4 bits of address.
Save in regi ster 11.
Read highest 4 bits of address.
o.
240
I
Select ROM port 15.
/ Write high address
/ Write middle + low address
I Return to STR or FCH
SP
0
/
/
FCH
OP
OP
/ Routine COM sets up PRAM address.
data to ROM port 14.
/PAAM
data to ROM port 15 •
I_PRAM
224
/ Select port 14.
/ Read to accumulator.
/ -Save in register 2.
2
{)
OP
/ Select port 15.
/ Read to accumulator
. / Save in register 3.
! Return to progra m
3
0
3~£4
3. 12
PSEUDO INSTRUCTION
This section describes the functions of the pseudo instruction recognized by the
assembler. The pseudo instruction is indicated by the character = (equal sign)
written in the code field of an assembler statement. No executable object code
is generated by the pseudo instruction. It acts merely to provide the assembler
with information to be used subsequently while generating obj ect code.
3. 12. 1 EQUATE FUNCTION
Format:
CODE
LABEL
SYM
OPERAND
-
'-v-'
L
EXP
"-v-'"
L-
An
expres~ion
Required symbol
Des cription:
The symbol SYM is assigned the value EXP by the a.ssembler. Whenever the symbol
SYM is encountered subsequentlY by the assembler, this value will be used.
Example: The statements
CZ
=
10
JeN
CZ
ADDR
are equivalent to the statement
TCN
10
ADDR
The statements .
DAT =
5
LDM DAT
will load the value 5 into the accumulator.
3-65
3. 12. 2
ORIGiN FUNCTION
Format:
LABEL
~
L
,--------
OPERAND
CODE
-
~p
~
An expression
Blank label field
Description:
The assembler's location counter is set to the value of EXP. The next machine
instruction or data byte-generated will be assembl~d at address EXP.
I
NOTE:
The equal sign may appear in the first position of the line.
Example:
LABEL
CODE
OPERAND
o
rUN
=
LO,
LDM
The rUN instruction will be
RAM. The location counter
assembled at location 512,
will therefore cause a jump
LO
512
7
assembled in locations 0 and 1 of ROM or program
is ihen set to 512 causing the LDM instruction to be
the first location on the second memory pa-ge. The rUN
to location 512.
I
NOTE: The pseudo instruction also makes -it possible to assemble constant data
values into a program. For a description of how to do this, see Section 3.2.2.
3-66
4.0
PROGRAMMING TECHNIQUES
This section describes some techniques which may be of help to the programmer.
4.1
CROSSING PAGE BOUNDARIES
As described in Section 2 programs are held in either ROM or program
RAM both of which are divided into pages. Each page consists of 256 8 -bit
locations. Addresses 0 through 255 comprise the first page,256-511 comprise the
second page and so on.
I
I
I
In general it is good programming practice to never allow program flow to cross .
a page boundary except by using a TUN or TMS instruction. The following example
will show why this is true. Suppose a program in memory appears as below:
I
Decimal Addres s
PAGE 0
o
200
253
255
PI
LDM
o
TCN 12
XCH
PI
3
If the accumulator is non-zero when the TCN is executed, program control will be
transferred to location 200, as the programmer intended.
Suppose now that an error discovered in the program requires that a new instruction be inserted somewhere between locations 200 and 253. The program would
now appear as follows:
4-1
Decimal Address
PAGE 0
o
200
PI
LDM
0
254
TCN
256
PAGE 1
XCH
456
12
PI
I--
3
:~
511
Since the TCN is now located in the last two locations of a page it functions
differently. Now if the accumulator is non-zero ~Nhen the TCN is executed program
control will be erroneously transferred to location 456, causing invalid results.
I
I
Since both the TUN and TMS instructions use 12-bit addresses to directly address
locations on any page of memory
page boundaries.
I
only thesE instructions should be used to eros s
4-2
4.2
SUBROUTINES
Frequently a group of instructions must be repeated many times in a program.
The group may be written lin" times if it is needed at lin different points in a
program but better economy can be obtained by using subroutines.
I
II
I
A subroutine is coded like any other group of assembly language statements, and
is referred to by its name, which is the label of the first instruction. The programmer reference s a subroutine by writing its name in the operand field of a JMS
instruction. When the JMS is executed the address of the next sequential instruction after the JMS is written to the address stack (see Section 2.4),
and
program execution proceeds with the first instruction of the subroutine. When
the subroutine has completed its work a BBL instruction is executed, which loads
a value into the accumulator and causes an address to be read from the stack into
the program counter causing program execution to continue with the instruction
following the JMS. Thus ,one copy of a subroutine may be called from many
different points in memory, preventing duplication of code. Note also that since
the address stack and the JMS instruC?tion use l2-bit addresses, calling programs
and subroutines may be located anywhere in ROM or control program RAM (they
need not be on the same page in memory) .
I
I
I
Example: Subroutine IN increments an 8 bit number passed in index register 0
and 1 and then returns to the instruction following the last JMS instruction executed.
LABEL
IN,
CODE
---
XCH
OPERAND
1
lAC
XCH
NC,
JCN
INC
BBL
1
10 NC
o
o
/ Reg 1 to Accum.
/ Increment value and produce carry
/ Restore reg 1.
/ Jump if Carry = o.
/ Increment high order 4 bits
/ Return
Assume IN appears as follows:
4-3
Arbitrary Memory
Address
(Hex)
3CO
3C2
JMS
IN
401
403
JMS
IN
~
I~~---/'-----~
When the first JMS is executed address 3C2H is written to the address stack and
control is transferred to IN. Execution of the BBL statement will cause the addres s
3C2H to be read from the stack and placed in the program counter causing execution to continue at 3C2H (since the JMS occupies two bytes) .
I
I
I
Address Stack
Before JMS
Stack While IN
Is Executing
ADR 1
3C2H
ADR 2
ADR 2-
ADR 3
ADR 3
_Stack After BBL
Is Perfromed.
3C2 H
.......
ADR 2
ADR 3
When the second JMS is executed address 403H is written to the stack and control
is again transferred to IN. This time the BBL will cause execution to resume at
403H.
I
I
I
Note that IN could have called another subroutine during its execution causing
another address to be written to the stack. This can occur only up to three levels
however since the stack can hold only three addres ses • Beyond this point
some addresses will be overwritten and BBLls will transfer program control to
incorrect addresses.
I
I
I
4-4
I
4.3
BRANCH TABLE PSEUDOSUBROUTINE
Suppose a program consists of several separate routines, any of which may
be executed depending upon some initial condition {such as a bit set in the
accumulator}. One way to code this would be to check each condition sequentially and branch to the routines accordingly as follows:
CONDITION =
IF YES BRANCH
CONDITION =
IF YES BRANCH
CONDITION
TO ROUTINE
CONDITION
TO ROUTINE
1 ?
1
2 ?
2
BRANCH TO CONDITION N
A sequence as above 'is inefficient
I
and can be improved by using a branch table.
The logic at the beginning of the branch table program computes an index into
the branch table. The branch table itself consists of a list of starting addresses
for the routines to be selected. Using the table index, the branch table program
loads the selected routine's starting addres s into a register pair and executes a
"jump indirect" to that address. For example consider a program that executes
one of five routines depending upon which bit (possibly none) of the accumulator
is set:
I
Jump
Jump
Jump
Jump
Jump
to
to
to
to
to
a if
routine 1 if
routine 2 if
routine 3 if
routine 4 if
routine
accumulator =
accumulator =
accumulator =
accumulator =
accumulator =
0000
0001
0010
0100
1000
B
B
B
B
B
A program that provides the above logic is given at the end of this section. The
prog!,am is termed a "pseudosubroutine" because it is treated as a subroutine by
the programmer, (i. e. it appears ju st once in memory) but it is entered via a
regular "jump" instruction rather than via a JMS instruction. This is possible
because the branch routines control subsequent execution and will never return
to the instruction following JMS;
I
I
I
4-5
BRANCH TABLE
PROGRAM
MAIN PROGRAM
~
JUMP ROUTINES
-- - - -.-----~
NORMAL SUBROUTINE
RETURN SEQUENCE NOT
FOLLOWED BY BRANCH
TABLE PROGRAM.
LABEL
ST,
CODE
OPERAND
/ Convert Accum to branch table
/ index •
KBP
.I
lAC
JeN
4
ERR
DAC
FIM
OP
B.TL
1
1
10
NC
NC,
JCN
INR
FIN
JIN
BTL,
o
=
1111 B ERRO R
I
/ Jump if lAC produced zero.
/ O.K., restore accumulator.
/ Regs 0 and 1 = addr-es s of
/ branch table.
/ Carry = 0
/ Add index to branch tab-le address
/ Store back in reg 1
/ Jump if no carry
/ If carry, increment reg O.
/ Regs 0 and 1 = address of
/ routine.
I Jump to correct routine.
CLC
ADD
XGH
If
OP
OP
/ Branch table. Each-entry
/ is an a-bit a-ddress
0+ RTO
0+ RTI
0+ RT2
0+ RT3
0+ RT4
/ Error handling routine.
ERR,
4-6
NOTE:
Since FIM, FIN, and TIN operate with 8-bit addresses, routines ST,
BTL, and RTO through RT4 must all reside in the same page of memory_
If the accumulator held 01 OOB when location ST was reached, the KBP would
convert it to 00 11 B _ The 8 bit addres s at BTL + 3 would therefore be loaded into
registers 0 and I, and the TIN would cause program control to be transferred to
routine RT3_
4-7
4.4
LOGICAL OPERATIONS
This section gives three subroutines which produce the logical operations
AND
"0R
and "XOR (exclusive -OR).
II
II
II I
II
I
4.4.1 LOGICAL "AND"
The AND function of two bits is given by the following truth table:
a
1
oQJTI
lL±J
Since any bit ANDed with a zerC? produces a zero, and any bit ANDed with a one
remains unchanged the AND function is often used to zero groups of bits.
I
The following subroutine produces the AND, bit by bit, of the two 4-bit quantities
held in index registers a and 1. The result is placed in register 0, while register
1 is set to O. Index registers 2 and 3 are also us-ed.
For example ,.: if register
- replaced with 00 lOB.
a =
11 lOB and register 1 = OOllB register
I
a will
be
1110 B
AND
-0011 B
0010 B
The subroutine produces the AND of two bits by placing the bits in the leftmost
position of the accumulator and register 2, respectively and zeroing the rightmost three bits of the accumulator and register 2,. Register 2 is then added to the
accumulator and the resulting carry is equal to the AND of the two bits.
I
I
4-8
LABEL
CODE
OPERAND
AND,
Ll,
FIM
LDM
XCH
RAL
XCH
INC
XCH
JCN
XCH
RAR
XCH
XCH
RAL
XCH
RAR
ADD
JUN
BBL
IP
0
0
L2,
4.4.2
0
3
3
4
3
/ REG 2 ::: 0, REG 3 = 11
11
/
/
/
/
/
/
/
/
/
/
/
/
/
/
/
/
/
L2
2
1
1
2
Ll
0
GET BIT OF REG 0; SET ACC = 0
REG 0 DATA TO ACC; REG 0 = 0
1st "AND' BIT TO CARRY
SAVE SHIFTED DATA IN REG 0; ACC={)
DONE'IF REG 3 = 0
REG 3 TO ACC
RETURN IF ACC = 0
OTHERWISE RESTORE ACC AND REG3
BIT OF REG 0 IS ALONE IN ACC
SAVE 1 st 'AND' BIT IN REG 2
GET BIT OF REG 1
LEFT BIT TO CARRY
SAVE SHIFTED DATA IN REG 1
2ND lAND' BIT TO ACC
'ADD' GIVES 'AND' OF THE 2 BITS
IN CARRY
RETURN TO MAIN PROGRAM.
LOGICAL "0R"
The OR function of two bits is given by the following truth table:
o
1
:GI8
Since any bit ORed with a one produces a one and. any bit ORed with a zero
remains unchanged, the OR function is often used to set groups of bits to one.
I
The following subroutineprodu~es t-he OR, bit by bit of the -two 4"""bit quantities
held in index registers 0 and 1. The result is place-d in register 0 while register
1 is set to o. Index registers 2 and 3 are also used.
I
I
4-9
For example, if register 0:::: 0100B and register l:::: 0011B, register 0 will be
replaced with 0 I11B.
OR
0100 B
0011 B
0111 B
The subroutine produces the OR of two bits by placing the bits in the leftmost
position of the accumuiator and register 2 respectively, and zeroing the rightmost
three bits of the accumulator and register 2. Register 2 is then added to the
accumulator. If the resulting carry = I, the OR of the two bits:::: 1. If the resulting
carry :::: 0, the OR of the two bits is equal to the leftmost bit of the accumulator.
I
LABEL
CODE
OPERAND
OR,
Ll,
FIM
LDM
XCH
IP
0
0
11
RAL
XCH
INC
XCH
JCN
XCH
RAR
XCH
LDM
XCH
RAL
XCH
RAR
L2,
0
~
3
4
L2
3
2
0
1
1
ADD
2
TCN
RAL
TUN
BBL
2
L1
Ll
0
4-10
I
I
I
REG 2 :::: 0, REG 3 :::: 11
GET BIT OF REG 0; SET ACC = 0
REG 0 DATA TO ACC; REG 0 :::: 0
lIst 'OR' BIT TO CARRY
I SAVE SHIFTED DATA IN REG 0; ACC::::O
I DONE IF REG 3 :::: 0
/ REG 3 TO ACC
I RETURN IF ACe :::: 0
I OTHERWISE RESTORE ACC ANDREG3
I BIT OF REG .() IS ALONE IN ACC
I SAVE 1st 'OR' BIT IN REG 2
I GET BIT IN REG 1; SET ACC :::: 0
I
I
I
I
I
I
I
I
LEFT BIT TO GARRY
SAVE SHIFTED DATA IN REG 1
2ND 'OR' 'BIT TO ACC
PRODUCE THE OR OF THE BITS.
JUMP IF CARRY = 1 BECAUSE 'OR ::::l
OTHERvVISE 'OR' = LEFT BIT OF
ACCUMULATOR
TRANSMIT TO CARRY BY RAL
i
4.4.3
LOGICAL "XOR" EXCLUSIVE-OR
The XOR (exclusive -OR) function of two bits is given by the following truth
table:
o
o
1
1
ffiB
Since the e~clusive OR of two equal bits produces a zero and the exclusive OR
of two unequal bits produces a one, the exclusive OR function can be used to
test two quantities for equality. If the quantities differ in any bit position, a
one will be produced in the result.
The following subroutine produces the exclusive - OR of the two 4-bit quantities
held in index registers a and I. The result is placed in register 0, while register
1 is set to O. Index registers 2 and 3 are also u.sed.
For example if register 0 = OOIIB and register 1 = 0010B, register 0 will be
replaced with OOOlB.
0011 B
XOR
0 010
B
0001
B
, The .s.ubroutine produces the XOR of two bits by placing the bits in the leftmost
POSItlO~ of the accumulator and register 2, respectively, and zeroing the rightmost
three bIts of the accumulator and register 2. Register 2 is then added to the
accumulator. The XOR of the two bits is then equal to the leftmost bit of the
a ccum ula tor.
.
4-11
LABEL
CODE
OPERAND
XOR,
Ll,
FIM
IP
0
LDM
XCH
RAL
XCH
INC
XCH
JCN
XCH
RAR
XCH
2
LDM
XCH
0
1
11
@
0
3
3
4
3
L2
L2,
REG 2 = 0, REG 3 = 11
GET BIT OF REG 0; SET ACC =0
'REG 0 DATA TO ACC; REG 0=0
1ST XOR BIT TO CARRY
SAVE SHIFTED DATA IN REG 0; ACC = 0
DONE IF. REG 3 = 0
REG 3 TO ACC
RETURN IF ACC = O.
OTHERWISE RESTORE ACC & REG 3
BIT OF REG 0 IS ALONE IN ACC
SAVE 1ST XOR BIT IN REG 2
/ GET BIT IN REG 1; SET ACC = 0
RAL
XCH
RAR
ADD
RAL
rUN
BBL
/
/
/
/
/
/
/
/
/
/
/
/ LEFT BIT TO CARRY
/ SAVE SHIFTED DATA IN REG 1
/ 2ND 'XOR1 BIT TO ACC
I PRODUCE THE XOR OF THE BITS
/ XOR'= LEFT BIT OF ACCUM; TRANSMIT
/ TO CARRY BY RAL.
1
2
Ll
0
4-12
4.5
MULTI-DIGIT ADDITION
The carry bit may be u sed to add unsigned data quantities of arbitrary length.
Consider the following addition of two 4-digit hexadecimal numbers:
381 C
+
69F2
A20E
This addition may be performed by setting the carry bit = 0 adding the two
low-order digits of the numbers then adding the resulting carry to the two next
higher order digits and so on:
I
I
I
r
3
8
1
6
9
F
C
2
A
2
o
E
Carry
=1
Carry = 1
Carry = 0
The following subroutine will perform a sixteen .digit addition
tions:
The two numbers to be added are stored in DATA RAM chip 0
I
I
making these assump-
registers 0 and 1.
The numbers are stored with the least significant digit first (in character 0) .
The result will be stored least significant digit first in register C replacing the
contents of register 1.
Index register 8 will count the number of digits (up to 16)
4-13
which have been added.
Status Chars.
DATA RAM CHIP 0 BEFORE ADDITION
,---A----..
Register
0
C
1 8
3 0 0 0 0
0
0
0
0
0
0
0
0
1
2
F 9
6 0
0
0
0
0
0
0 0
0
0
0
0
2
3
DATA RAM CHIP 0 A;FTER ADDITION
Register 0
1
C
1 8 3 0 0 0 0 0
E 0
0 0
0
0 0
0
0
2 A 0 0 0 0 0 0 0 0 0 0 0 0
2
3
AD,
ADl,
OVR,
FIM
2P
0
FIM
3P
16
CLB
XCH
SRC
RDM
SRC
ADM
8
2P
3P
WRM
INC
5
INC
7
ISZ
8
BBL
0
ADI
4-14
/ REG PAIR 2P -= RAM CHIP 0 OF
/ REG 0
/ REG PAIR 3P = RAM CHIP 0 OF
-I REG 1
/ SET CARRY = 0
/ SET DIGIT COUNTER = 0
/ SELECT RAM REG 0
/ READ DIGIT TO ACCUMULATOR
/ SELECT RAM REG 1
/ ADD DIGIT + CARRY TO ACCUMU/ LATOR
/ WRITE RESULT TO REG 1
/ ADDRESS NEXT CHAR. OF RAM
/ REG 0
/ ADDRESS NEXT CHAR OF RAM
/ REG 1
/ BRANCH IF DIGIT COUNTER
< 16 (NON ZERO)
When location OVR is reached, RAM register I will contain the sum of the two 16
digit numbers arranged from low order digit to high order digit. {The reason
multi-digit numbers are arranged this way is that it is easier to add numbers
from low order to high order digit, and it is easier to increment addresses than
to decrement them.
The first time through the program loop, index register pair 2 (index register 4
and 5) contains 0 and index register pair 3 (index registers 6 and 7) contains 16,
referencing the first data characters of DATA RAM registers 0 and I, respectively.
On succeeding repitions of the loop, index registers 5 and 7 are incremented,
referen cing sequential data characters, until all 16 digits have been added.
4.6
MULTI-DIGIT SUBTRACTION
The earlY bit may be used to subtract unsigned data quantities of arbitral}' length.
Consider the following subtraction of two 4-digit hexadecimal numbers:
54BA
-
14F6
3FC4
This subtraction may be performed by first setting the carry bit = 1. Then for each
pair of digits, the program must complement the carty bit and perform the subtraction. By this process I the carry bit will adjust the differences, taking into account
any borrows which may have occurred.
This process applied to the above subtraction proceeds as follows:
=
(1 )
Set carry bit
1.
(2 )
Complement carry bit.
(3)
Subtract low -order digits:
Carry now
=
A = 1010B
6= 1001B
carry =
1
. ..u0100B=
4
4-15
O.
(4 )
Complement resulting carry.
(5 )
Subtract next digits:
B
F
carry
=
=
=
Carry now
=
O.
=
1 ..
=
1.
1011 B
0000 B
1
..QjIIOO B
=
CH
(6)
Complement resulting carry. Carry now
(7 )
Subtract next digits:
=
4" =
0100 B
101 1 B
carry =
0
4
.JLllll1 B = FH
(8)
Complement resulting carry.
(9)
Subtract next digits:
Carry now
=
T =
5
carry
0101 B
III 0 B
=
0
.1JOOll B
=
3
Thus the correct result, 3FC4H,. is bbtained. The following subroutine will
perform a sixteen digit subtraction, making these assumptions;
As in the example of Section 4. 2 I the two numbers are stored in DATA RAM chip
0, registers 0 and 1 (register 1 containing the subtrahend). The numbers are
stored with the lea st significant digit in character 0, and the result is stored back
into register 1. Index register 8 will count the number of digits (up to 16) which
have been subtracted.
4-16
SB,
SB1,
OV,
FIM
2P
0
FIM
3P
16
CLB
XCH
STC
CMC
SRC
RDM
SRC
SBM
/
/
/
/
8
2P
3P
WRM
INC
5
INC
7
ISZ
8.
BBL
0
SBl
REG
REG
REG
REG
PAIR 2P
0
PAIR 3P
1
::=
RAM CHIP 0
::=
RAM CHIP 0
/
/
/
/
/
/
/
/
/
/
/
/
/
/
SET DIGIT COUNTER = 0
SET CARRY = 1
COMPLEMENT CARRY BIT
SELECT RAM REG 0
READ DIGIT TO ACCUMULATOR
SELECT RAM REG 1
SUBTRACT DIGIT AND CARRY
FROM ACCUMULATOR
WRITE RESULT TO REG 1
ADDRESS NEXT CHAR. OF RAM
REG 0
ADDRESS NEXT CHAR. OF RAM
REG 1
BRANCH IF DIGIT COUNTER
/.< 16 (NON-ZERO).
When location OV is reached RAM register 1 will contan the difference of the two
16 digit numbers. Note that the carry bit from the previous subtraction is com-:
p1emented by the CMC instruction each time through the program loop.
I
4-17
4. 7
DECIMAL ADDITION
Each 4 bit data quantity may be treated as a decimal number as long as it represents one of the decimal digits from 0 through 9, and does not contain any of the
bit patterns representing the hexadecimal digits A through F. In order to preserve
this decimal interpretation when perfonning addition, the value 6 must be added
to the accumulator whenever an addition produces a result between 10 and 15.
This is because each 4 bit data quantity can hold 6 more combinations of bits
than there are decimal digits.
The DAA (decimal adjust accumulator) instruction is provided for this purpose.
Also, to permit addition of multi-digit decimal numbers I the DM adds 6 to the
accumulator whenever the carry bit is set indicating a decimal carry from previous additions. The carry bit is unaffected unless the addition of 6 produces
a carry in which case the carry bit is set.
I
To perform the decimal addition:
469
+
329
798
the process works as follows.
( 1)
Clear the carry and add the lowest-order digits
9 == 1001 B
9 = 1001B
carry ==
0
2..10 0 10B
"'-carry =
(2)
1
Perform aDAA operation, which will add 6 to the accumulator. Since no
carry is produced by this operation I the carry bit is left unaffected I
remaining = 1.
4-18
Accum.
6
=
=
0010 B
0110 B
a
=
Carry
~ 1000 B
(3)
8
=
9
Add the next two digits.
6
2
Carry
= a 11 a
B
=
=
0010 B
1
..Qj
1001 B
'carry
(4)
=
= a
Perform a DAA operation. Since the accumulator is not greater than 9 and
the carry is not set no action occurs.
I
(5 )
Add the next two digits:
4
:3
Carry
=
=
=
0100 B
0011 B
a
J2.I a 11 1
"
Carty
(6)
B
=
7
= a
Perform a DAA operation. Again, no action occurs. Thus the correct
decimal result 798 is generated in three 4 bit data characters.
A subrout1ne which adds two 16 digit decimal numbers, then, is exactly analagous
to the 16 digit hexadecimal addition subroutine of Section 4.2, and may be produced by inserting the instruction DAA after the ADM instruction of that example.
4-19
4.8
DECIMAL SUBTRACTION
Each 4 bit data quantity may be treated as a decimal number as long as it represents one of the decimal digits 0 through 9. The TCS (transfer carry subtract)
and DAA (decimal adjust accumulator) may be used to subtract two decimal numbers
and produce a decimal number. In fact, the TCS instruction permits subtraction
of multi-digit decimal numbers.
The process consists of generating the ten's complement of the subtrahend digit
(the difference between the subtrahend digit and 10 decimal), and adding the
result to the minuend digit. For instance, to subtract 2 from 7, the ten's complement of 2 (l 0-2 = 8) is added to 7, producing 15 decimal which, when truncated
to a 4 bit quantity gives 5 (the required result). If a borrow was generated by
the previous subtraction, the 9' s complement of the subtrahend digit is produced
to compensate for the borrow.
In detail, the procedure for subtracting one multi -digit decimal number from
another is as follows:
= 1 indicating
(1)
Set the carry bit
no borrow.
(2 )
Use the TCS instruction to set the accumulator to either 9 or 10 decimal.
(3)
Subtract the subtrahend digit from the accumulator, producing either
the 9' s or 10' s complement.
(4)
Set the carry bit =
(5 )
Add the minuend digit to the accumulator.
(6)
Use the DM instruction to make sure the result in the accumulator is
in decimal fonnat, and to indicate a borrow in the carry bit if one
occurred.
o.
Save this re suI t •
(7)
If there are more digits to subtract, gO to step 2.
Otherwise stop,
4-20"
Example:
Perfonn the decimal subtraction
51
- 38
13
=
(1 )
Set ca rlY
1. '
(2 )
TCS sets accumulator = 101 OB and carry
(3)
Subtract the subtrahend digit 8 from the accumulator.
Accumulator
=
=
O.
1 0 lOB
B
1
8= 0111
-=--CarlY
=
0010 B
(4 )
Set carlY = O.
(5 )
Add minuend digit 1 to accumulator.
Accumulator = 0 0 lOB
1 - 0001 B
earlY =
a
JU
(6)
0011B = 3
...
Carry = a
DAA leaves accumulator = 3 = first digit of result, and' carry
indicating that a borrow occurred.
= 1001B and
TCS sets accumulator
(8)
Subtract the subtrahend digit 3 from the accumulator.
Accumulator
3"
carry
= o.
(7)
1 001 B
11 0 OB
Carry
1
011
a
B
4-21
=
0,
(9 )
Set carry = O.
( 10) Add minuend digit 5 to accumulator.
Accumulator
5
Cany
= o1 1 0
= 0101
0
=
B
B
..2J 1011
B
"-Carry
= 0
(11) DAA adds 6 to accumulator and sets carry
occurred.
Accumulator
6
=
=
=
I, indicating that no borrow
1 0 lIB
0110 B
~ 0 0 0 1 B =1
=
Second digit of result.
"
Carry = 1
Therefore the result of subtracting 38 from 51 is 13.
The following subroutine will subtract one 16 digit decimal number from another
using the following assumptions.
I
The minuend is stored least significant digit first in DATA RAM chip 0 I register
O.
The subtrahend is stored least significant digit first in DATA RAM chip 0 I register
1.
The result will be stored lea st significant digit first in DATA RAM chip 0
oI replacing the minuend.
I
register
Index register 8 will count the number of digits (up to 16) which have been subtracted.
4-22 '
SD,
SDl,
FIM
FIM
CLB
XCH
STC
TCS
SRC
SBM
CLC
SRC
ADM
DN,
2P
3P
/ REG PAIR 2P = RAM CHIP 0, REG 0
/ REG PAIR 3P = RAM CHIP 0
/ REG 1
0
16
8
3P
2P
DM
WRM
INC
5
INC
7
ISZ
8
BBL
0
SDI
/
/
/
/
/
/
/
/
/
/
/
/
/
/
/
/
/
I
4-23
SET DIGIT COUNTER = 0
SET CARRY = 1
ACCUMULATOR = 9 OR 10
SELECT RAM REG 1
PRODUCE 9's OR la's
COMPLEMENT
SET CARRY = 0
SELECT RAM REG 0
ADD MINUEND TO ACCUMULATOR
ADJUST ACCUMULATOR
WRITE RESULT TO REG 0
ADDRESS NEXT CHAR. OF RAM
REG 0
ADDRESS NEXT CHAR. OF RAM
REG 1
BRANCH IF DIGIT COUNTER <. 16
(NON -ZERO) •
4.9
FLOATING POINT NUMBERS
The structure of DATA RAM chips is fully described in Section 2.3.3.
One use to which a 16-character DATA RAM register and its 4 status characters
can be put is to store a 16 digit decimal floating point number.
Such a number can be represented in the form:
+ .DDDDDDDDDDDDDDDD * 10+ EE
The 16 data characters of a RAM register could then be used to store the digits
of the number I two status characters could be used to hold the digits of the
exponent while the remaining two status characters would hold the signs of the
number and its exponent.
I
If a value of one is chosen to represent minus and a value of zero is chosen to
represent plus, status characters 0 and 1 hold the exponent digits status character 2 holds the exponent sign and status character 3 holds the number's sign,
then the number
I
+.12345.67890812489 x 10-
23
would appear in a RAM register as follows:
RAM CHIP
RAM
RAM
RAM
RAM
REGISTER
REGISTER
REGISTER
REGISTER
0
1
2
3
1 2 3 4 5
6 7 8 9 0 8 1 2 4 8 9
2 3 1 0
~-----------------v------------------~~
DATA CHARACTERS
4-24
Status
Characters
APPENDIX "A"
INSTRUCTION
SUMMARY
This appendix provides a summary of 4004 instructions. Abbreviations used are as
follows:
DESCRIPTION
ABB REVIATION
A
The accumulator.
An
Bit n in the accumulator, where n may have
any value from 0 to 3.
ADDR
A read-only memory or program random-access
memory address.
carry
The carry bit.
PC
The 12 bit Program Counter.
peR
The high-order
PCL
PCM
The low-order 4 bits of the Program Counter.
The middle 4 bits of the Program Counter.
RAM
Random-access memory.
REG
Any index register from 0 to 15 ..
RO
Index register 0 ~
Rl
Index register 1.
ROM
Read-only memory.
RP
Any index register pair from
STK
The address stack.
value
The number obtained by comp1ementing each bit
of value.
A-I
4 bits of the Program Counter.
.op to
7P.
( Continued) :
DESCRIPTION
ABBREVIATION
X:Y
The value' obtained by concatenating the values
X and Y.
[ ]
An optional field enclosed by brackets.
(
Contents of register or memory enclosed by
parentheses.
)
Replace value on left hand side of arrow with value
on right hand side of arrow.
A-2
A.I
INDEX REGISTER INSTRUCTIONS
Format:
[LABEL I
FIN
]
RP
-- or-(LABEL ,]
INC
Code
REG
Description
FIN
( RP) ---- ({ PCR: RO: Rl) )
Load RP with 8 bits of ROM data
addressed by register pair O.
INC
( REG) --- ( -REG) + 1
Increment register REG.
A.2
INDEX REGISTER TO ACCUMULATOR INSTRUCTIONS
Format:
[LABEL, ]
CODE
Code
REG
Des cription
-
( A) - - - ( A) + (REG) + (carry)
Add REG plus carry bit to accumulator.
SUB
(A) --- (A) + (REG) +(carry)
Subtract REG from a ccumu lator
with borrow.
LD
(A)
XCH
( A)
ADD
..
....
•
(REG)
Load accumulator from REG •
(REG)
Exchange -contents of accumulator
and REG.
A-3
A.3
ACCUMULATOR INSTRUCTIONS
Format:
[LABEL]
CODE
Description
Code
a
Clear both accumulator and carry.
(carry) - - - 0
CLB
(A)----
CLC
(carry)--- a
lAC
(A)--- (A) + 1
CMC
(carry) ---- (carry)
CMA
(A)----
I
I
Clea r carry.
. Increment accumulator.
Complement carry.
Comp"lement each bit of the accumulator.
(10
Rotate accumulator left
through carry.
RAL
RAR
An ---- An+ 1 , (carry) ~AO' .A --- (carry)
.
3
Rotate accumulator right
through carry.
TCC
(A)--'- 0 . AO--'- (carry), (cair.y)~ 0
Transmit the value of the
carry to the accumulator
then clear carry.
l
DAC
(A)-.-(A) -1
Decrement accumulator
TCS
If (carry) = 0 (A) --- 9
10
If (carry) = 1, (A)~IOIO
Adjust accumulator for decimal
subtract.
I
(carry)---- 0
STC
(c."'-arry) --- 1
Set carry.
DM
If( A) > 9
Adjust accumulator for decimal
add.
or (carry)
= 11 (A).....-(A) + 6
10
Convert accumulator from I of n code
to
binary
value
.
...- - _...._ _ _ _ _ _ _ _ _ _ _ _...u..._ _ _ _
___
__
.. _ _ _ _' "
KBP
I!IIInIil~.$H.~~1~'I::~;::iII
A-4
A.4
IMMEDIATE INSTRUCTIONS
Format:
[LABEL, ]
FIM
RP
DATA
-- or-[LABEL, ]
Code
LDM
DATA
Description
Load 8 bit immediate DATA into register
pair RP.
FIM
( RP)~DATA
LDM
( A)
A.S
TRANSFER OF CONTROL INSTRUCTIONS
-lIE-
DATA
Load 4 -bit immediate DATA into the
accumulator.
Format:
(LABEL,]
JCN
eN
ADDR
-- or--[LABEL,]
JIN
RP
-- or-[LABEL, ]
ISZ
REG
-- or-{LABEL,]
JUN
ADDR
A-S
Description
Code
JUN
(PCH:PCM:PCL)-'-ADDR
Jump to location ADDR.
JIN
(peM: PCL) ----(RP)
Jump to the address in register
pair RP.
JCN
If CN true, (PCM: PCL)--- ADDR
If CN false, (PL) --- (PL) + 2
Jump to ADDR if condition true.
ISZ
CREG) --- ( REG) +
A.6
SUBROUTINE LINKAGE INSTRUCTIONS
Increment REG. If zero, skip.
1
If non zero, jump to ADDR
If re suI t = 0, (PL) --- ( PL) + 2
If result = 1, (PCM: PCL)---ADDR
Format:
[LABEL, ]
ADDR
JMS
-- or-BBL
[LABEL, ]
DATA
Description
Code
JMS
(STK) --- (PC)
BBL
(PC)--- (STK)
(PC)---ADDR
I
I
( A) ---- DATA
A-6
Call subroutine and push return
address onto stack.
Return from subroutine and load
accumulator with immediate DATA.
I
A.7
NOP INSTRUCTION
Format:
[ LAB EL , ]
NO P
De scription
Code
NOP
A.8
-------------------
No operation
MEMORY SELECTION INSTRUCTIONS
Format:
[LABEL,]
SRC
RP
-- or-[LABEL,]
DCL
Code
.SRC
DeL
Description
DATA BUS---( RP)
Contents of RP select a RAM or
ROM address to be used by I/O
and RAM instructions.
CPU:~A2: Al : AD
Select.a particular RAM bank.
A-7
A.9
I/O AND RAM INSTRUCTIONS
Format:
CODE
[LABEL, ]
Description
Code
WRM
( RAM)---A
Write accumulator to RAM.
WMP
RAM output port ........ (A)
Write accumulator to RAM output port.
WRR
ROM output port -.;1-( A)
Write accumulator to ROM output port.
WPM
(PRAM)
Write accumulator to Program RAM.
WRn
RAM status
character n~(A)
Write accumulator to RAM status char&cter
n (n = 0, 1 i 2 or 3).
RDM
(A)--- RAM
Load accumulator from RAM.
RDR
( A) --- ROM input port
Load accumulator from ROM input port.
RDn
(A)~
Load accumulator from RAM status
character n (n = 0, I, 2, or 3) .
·ADM
---( A)
RAM status
character n
(A)---(A) + (RAM)"
Add RAM data plus carry to accumulator.
+ (carry)
SBM.
(A)--- (A) + (RAM) + (carry)
A-8
Subtract RAM data from accumulator with
borrow.
APPENDIX "BII
-- INSTRUCTION MACHINE CODES --
In order to help the programmer examine memory when debugging programs this
appendix provides the as sembly language instruction represented by each of the
256 possible instruction code bytes.
I
Where an instruction occupies two bytes
I
only the first (code) byte is given.
B-1
DEC
0
1
2
3
4
5
6
7
8
9
10
II
12
13
14
IS
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
OCTAL
000
001
002
003
004
005
006
007
010
all
012
013
014
015
016
017
020
021
022
023
024
025
026
027
030
031
032
033
034
035
036
037
040
041
042
043
044
045
046
047
050
HEX
00
01
02
03
04
05
06
07
08
09
OA
OB
OC
OD
OE
OF
10
11
12
13
14
15
16
17
18
19
IA
IB
IC
ID
IE
IF
20
21
22
23
24
25
26
27
28
MNEMONIC
COMMENT
NOP
---
---------
--.-
-------------------
JeN
CN =
eN'=
eN =
eN =
CN=
eN=
CN =
CN =
eN =
eN =
CN =
CN =
CN =
CN =
eN =
CN =
TeN
TeN
JCN
JCN
JeN
JCN
JCN
JCN
JCN
JeN
JCN
JCN
JeN
JCN
JCN
FIM
SRC
FIM
SRC
FIM
SRC
FIM
SRC
FIM
B~2
OP
OP
1P
1P
2P
2P
3P
3P
4P
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
DEC
OCTAL
HEX
MNEMONIC
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
051
052
053
054
055
056
057
060
061
062
063
064
065
066
067
070
071
072
073
074
075
076
077
100
101
102
103
104
105
106
107
110
29
2A
2B
2C
2D
2E
2F
30
31
32
33
34
35
36
37
38
39
3A
3B
3C
3D
SRC
FIM
SRC
FIM
SRC
FIM
SRC
FIN
JIN
FIN
TIN
FIN
TIN
FIN
TIN
FIN
TIN
FIN
TIN
FIN
JIN
FIN
JIN
JUN
JUN
JUN
JUN
JU,N
rUN
JUN
JUN
JUN
JUN
TUN
TUN
rUN
TUN
JUN
TUN
III
112
113
114
115
116
117
120
121
3E
3F
40
41
42
43
44
45
46
47
48
49
4A
4B
4C
4D
4E
4F
50
51
JMS
JMS
B-3
COMMENT
4P
5P
5P
6P
6P
7P
7P
OP
OP
IP
IP
2P
2P
3P
3P
4P
4P
5P
SP
6P
6P
7P
7P
"
Second hex digit is
> part of jump addres s.
DEC
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
III
112
113
114
115
116
117
118
119
120
121
122
OCTAL
HEX
122
123
124
125
126
127
130
131
132
133
134
135
136
137
140
141
142
143
144
145
146
147
150
151
152
153
154
155
156
15'7
160
161
162
163
164
165
166
167
170
171
172
52
53
54
55
56
57
58
59
5A
5B
5C
5D
5E
SF
60
61
62
63
64
65
66
67
68
69
6A
MNEMONIC
JMS
JMS
JMS
JMS
JMS
JMS
JMS
JMS
JMS
JMS
JMS
JMS
JMS
JMS
INC
INC
INC
INC
INC
INC
INC
INC
INC
INC
INC
INC
INC
INC
INC
INC
6B
6C
6D"
6E
6F
70
71
72
73
74
75
76
77
78
79
7A
ISZ
ISZ
ISZ
ISZ
ISZ
ISZ
ISZ
ISZ
ISZ
ISZ
ISZ
£-4
COMMENT
"
Second hex digit
is part of jump
address.
0
1
2
3
'1
5
6
7
8
9
10
11
12
13
14
15
0
1
2
3
4
5
6
7
8
9
10
DEC
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
OCTAL
173
174
175
176
177
200
201
202
203
204
205
206
207
210
211
212
213
214
215
216
217
220
221
222
223
224
225
226
227
230
231
232
233
234
235
236
237
240
241
242
243
MNEMONIC
HEX
ISZ 11
ISZ 12
ISZ 13
ISZ 14
ISZ 15
ADD 0
ADD 1
ADD 2
ADD 3
ADD 4
ADD 5
ADD 6
ADD 7
ADD 8
ADD 9
ADD 10
ADD 11
ADD 12
ADD 13
ADD 14
ADD 15
SUB 0
SUB 1
SUB 2
SUB 3
SUB 4
SUB 5
SUB 6
SUB 7
SUB 8
SUB 9
SUB 10
SUB 11
SUB 12
SUB 13
SUB-" 14
SUB 15
LD
D
LD
1
2
LD
3
LD
7B
7C
7D
7E
7F
80
81
82
83
84
85
86
87
88
89
8A
888e."
8D .~i
8E -:"'
8F
90
91
92
93
f
94 "
95 j
96
97
98
99
9A
9B
9C
9D
9E
9F
AD
Al
A2
A3
B-S
COMMENT
..
DEC
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
OCTAL
HEX
244
245
246
247
250
251
252
253
254
255
256
257
260
261
262
263
264
265
266
267
270
271
272
273
274
275
276
277
300
301
302
303
304
305
306
307
310
311
312
313
314
A4
AS
A6
A7
A8
A9
MNEMONIC
LD
LD
LD
LD
LD
LD
LD
LD
LD
LD
LD
LD
XCH
XCH
XCH
XCH
XCH
XCH
XCH
XCH
XCH
XCH
XCH
XCH
XCH
XCH
XCH
XCH
BBL
BBL
BBL
BBL
BBL
BBL
BBL
BBL
BBL
BBL
BBL
BBL
BBL
AA
AB
AC
AD
AE
AF
BO
Bl
B2
B3
B4
B5
B6
B7
B8
B9
BA
BB
BC
BD
BE
BF
CO
Cl
C2
C3
C4
C5
C6
C7
C8
C9
CA
CB
CC
COMMENT
4
5
6
7
8
9
10
11
12
13
14
15
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
0
1
2
3
4
5
6
7
8
9
10
11
12
'.i!~~
B-6
DEC
OCTAL
HEX
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
-233
234
235
236
237
238
239
240
241
242
243
244
245
315
316
317
320
321
322
323
324
325
326
327
330
331
332
333
334
335
336
337
340
341
342
343
344
345
346
347
350
351
352
353
354
355
356
357
360
361
362
363
364
36-5
CD
CE
CF
DO
Dl
D2
D3
D4
D5
D6
D7
D8
D9
DA
DB
DC
DD
DE
DF
EO
E1
E2
E3
E4
E5
E6
E7
E8
E9
EA
EB
EC
ED
EE
EF
BBL
BBL
BBL
LDM
LDM
LDM
LDM
LDM
LDM
LDM
LDM
LDM
LDM
LDM
LDM
LDM
LDM
LDM
LDM
WRM
WMP
WRR
WPM
WRO
WR1
WR2
WR3
SBM
RDM
RDR
ADM
RDO
RDI
RD2
RD3
FO
CLB
Fl
F2
F3
F4
F5
CLC
lAC
CMC
CMA
RAL
MNEMONIC
B-1
13
14
15
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
COMMENT
I
DEC
OCTAL
HEX
246
247
248
249
250
251
252
253
254
255
366
367
370
371
372
373
374
375
376
377
F6
F7
F8
F9
FA
FB
FC
FD
FE
FF
MNEMONIC
RAR
TCC
DAC
TCS
STC
DAA
KBP
DCL
B-8
COMMENT
APPENDIX "C"
-- ASCn TABLE--
The 4004 uses a seven-bit ASCII code, which is the normal 8 bit ASCII code
with the parity (high order) bit always reset.
Graphic or Control
ASCII (Hexadecimal)
NULL
SOM
00
EOA·
EOM
EOT
02
WRU
RU
BELL
OS
01
03
04
06
07
08
09
FE
H.Tab
OA
OB
OC
OD
OE
Line Feed
V. Tab
Fonn
Return
SO
SI
OF
DCO
10
11
12
X-On
Tape Aux. On
13
14
15
16
X-Off
Tape Aux. Off
Error
Sync
17
18
LEM
SO .
Sl
S2
83
S4
S5
'19
lA
IB
lC
ID
86
lE
S.7
IF
C-l
Graphic or Control
ACK
Alt~ Mode
Rub out
.1
"
#
$
%
&
(
)
'It
+
"
•
/
,
.
,
(
=
ASCII Hexadecimal
,"
7C
7D
7F
21
22
23
24
25
26
27
28
29
2A
2B
2C
2D2E
2F
3A
3B
3C
. 3D.
')
3E
?
'[
3F
I
J
It(-
@
blank,
0
1
2
3
4
5
6
7
8
9
'5B
50
SD
SE
SF
40
20
30
31
32
33
34
35
36
37
38
39
,
C-2
.
Graphic or Control
A
ASCII Hexadecimal
B
4'1
42
C
43
n·
44
E
·45
F
G
., H
. 46
I
J
·47
48
49
4A
K
4B
L
M
N
4C
4D
o
P
4E
4F
... 50
o
51
R
S
T
52 .
U
V
W
53
. 54
y,
55
56
57
58
.59
Z
SA
X
C-3
'."
.
APPENDIX liD"
-- BINARY-DECIMAL-HEXADECIMAL CONVERSION TABLES --
D-l
HEXADECIMAL ARITHMETIC
ADDITION TABLE
9
A
09
OA
OA
08
OS
08
ex:
OC
00
DC
00
00
OE
OE
Of
OF
5
8
7
D
E
F
OD
OE
OF
10
Of
OF
10
11
OE
OF
10
11
12
oe
OF
10
11
12
13
OE
OF
10
11
12
13
14
OE
OF
10
11
12
13
14
15
OE
OF
10
11
13
14
14
10
11
12
12
OF
15
15
16
16
17
OF
10
11
12
13
15
16
17
18
10
11
12
14
16
17
18
19
15
15
16
17
18
19
lA
16
17
18
19
lA
18
17
19
lA
18
lC
lA
lB
lC
10
18
lC
10
1E
0
1
2
3
4
6
1
02
03
04
05
06
07
08
2
03
04
OS
06
07
08
09
3
04
05
06
07
08
09
OA
4
OS,,'
06
07
08
09
OA
5
06
07
08
09
OA
OB
6
07
08
09
OA
OB
7
8
08
09
OA
OB
09
OA
OB
ex:
9
OA
OB
OC
00
A
OB
DC
00
8
C
OB
OC
OC
00
OC
OD
OC
OD
00
13
14
8
ex:
00
OE
OF
10
11
12
13
13
14
C
00
DE
OF
10
11
12
13
14
15
0
OE
OF
10
11
12
13
14
15
16
E
OF
10
11
12
13
14
15
16
17
18
18
19
F
10
J1
12
13
14
15
16
17
18
19
lA
I
MUL l'IPLICATION TABLE
1
2
3
4
5
6
7
8
9
A
8
C
0
E
F
2
04
06
OB
OA
ex:
DE
10
12
14
16
18
lA
lC
IE
3
06
09
OC
OF
12
15
18
18
IE
21
24
27
2A
20
24
4
08
ex:
IE
lC
23
20
28
20
28
32
2C
37
30
3C
34
41
3C
Of
14
19
38
OA
10
14
18
5
46
48
6
OC
12
18
IE
24
2A
30
36
3C
42
48
4E
54
5A
7
OE
15
lC
23
2A
31
38
3F
46
40
54
5B
62
69
8
10
18
20
28
30
38
40
48
50
58
60
68
70
78
9
12
1B
24
20
36
3F
48
51
5A
63
6C
75
7E
87
A
14
32
3C
46
50
5A
64
82
37
42
40
63
8F
18
24
3C
48
54
6C
6E
78
84
C
58
60
8C
9A
96
2C
30
6E
79
78
16
IE
21
28
8
84
90
9C
A8
84
0
lA
27
34
41
4E
58
68
75
82
9C
A9
86
E
lC
38
46
54
62
70
7E
BC
A8
86
C4
C3
02
F
IE
2A
20 '
8f
9A
3C
48
SA
69
78
87
96
AS
64
C3
02
El
D-2
A5
POWE RS 0 F
nvo
tot.o
2
I 0.5
2 0.25
3 0.12'
~.
8
16
4
32
5 0.031 2'
64
128
256
512
I 024
2 0.48
0.062'
6 0.015 6ZS
7 0.007 812 S
,
8 0.003
0.001
1O 0.000
0.000
"
9'06 25
953 125
976 S61 5
488 281 25
.096 12 0.000 2-«
8 192 13 0.000 122
16 384 14 0.000 061
32 768 tS 0.000 030
65 536
131 072
262 1'4
52. 288
, 0.48 576
2 097 152
4194m
• 388 609
I,
m
21,
140
070
OJ,
511
625
312 5
156 25
578 125
\6 0.000 015 258 789
'7 0.000 007 629 394
18 0.000 (0) 814 691
IV 0.000 001 907 3.118
~
0.000
0.000
22 . 0.000
23 0.000
'I
062
531
265
632
5
25
625
812 S
000 953 674 31' 406 25
000 '76 817 158 X>J 125
000 238 .18 579 101 562 5
000 119 209
5:)() 781 25
m
33 S5-4 '32
67 lOS U4
134 217 728
24 0.000 000
25 0.000 000
26 0.000 000
27 0.000 OOQ
268 .3S 456
28
OS9
029
01.
001
6« n5' 390625
B02 322 387 1)95 312 5
9()1 161 193 8~] 656 .15
"SO sao 596 923 828 12S
6().C
0.000 000 003 n5 29() 298 461 "".062"
536 870 '12 29 0.000 000 001 862 645 149 230 9S7 031 2'
I 073 i'4I 824 30 0.000 000 000 931321 57. 61S .78 sa 625
J 147 483648 31 0.000 000 000 465 661 281 307 739 257 812 S
4 294 967 296
• 589 934 592
11 179 869 1M
3-4 3Sf 738 368
32 0.000 000
33 0.000 000
0.000 000
3l 0.000'000
~
68 7" 476 736 36 0.000 000
137 438 953 412 31 0.000 000
274 8n 906 9« 38 0.000 000
"'9 75S 813 888 39 0.000 000
1 099 SII 627 n6 40
2 199 023 2j5 552 41
4 398 ~ 511 104 42
796 093 022 208 "3
e
17 592 ,~ 0« 416
351M 372 088 832
10 368 7« 177 664
140 737 "S8 355 328
281 47.c 976 710 656
562 949 953 421 312
I 125 899 906 8.t2 6H
2 251 799 813 695 248
.c 503 599 627 370 496
9 007 199 25-4 740 992
18 014 398 509 ~81 984
36 o'a 797 018 963 968
n 051
l.e4 115
230
576 460
031
075
151
303
«
0.000
0.000
46 0.000
41 il.OOO
830 6-43 6.53 ~9 628 9Or6
o4lS 311 826 934 814 "53
207 ~., 9\3 467 407 226
103 83 ... 56 733 703613
2'
125
562 5
281 25
000- 014 551 '1.5 229 366 as, 806 6.&0 625
000 007 275957 614 183 425 903 320 312 5
coo 003 631 978 807 091 712 951 660 156 25
000 001 818 989 403 545 856 475 Bla 078 U5
0.000000 000
0.000 000000
0.000 000 000
0.000 000 ClOO
H
732
116
058
029
000 909 "'" 701
OOJ 45-4747350
000 227 373 675
000 113 686 837
000 000 000 056 843
000 000 000 028 421
000 000 000 014 210
000 OOR 000 007 105
418
709
e54
"21
777 928 217
886 0464·118
U3 232 OS9
721 616 029
915 039
95751'
478 159
139 379
860
430
715
351
869
434
717
858
800
404
202
601
014
007
003
001
689
8 ••
422
711
062 5
53125
765 625
882 812 S
941
970
..es
242
406
703
JSI
675
25
US
562 5
78\ 25
"8 0.000 000 000 000 003 552 713 678 800 SOO 929 355621 337 890 625
4' 0.000 000 000 000 OOt 776 356 B39 400 250 4604 677 810 668 945 312 5
so 0.000 000 000 000 000 88B 178 419 700 125232 339905 334 .72 656 25
51 0.000 000 000 000 000 4.. 089 209 850 062 616 169 .52 667 236 328 I2S
52
53
5.
55
0.000
0.000
0.000
0.000
000
000
000
000
000
000
000
000
000
000
000
000
000
000
000
000
222
III
05S
027
0.'
022
511
755
927
855
'711
423
936
872
744
56 0.000 000 000
57 0.000 000 000
58 0.000 000 (tOO
488, 59 0.000 000 000
000 000 013 877
000 000 006 938
000 000 003 "69
000 000 001 734
, 152 921 S04 606 846
2 305 9.e3 009 213 693
.c 611 686 018 "27 381
t 223 311 036 ~4 115
976
952
90.
IlO8
000
000
000
000
2~
594
188
376
752
000
000
000
000
60
6t
62
6l
0.000
0.000
0.000
0.000
000
000
000
000
000
000
000
ClOG
604
302
151
575
925031
462 515
231 257
615 628
309
65.
827
913
787 807 81. 456
893 9()3 907 228
446951 953614
723 "75976 80]
000 000 867 361 737
000 000 .el3 680 868
000 000 216 8.(0 4304
(100 000 101 420211
988
994
491
241
D-3
oe4
042
021
510
726
l6J
181
590
33J 618
166 809
583".1104
791 702
164
062
5·"
270
062 5
031 2S
015 625
S07112 5
755 295 395 851 135 253
377 6~7 697 925 567 626
18e 823 9.c8 962 783813
09 .. 4" 924.8\ 391 906
40J 5-47 205
201 773602
100 886 eol
5SO 44J 400
962 2.0 695 953
981 120 ~7 916
490 560 173 988
14" .210 OM "4
906
'5l
476
738
2S
125
562 5
281 25
369
684
)"2
171
1.0 625
510 312 5
21' 156 25
142 57. 125
, TABLE
or
POWEPS
or
SIXTEEN 10
4 503 599 627 370 496
13
72 057 594 037 927 936
14
1~"
0.10000 00000 00000 00000 x 10
1
0.62500 00000 00000 00000 x .102
0.39062 50000 00000 00000 x 103
0.24414 06250 00000 00000 x '104
0.15258 78906 25000 00000 x 106
0.95367 43164 06250 00000 x 10.
7
0.59604 64477 53906 25000 x 108
0.37252 90298 46191 40625 x 109
0.23283 06436 53869 62891 x 1010
0.J4551 91522 8~668 51807 x 10.
12
0.90949 47017 72928 23792 x 10.
13
0.56843 41886 08080 14870 x 1014
0.35527 J3678 80050 09294 x 10.
15
0.22204 46049 25031 30808 x 1016
0.13877 78780 78144 56755 x 10.
15
0.86736
16"
"
1
o
16
256
2
006
3
65 536
4
I 048 576
5
4
216
6
268 435 456
16 777
7
4 294 967 296
8
68 719 476 736
9
099' 511 '627 776
10
17 592
281
152 921
186 044 416
11
474 976 710 656
12
504 606 846 976
TAB I
10"
,.
or
.
POWER::>
or
17379 88403 54721
x
10. 18
1016
"o
I~OOO
0000
0000
0000
A
1
0.1999
9999
9999
999A
64
2
0.2 8F 5
C2SF
5C28
F5e3
x
3ES
3
0.4189
3748
C6A7
EF9E
x
16- 1
16- 2
2710
4
0.6808
88AC
710e
8296
x
J6- 3
86AO
5
O.A7C5
AC47
1847
8423
x
16- 4
F
4240
6
0.10C6
F 7 AD
B 5E 0
8037
x
16- 4
98
9680
7
0.IA07
F 29A
BCAF
4858
x
16- 5
5F5
E 100
8
0.2 AF 3
IOC4
6118
73BF
x
16- 6
389A
CAOO
9
0.4 4B 8
2FAO
9B5A
52(e
x
2
5408
E 400
10
0.6 OF 3
7F67
5EF6
EADF
x
16- 7
16- 8
17
4876
E SOO
11
O.AF E B
FFOB
(824
AAFF
x
16~9
ES
04A5
1000
12
0.1197
9981
20E A
1119
x
916
4E72
AOOO
13
0.IC25
e268
4976
81C2
)(
16- 9
16- 10
5AF3
107A
4000
14
0.2009
370D
4257
3604
)(
16 -11
3
S07E
A4C6
8000
15
0.480E
8E78
9058
566D
x
16- 12
23
8652
6FCI
0000
16
0.734A
eASF
6226
FOAE
x
16- 13
163
4578
5D8A
0000 .
17
0.8877
AA32
36A4
8449
x
16- 14
OEO
8683
A764
0000
18
0.127'2
5001
024 J
ABAI
x
8AC7
2304
89E8
0000
19
0.1083
C94f
8602
AC35
x
16- 14
16- 15
D-4
HEXADECIMAL·DECIMAL INTEGER
CONVERSIOr~
The table below proyldes (or direct conversions betweon hexo- ,
decimal Integers.>ln the range O-FFF and decImal Integers In
the range 0-4095. For eorlY.rslon of largt"r Integer., 'he '
table values may be added to the following figures:
Hexadecimal
OIOVO
4096
8 192
12288
16384
20480
24576
28672
32768
36 864
40960
45056 .
49 152
53248
57344
61440
65536
69632 .
73728 '
77824
81 920 .
86 016
90 112
94208
98304
102400
106 496
110592
02000
03000
04 000
05000
06 000
07000
08000
09000
OA 000
OB 000
OC 000
00000
OE 000
OF 000
10000
11 -000
12000
13000
14000
15 000,
16000
17000
t8000
19000
lA 000
18000
lC 000
000
010
070
030
O~O
0
1
0000 0001
0016 0017
0032 0033
0().i8 0049
2
3
0002
0018
0003
0019
0035
0034
0050 0051
20000
30000
40000
50000
60000 .
70000
80000
90000
AOOOO
80000
000
00000
EO 000'
FO 000
100000
200000
300 000
400 000
500000
600 000
700000
aoo 000
900000
AOO 000
BOO 000
COO 000
000000
Eoo 000
FOO 000
131072
196608
262 144
327660
393216
458752
524 288
589824
655 360
7208%
786 432
851 968
917504
983040
1 048576
2097 152
. 3 145728
' 4 194304
5 242 880
6 291 456
'1,340032
8388608
9437 164
10 485 760
11 534336
12582912
13631 408
14 680 ()6.4
co
1-000000
16777 216
IF 000
126 976
2000 000
33554432
4
S
0005
0020 0021
0036 0037
0052 0053
0004
6
7
0065
0001
0097
0113
OOB2
0098
0114
0067
0083
0099
0115
0100
0116
080
090
OAO
OBO.
0128
0144
0160
0176
0129 0130
0145 0146
0161 0162
0177 0178
0131
0147
0163
0179
0132 0133
0148 0149
0164 0165
0160 01BI
oeo
0192
0208
0224
0240
0193 0194 0195
0209 0210 0211
0225 0226 0227
0241 0242 02.3
0196
0212
0228
0244
0101
0117
8
9
IS 72861$0
A
8
0006 0007
0000 0009 0010 0011
0022
0038
0054
0024
0023
0039
0055
0068 <>ru9 0070 0071
0084 0085 0006 0087
0064
0080
0096
0112
OD<>
OEO
Of 0
Decimal
•
1E 000
050
060
070
0066
Hexadecimal
114668
118784
122 800
10000
,---
-
DecJma!
0102
0118
0103
0119
0134 0135
0150 0151
0166 0167
0)82 0183
0197 0198
0213 0214
0229 0230
0245 '0246
0199
0215
0231
0241
C
0
E
F
0014
0030
0062
0015
0031
0047
0063
0027
0043
0059
0012 0013
0028 0029
00« 0045
0060 0061
0075
0091
0107
0123
0076
0092
0108
0124
0077 0078
0093 0094
0109 0110
0125 0126
0079
0095
0111
0127
0136 0137 0138 0139
0152 0153 0154 0155
0168 0169 0170 017)
0184 0185 0186 0187
0140
0156
0172
0188
0141 0142
0157 0158
0173 0174
0189 0190
0143
0159
0175
0191
0204
0205
0206
0207
0040
0056
0025 0026
0041 ()().i2
0057 0058
0072 0073
0088 - nOB9
0104 0105
0120 0121
0074
0090
0106
0122
0200 0201 0202
0216 0217 0218
0232 0233 023-4
0248 0249 0250
D-5
0046
0203
02)9
0235
0220 0221 0222 0223
0251
0252 0253 0254 0255
0236
0237
0236
0239
HEXADECIMAL-DECIMAL INTEGER CONVERSION (Cont.)
0
I
2
3
4
5
6
7
8
100
110
120
130
0256
0272
0289
0304
0257
0273
0289
0305
0258
0274
0290
0306
0259
0275
0291
0307
0260
0276
0292
0308
0261
0277
0293
0309
0262
0278
0294
03tO
0263
0279
0295
0311
0264
0280
0296
0312
140
150
160
170
0320
0336
0352
0368
0321
0337
0353
0369
0322
0338
0354
0370
0323
0339
0355
0371
032" 0325 0326
0340 0341 0342
0336 0357 0359
0372 0373 03704
034J
OJM
0328 0329
03-45
0359 , 0360 0361
0376 0377
0375
0330
0346
0362
0378
180
190
0384
0400
0416
0432
0385
0401
0417
0433
0386
0402
()418
0434
0387
0403
0419
0435
0388 0389 0390
0404 0405 a.. 06
0420 0421 0422
().436 0437 0438
0391
0407
0423
0439
0392
0.(08
0424
0440
0393
0409
0425
0441
0394
0410
0426
0442
0449
0465
0481
().497
()4S0 0451
0466 0467
0482 0483
0498 0499
0452
0468
0484
0500
0453
0469
0485
0501
0454
0470
0486
0502
0455
IFO
04-48
0464
0480
0496
0456
0472
0488
0504
0457
0473
0489
0505
200
210
220
230
0512
0528
0544
0560
0513 051~ 0515
0529 0530 0531
0545 • 0546 0547
0561 0562 0563
0516
0532
05-48
0564
0517
0533
0549
0565
0518 0519
0534 0535
0550 0551
0566 0567
0520 0521
0536 0537
0552 0553
()568 056~
240
250
260
270
0576 0577 0578
0592 0593 0594
0608 0609 0610
0624 0625 0626
0579
0595
0611
0627
0582
0598
0614
0630
280
290
2AO
280
0640 0641
0656 0657
0672 0673
0688 0689
0643
0659
2CO
200
2EO
2FO
lAO
IBO
lCO
100
lEO
0580 0581
0596 0597
" 0612 0613
0628 0629
0583
0599
9615
0631
06-45 0646 0647
0662 01>63
0677 0678 0679
0691
0644
0660
0676
0692
0693
069..
0695
0704
0720
0736
0752
0705 0706 0707
0721 0722 0723
0737 0738 0739
0753 0754 0755
0708
0724
0740
0756
0709
0725
0741
0757
0710
0126
0742
0758
0711
0727
300
310
320
330
0768
0784
0800
0816
0769
0785
0801
0817
0770
0786
0802
0818
0771
0787
0803
0819
0772
0788
0804
0820
0773
0789
0805
0821
0774
0790
0806
0822
0775
0791
340
350
360
370
0832
0848
0864
0880
0833
0849
0865
0881
0834
0850
0866
0882
0835
0851
0867
0883
0836
0852
0868
0884
0837
0B53
0869
0885
380
0896
0912
0928
0944
0897
0913
0929
0945
0898
0914
0930
0946
0899
0915
0931
0947
0900
0916
0932
0948
0901
0917
0933
0949
0642
0658
0674
0690
0675
8
0
E
F
0268
0284
0300
0316
0269
0285
0301
0317
0270
0286
0302
0318
0271
0287
0303
0319
0331
0347
0363
0379
0332
0348
0364
0380
0333
0349
0365
0381
0334
0350
0366
0382
0335
0351
0367
0383
0395
0427
0443
0396
0412
0428
0444
0397
0413
0429
0445
0398
0414
0430
0440
0399
0415
0431
0447
0458
0474
0490
0506
0459
0475
0491
0507
0460 0461 0462 0463
0476 0477 0478 0479
0491 ()493 0494 0495
0508 0509 0510 0511
0522
0538
0554
0570
0523
0539
0555
0571
0524
0540
0556
0572
0584 0585 0586
0600 0601 0602
~16
0617 0618
0632 0633 0634
. 0587
0265 0266 0267
0281 0282 0283
0297 0298 0299
0313 0314 0315
0327
0471
0487
0503
A
C
9
0411
0603
0619
0635
0648
0664
0680
0696
0649 0650 0651
0665 0666 0667
0681 0682 0683
0697 0698 0699
0712
0728
0744
0760
Oll3
0729
0745
0761
0714
0730
0746
0762
0823
0776
0792
0808
0824
0777
0793
0809
0825
0838
0854
0870
0886
0839
0B55
0871
0887
0640
0856
0872
0888
0902
0918
0934
0950
0903
0919
0935
0951
0904
0920
0936
0952
0661
0/43
0759
0807
0525
0541
0557
0573
0526
0542
0558
0574
0527
0543
0559
0575
0588 0589 0590 0591
0604 0605 0606 0607
0620 0621 0622 0623
Q6JO 0637 0638 0639
0654
0670
0685 0686
0701 0702
0655
0671
0687
0703
0715 ' 0716
0731
0732
0747 ," 0748
0764
0763
0717
0733
0749
0765
0719
0735
0751
0767
0778
0794
0810
0826
0779
0795
0811
0827
0780
0796
0812
0828
0781
0797
0813
0829
0841
OBS7
0873
0889
0842
OSS8
0874
0890
0843
0859
0875
0891
0844 0845 OW> 0847
0860 086\ 0862 0863
0876 0877 0878 0879
0892 0893 0894 0895
0905
0921
0937
0953
0906
0922
0938
0954
0907
0923
0939
0955
0908
0924
0940
0956
0652
0668
0684
0700
0653
0669
...
~
0718
0734
0750
0766
..
0782 0783
0798 0799
0814 0815
0830 0831
j
390
3AO
3BO
3CO
JOO
JEO
JFO
0960 0961
0976 0977
0992 0993
l00S 1009
0962 0963
0978 0979
0994 0995
1010 1011
0964 0965 0966 0967
0980 0981 0982 0903
0996 0997 0998 0999
lOl2 1()13 1014 1015
D-6
0968 0969 0970 0971
09&4 0985 0986 0987
1000 fOOl 1002 1003
1016 1017 lOIS lO19
0909
0925
0941
0957
0910
0926
0942
0958
091 I
0927
0943
0959
0972 0973 0974 0975
0988 0989 0990 0991
1004 1005 1006 t007
1020 102l t022 )023
HEXADEClMAL- DECIMAL INTEGER CONVERSION (Cont.)
0
1
2
400
410
420
430
1024
1040
1056
1072
1025
1041
1057
1073
1026
1042
105B
1074
440
450
460
470
1088
1104
1120
1136
1089
1105
1121
1137
1090
1106
1122
1138
C
0
E
F
1032 1033 1034 1035
1048 1049 1050 1051
1064 1065 1066 1067
1080 1081 1082 1083
1036
1052
I06B
1084
1037
1053
1069
1085
1038
1054
1070
1086
1039
1055
1071
1087
1095
1111
1127
1143
1096
1112
112B
1144
1099
1115
1131
1147
1100
1116
·1132
1148
. 1101
1117
1133
\149
1102
1118
1134
1150
1103
1119
1135
1151
1159
1175
1191
1207
1160 1161
1176 1177
1192 1193.
1208 1209
1163
1179
1195
1211
1164
1180
1196
1212
1165 1166
1181 1182
1197 1198
1213 1214
1167
1183
1199
1215
1223
1239
1255
1271
1224
1240
1256
1272
1225
1241
1257
1273
1226 1227
1242 1243
1258 1259
1274 1275
1228
1244
1260
1276
1229
1245
1261
1277
1230
1246
1262
1278
1231
1247
1263
1279
1285 12M 1287
1301 1302 1303
1317 1318 1319
1333 1334 1335
1288
1304
1320
1336
1289
1305
1321
1337
1290
1306
1322
1338
1291
1307
1323
1339
1292
. 1308
" 1324
1340
1293
1309
1325
1341
1294
1310
1326
1342
1295
1311
1327
1343
1354 1355
1370 1371
1386 1387
1402 1403
1356
1372
1388
1404
1357
1373
1389
1405
1358
1374
1390
1406
1359
1375
1391
1407
3
4
5
6
7
1027
1059
1075
1028
1044
1060
1076
1029
1045
1061
1077
1030
1046
1062
1078
1031
1047
1063
1079
1091
1107
1123
"39
1092
1108
1124
1140
1093
1109
1125
1141
1094
1110
1126
1142
1043
480
490
4AO
4BO
1152
1168
1184
1200
1153
1169
1185
1201
1154 1155
1170 1171
1186 1187
1202 1203
1156 1157
1172 1173
1188 1189
1204 1205
1158
1174
1190
1206
ACO
400
4EO
4fO
1216
1232
1248
1264
1217
1233
1249
1265
1218
1234
1250
1266
·1219
1235
1251
1267
1220 1221
1236 1237
1252 1253
1268 1269
1222
1238
1254
1270
500
510
520
530
1280
1296
1312
1328
1281
1297
1313
1329
1282
1298
\314
1330
1283
1299
1315
1331
128-i
1300
1316
1332
. •5.:4~
550.
560
570
\344
1360
1376
1392
1345
1361
1377
1393
1346
1362
1378
1394
1347
1363
1379
1395
1348 1349
1364 1365
1380 1381
1396 1397
580
590
SAO
580
1408
1424
1440
1456
1409
1425
1441
1457
1410
1426
1442
1.-i5S
1411
1427
1443
5CO
5DO
5EO
5FO
1472
1488
1504
1520
1473
1489
1505
1521
600
610
620
630
1536
1552
1568
1584
640
650
660
670
8
9
\
1097
1113
1129
1145
1350
1366
1382
1398
1351
1367
1383
1399
1352
1368
1364
1400
1353
1369
1385
1401
1459
1412
1428
1444
1460I,'
1413 1414
1429 1430
1445 1446
1461 1462
1415
1431
1447
1463
1416
1432
1448
1464
1417
1433
1449
1465
1474
1490
1506
1522
1475
1491
1507
1523
1476
1492
1508
1524
1477
1493
1509
1525
1478
1494
1510
1526
1479
1495
1511
1527
1537
1553
1569
1585
153B
1554
1570
1586
1539
1555
15it
1581
1540
15511
1572
1588
1541
1557
1573
1589
1542
1558
1574
1590
1600
16\6
1632
1648
1601
1617
1633
1649
1602
16J8
1634
1650
1603
1619
1635
1651
1604
1605
1620 1621
1636 1637
1652 1653
680
690
6AO
680
1664
1680
1696
1712
1665
1681
1697
1713
1666
1682
1698
1714
1667
1683
1699
1715
6(0
6DO
6EO
6FO
1728
1744
1760
1776
1729
1745
1761
1777
1730 1731
1746 1747
1762 1763
1778 1779
A
1098
1114
1130
1146.
1162
1178
,1194
1210
8
·1418
1434
1450
1466
1419
1435
1451
1467·
1420
1436
1452
1468
1421
1437
1453
1469
1422
1438
1454
. 1470
1423
1439
1455
1471
1480
14Bl 1482
1496 1497 1498
1512 1513 1514
1528 1529 1530
1483
1499
1515
1531
·1484
1500
1516
1532
1485
1501
.1517
1533
1486
1502
1518
1534
1487
1503
1519
1535
1543
1559
1575
1591
1544
1560
1576
1592
1545 1546 1547
1561 1562 1563
1577 1578 1579
1593 1594 1595
1548
1564
1580
1596
1549
1565
1581
1597
1550 1551
1566 1567
1582 1583
1598 1599
1606
1622
1638
1654
1607
1623
1639
1655
160B
1624
1640
1656·
1609
1625
1641
1657
1610
1626
1642
1658
1611
1627
1643
1659
1612
1628
1644
1660
1613
1629
1645
1661
1614
1630
1646
1662
1615
1631
1647
1663
1668 1669 1670
1684 1685 1686
1700 1701 1702
1716 1717 1718
1671
1687
1703
1719
1672
1688
1704
1720
1673
1689
1705
1721
1674 1675
1690 1691
1706 1707
1722 1723
1676 1677
1692 1693
1708 1709
1724 1725
1678
1694
1710
1726
1679
1695
1711
1727
1734
1750
1766
1782
1735
1751
1767
1783
1736
1752
1768
1784
1737
1753
1769
1785
1738
1754
1770
1786
1741
1757
1773
1789
1742
1758
1774
1790
1743
1759
1775
1791
1732
1748
1764
1780
1733
1749
1765
1781
':'
D-7
1739
1755
1771
1787
1740
1756
1772
1788
HEXADECIMAL-DECIMAL INTEGER CONVERSION (Cont.)
0
1
2
3
4
1794
1810
1826
1842
1795
1811
1827
1843
1796
1812
1828
1844
5
7
8
9
1799
1815
1831
1847
1800
1816
1832
1848
1801
1817
1833
1849
1862 1863
1878 1879
1894 1895
1910 ·1911
1864
1880
1896
1912
1865
1881
1897
1913
1926
1942
1958
1974
1928
1944
1960
1976
6
1797
1798
1814
1829 1830
1845 1846
A
B
C
0
E
F
1802 1803
1818 1819
1834 1835
1850 1851
1804
1820
1836
1852
1805
1821
1837
1853
1806
1822
1838
1854
1807
1823
1839
1855
1866
1882
1898
1914
1867
1883
1899
1915
1868
1884
1900
1916
1869
1885
1901
1917
1870
1886
1902
1918
1871
1887
1903
1919
1929 1930
1945 1946
1961 1962
1977 1978
1931
1947
1963
1979
1932
1948
1964
1980
1933
1949
1965
1981
1934
1950
1966
1982
1935
1951
1967
1983
700
710
720
730
1792 1793
1808 1809
1824 1825
1840 1841
740
750
760
770
1856 1857 1858 1859
1872 1873 1874 1875
1888 1889 1890 1891
1904 1905 1906 1907
1860 1861
1876 1877
1892 1893
1908 1909
780
790
7AO
7BO
1920
1936
1952
1968
1921 1922
1937 1938
1953 1954
1969 1970
1923
1939
1955
1971
1924
1940
1956
1972
7CO
700
7EO
7FO
1984 1985 1986
2000 2001 2002
2016 2017 2018
2032 2033 2034
1987
2003
2019
2035
1988 1989 1990 1991
2004 2005 2006 2007
2020 2021 2022 2023
2036 2037 2038 2039
1992 1993 1994 1995
2008 2009 2010 2011
2024 2025 2026 2027
2040 2041 2042 2043
1996 1997 1998 1999
2012 2013 2014 2015
2028 2029 2030 2031
2044 2045 2046 2047
800
810
820
830
2048
2064
2080
2096
2049
2065
2081
2097
2050
2066
2082
2098
2051
2067
2083
2099
2052 2053
2068 2069
2084 2085
2100 2101
2060
2076
2092
2108
840
850
860
870
2112
2128
2144
2160.
2113
2129
2145
2161
2114 2115
2130 2131
2146 2147
2162 2163
880
890
8AO
880
2176
2192
2208
2224
2177
2193
2209
2225
2178
2194
2210
2226
aco
8FO
2240 2241
2256 2257
2272 2273
2288 2289
900
910
920
930
2304
2320
2336
2352
2305
940
950
960
970
2368
2384
2400
2416
2369
2385
2401
2417
980
800
BEO
2179
2195
2211
2227
2242 2243
2258 2259
2274 2275
2290 2291
1813
1925
1941
1957
1973
1927
1943
1959
1975
2054
2070
2086
2102
2055
2071
2087
2103
2056
2072
2088
2104
2057
2073
2089
2105
2058
2074
2090
2106
2116 2117 2118
2132 2133 2134
2148 2149 2150
2164 2165 2166
2119
2135
2151
2167
2120
2136
2152
2168
2121
2137
2153
2169
2122 2123
2138 2139
2154 2155
2170 2171
2180 2181
2196 2197
2212 2213
2228 2229
2182 2183
2198 2199
2214 2215
2230 2231
2245 2246 2247
2260 2261 2262 2263
2276 2277 2278 2279
2292 2293 2294 2295
2244
2059
2075
2091
2107
2061 2062 2063
2077 2078 2079
2093 2094 2095
2109 2110 2111
2124 2125
2140 2141
2156 2157
2172 2173
2126
2142
2158
2174
2127
2143
2159
2175
2184 2185 .2186 2187
2200 2201 2202 2203
2216 2217 2218 2219
2232 2233 2234 2235
2188 2189 2190
2204 2205 2206
2220 2221 2222
2236 2237 2238
2191
2207
2223
2239
2248
2253 2254
2269 2270
2285 2286
2301 2302
2255
2271
2287
2303
2249
2265
2280 2281
2296 2297
2250
2266
2282
2298
2251
2267
2283
2299
2252
2268
2284
2300
2264
2339
2355
2308 2109 2310
2324 2325 2326
2340 2341 2342
2356 2357 2358
2311
2327
2343
2359
2312 2313
2328 2329
23M 2345
2360 2361
2314
2330
2346
2362
2315
2331
2347
2363
2316 2317
2332 2333
2348 2349
2364 2365
2318 2319
2334 2335
2350 2351
2366 2367
2370
2386
2402
2418
2371
2387
2403
2419
2372
2388
2404
2420
2373
2389
2405
2421
2374
2390
2406
2422
2375
2391
2407
2423
2376 2377 2378
2392 2393 2394
2408 2409 2410
2424 2425 2426
2379
2395
2411
2427
2380 2381
2396 2397
2412 2413
2428 2429
2382
2398
2414
2430
9AO
980
2432
2448
2464
2480
2433 243.~
2449 2450
2465 2466
2481 2482
2435
2451
2467
2483
2436 2437
2452 2453
2468 2469
2484 2485
2438
2454
2470
2486
2439
2455
2471
2487
2440
2456
2472
2488
24-4·3
2459
2475
2491
2444 2445 2446 2447
2460 2461 2462 2463
2476 2477 2478 2479
2492 2493 2494 2495
9(0
900
9EO
9FO
2496
2512
2528
2544
2497
2513
2529
2545
2499
2515
2531
2547
2500 2501
2516 2517
2532 2533
2548 2549
2502 2503
2518 2519
2534 2535
2550 2551
2504
2508
2520
2524
990
2306
2321 2322
2337 2338
2353 2354
2498
2514
2530
2546
2307
2323
2441
2457
2473
2489
2442
2458
2474
2490
2505 2506 2507
2521 2522 2523
2536 2537 2538 2539
2552 2553 2554 2555
""~WII
D-8
2383
2399
2415
2431
2509 2510 7511
2525 2516 2527
2540 2541 2542 2543
2556 2557 2558 2559
d!I.-!.\lf'~"
all:
illj~.,~~
HEXADECIMAL-DECIMAL INTEGER CONVERSION (Cont.)
.
0
,
2
3
4
5
6
7
8
9
A
B
._ C
0
AOO
Al0
A20
A30
2560'
2576
2592
2608
2561
2577
2593
2609
2562
2578
2594
2610
2563
2579
2595
2611
256"4
2580
2596
2612
256.S
2581
2597
2613
2566
2582
2598
2614
2567
2583
2599
2615
2568
2584
2600
2616
2569
2585
2601
2617
2570
2586
2602
2618
2571
2587
2603
2619
2572
2588
2604
: 2620
2573
2589
2605
2621
A40
A50
A60
A70
2624
2625
2640
2641
2628
2644
2660
2676
2629
2645
2661
2677
2630
2646
2662
2678
2631
2647
2663
2679
A80
A90
AAO
ABO.
2688 2689
2704 2705
2720 2721
2736 2737
2690
2706
2722
2738
2691
2707
2723
2739
2692
2708
2724
2740
2693
2709
2725
2741
2694
2710
2726
2742
2695
2711
2727
2743
ACO
ADO
AEO
AFO
2752 2753
2768 2769
2784 2785
2800 2801
2754
2770
2796
2802
2755
277i
2787
2803
2756
2772
2788
2804
2757
2773
2789
2805
2758
2774
2790
2806
2759
2775
2791
2007
BOO
BIO
B30
2816 2817 2818 2819
2832 2833 2834 2835
2848 2849 2850 2851
2864 2865 2866 2867
2820
2836
2852
2868
2821
2837
2853
2869
2822
2838
2854
2870
2823
2839
2855
2871
B40
B50
860
870
2880
?896
2912
2928
2881
2897
2913
2929
2884
2900
2916
2932
2885 2886 2e87
2901 2902 2903
2917 2918 2919
2933 2934 2935
B80
890
BAO
BBO
2944
2960
2976
2992
2945 2946 2947
2961 2962 2963
2977 2978 2979
2993 2994 2995
2948 2949 2950
2964 2965 2966
2980 2981 2982
2996 2997 2998
BCO
3009
3025
3041
3057
B20
2626 2627
2642 2643
2656 2657 2658 2659
2672 2673 2674 2675
i
'
E
r-
2574 2575
2590 2591
2606 2607
2622 2623
2632 2633
2649
2664 2665
2680 2681
2634 2635
2650 2651
2666 2667
2682 2683
2636 2637 2638
2652 2653 2654
2668 2669 2670
2684 2685 2686
2639
2655
2671
2687
2696
2712
2728
2744
2698
2714
2730
2746
2700
2716
2732
2748
2702
2718
2734
2750
2703
2719
2735
2751
2648
2697
2713
2729
2745
2699
2715
2731
2747
2760 2761 2762 2763
2777 2778 2779
2792 2793 2794 2795
2808 2809 2810 2811
2776
2824 2825
2840 2841
2856 2857
~872 2873
2701
2717
. 2733
2749
2766 2767
2782 2783
2798 2799
2764 2765
- 2780 2781
2796 2797
. 2812 2813
2814
281S
2826
2842
2858
2874
2827
2843
2859
2875
2828
2844
2960
2876
2829
2845
2861
·2877
2930
2846
2862
2878
2831
2847
2863
2879
2891
2907
2923 . .
2939
2892
2908
2924
2940
2893
2909
2925
2941
2894
2910
2926
2942
2895
2911
2927
2943
\
2882 2883
2898 2899
2914 2915
2930 2931
2888
2904
2920
2936
2889
2905
2921
2937
2890
2906
2922
2938
299.9
2952
2968
2984
3000
2953
2969
2985
3001
295" 2955
2970 2971
29U 2987
3002 3003
2951
2967
2983
·2956 2957
2972 2973
2988 2989
3004 3005
2958 2959
2974 2975
2990 2991
3006 3007
BEO
BfO
3008
3024
3040
3056
3010
3026
3042
3058
301t
3027
3043
3059
3012 3013
30'~8 3029
3044 3045
3060 3061
3014
3030
3046
3062
3015
3031
3047
3063
3016
3032
3048
3064
3017 3018 3019
3033 3034 3035
3049 3050 3051
3065 3~6 3067
3020
3036
3052
3068
3021
3037
3053
3069
3022
3038
3054
3070
3023
3039
3055
3071
COO
C10
C20
C30
3072 3073 3074
J088 3089 3090
3104 3105 3106
3120 3121 3122
3075
3091
3107
3123
3076
3092
3108
3124
3077
3093
3109
3125
3078
3094'
3110
3126
3079
3095
3 I t1
3127
3080
3096
3112
3128
3081
3097
3113
3129
3082
3098
31U
3130
30B3
3099
3115
3131
3084
3100
3116
3132'
3065
3101
3117
3133
3086
3102
3118
3134
3087
3103
3119
3135
C40
C50
C60
C70
3136
3152
3168
3184
3137
3153
3169
3185
3138
3154
3170
3186
3139
3155
3171
3187
3140
3156
3172
3188
3141
3157
3173
3189
3142
3158
3174
3190
3143
3159
3175
3191.
3144
3160
3176
3192
3145
316i
3177
3193
3146
3162
3178
3194
3147
3163
3179
3195
3148
3164
3180
3196
3149
3165
318-1
3197
3150
3166
3182
3198
3151
3167
3183
3199
C80
C90
CAO
3200
3216
3232
3248
3201
3217
3233
3249
~ 3202
3203
3218 3219
3234 3235
3250 3251
3204
3220
3236
3252
3205
3221
3237
3253
3206
3222
3238
3254
3207
3223
3239
·3255
3208
3224
3240
3256
3209
3225
3241
3257
3210
3226
3242
3258
3211
3227
3243
3259
3212
3228
3244
3260
3213
3229
3245
3261
3214
3230
3246
3262
3215
3231
3247
3263
3264 3265
3280 3281
3296 3797
3312 3313
3266
3282
3298
3314
3267
3283
3299
3315
3268
3284
3300
33;6
3269
3285
3301
3317
3270
3286
3302
3318
!2;1
3287
3303
3319
3272
3288
3304
3320
3273 3274 3275
3289 3290 3291
3305 3306 3307
3321 3322 3323
3276
3292
3308
3324
3277 3278
3293 3294
3309 3310
3325 3326
3279
3295
331 I
3327
BOO
ceo
ceo
COO
CEO
efO
D-9
HEXADECIMAL-DECIMAL INTEGER CONVERSION (Cont.)
000
010
020
030
040
050
060
070
080
090
DAQ
080
oeD
DDO
DEO
DFO
EOO
0
I
2
3
..
5
6
7
8
"9.
A
8
C
0
3328
3344
3360
3376
3329
3345
3361
3377
3330
3346
3362
3378
3331
3347
3363
3379
3332
3348
3364
3380
3333
3349
3365
3381
3334
3350
3366
3382
3335
3351
3367
3383
3336
3352
3368
3384
3337
3353
3369
3385
3338
3354
3370
3386
3339
3355
3371
3387
3340
3356
3372
3388
3341
.3357
3373
33B9
3392 3393
3409
3424 3425
3440 3441
3394
3410
3426
3442
3395
3411
3427
3443
3396
3412
3423
3444
3397
3413
3429
3445
3398
3414
3430
3446
3399
3415
3·Ut
3447
3400 3401
3416 3417
3432 3~33
3448 3449
3402
3418
3434
3450
3403
3419
3451
3404
3420
3436
3452
3405 3406 3407
3421 3422 3423
3437 3438 3439
3453 3454 3455
3456 3457 3458 3459
3472 3473 3474 3475
3488 3489 3490 3491
3504 3505 3506 3507
3460
3476
3492
3508
3461
3477
3493
3509
3462 3463
3478 3479
3494 3495
3510 3511
3464
3480
3496
3512
3465 3466 3467
3481 3482 3483
3497 3498 3499
3513 3514 35.15
3468
3484
3500
3516
3469
3485
3501
3517
3470
3486
3502
3518
3471
3487
3503
3519
3520 3521
3536 3537
3552 3553
3568 3569
3524
3540
3556
3572
3525
3541
3557
3573
3526 3527
3542 3543
3558 3559
3574 3575
352'8
3544
3560
3576
3529
3545
3561
3577
"3530
3546
3562
3578
3531
3547
3563
3579
3532
3548
3564
3580
3533
3549
3565
3581
3534
3550
3566
3582
3535
3551
3567
3583
3588
3604
3620
3636
3589 3590 3591
3605 ~606 3607
3621 3622 3623
3637 3638 3639
3592
3608
3624
3640
3593
3609
3625
3641
3594
361-0
3626
3642
3595
3611
3627
3643
3596
3612
3628
3644
3597
3613
3629
3645
3598
3614
3630
3646
3599
3615
3631
3647
3652
3668
3684
3700
3653 3654 3655
3669 3670 3671
3685 3686 3687
3701 3702 3703
3656
3672
3688
3704
3657
3673
3689
3705
3658
3674
3690
3706
3659
3675
3691 .
3707
3660
3676
3692
3708
3661
3677
3693
3709
3662
3678
3694
3710
3663
3679
3695
3717
3733
3749
3765
3718
3734
3750
3766
3719
3735
3751
3767
3720
3736
3752
3768
3721
3737
3753
3769
3722 3723
3738 3739
3754 3755
3770 3771
3782
3798
3814
3830
3~08
3522
3538
3554
3570
3523
-.3539
3555
3571
3585 3586 3587.
3601 3602 3603
3617 3618 3619
3633 3634 3635
3435
E
3342
3358
3374
3390
F
3343
3359
3375
3391
E30
3584
3600
3616
3632
E40
E50
E60
f70
3649 3650 3651
3665 3666 3667
3680 3681 3682 3683
3696 3697 3698 3699
E80
E90
3712 3713
3728 3729
3744 3745
3760 3761
3714
3730
3746
3762
3715
3731
3747
3763
3716
3732
3748
3764
3777
3793
3809
3825
3778
3794
3810
3826
3779
3795
3811
3827
3780
3796
3812
3828
3781
3797
3813
3B29
3783
3799
3815
3831
3784
3800
3816
3832
3785
3801
3817
3833
3786
3802
3818
3834
3787
3803
3819
3835
3788
3804
3820
3836
3789
3805
3821
3837
3790
3806
3822
3838
3791
3807
3823
3839
3840 3841
3856 3857
3872 3873
3888 3889
3842
3858
3874
3890
J843
3859
3875
3891
3844
3860
3876
3892
3845 3846 3847
3861 3862 3863
3877 3878 3879
3893 3894 3895
3848
3864
3880
3896
3849
3865
3881
3897
3850
3866
3882
3898
3851
3867
3883
3899
3852
3868
3884
3900
3853 3854
3869 3870
3885 3886
3901 3902
3855
3871
3887
3903
F40
F50
F60
F70
3904
3906 3907
3922 3923
3938 3939
3954 3955
3908
3924
3940
3956
3909
3975
3941
3957
3912
3928
3944
3960
3913
3929
3945
3961
3914 3915
3930 3931
3946 3947
3962 3963
3918
3934
3919
F80
F90
FAD
Fao
3968 3969 3970
3984 3985 3986
4000 4001 4002
4016 4017 40 18
3972
3988
4004
4020
3973
3989
4005
4021
Feo
FOO
FEO
4032 4033 4034 4035
4048 4049 4050 4051
406.4 4())5 4066 4067
4080 ~al 4082 4083
E10
no
EAO
£80
ECO
EDO
HO
EFO
FOO
FlO
F20
F30
HO
3648
3664
3776
3792
3808
3824
3905
3921
3936 3937
3952 3953
3920
3971
3987
4003
4019
3910 3911
3927
3942 3943
3958 3959
3926
-3974
3990
4006
4022
3'975
3991
4007
4023
4036 4037 403B 4039
4052 4053 4054 ,(055
4068 4(A) 9 4070 4071
4()8.4 4085 4086 4087
3976 3977 3978 3979
3992 3993 3994 3995
4D08 4009 4010 4011
4024 4025 4026 4027
4040 4041 4042
4056 4057 4058
4072 ~073 4074
40B8 4089 4090
D-IO
404,3
4059
.4075
<4091
3711
3724 3725 3726 3727
3740 3741 3742 3743
3756 3757 3758 3759
3772 3773 3774 3775
3916 3917
3932 3933
3948 3949
3964 3965
3980
3996
4012
4028
3981
3997
4013
4029
4044 4045
4060 4061
4076 4077
40Vi 4093
3935
3950 3951
3966 3967
3982
3998
4014
4030
3983
3999
4015
4031
404<1 ~047
4062 4063
4076 4079
4094 .t095
inter
West: 17291 Irvine Blvd., Suite 262/(714)838-1126, TWX: 910-595-1114/Tustin, California 92680
Mid-America: 800 Southgate Office Plaza/501 West 78th St./(612)835-6722, TWX: 910-576-2867/Bloomington, Mi"nnesota 55437
Northeast: 2 Militia Drive, Suite 4/(617)861-1136, Telex: 92-3493/Lexington, Massachusetts 02173
Mid-Atlantic: 21 Bala Avenue/(215)664-6636/Bala Cynwyd, Pennsylvania 19004
Europe: Intel OfficelVester Farimagsgade 7/45·1-11 5644, Telex: 19567/DK 1606 Copenhagen V
Orient: Intel Japan Corp.lHan·Ei 2nd Building/1-1, Shinjuku, Shinjuku-Ku/03-354-8251, Telex: 781-28426/Tokyo 160
© 1973/Printed in U.S.A./MCS-030-1273-150
Source Exif Data:
File Type : PDF File Type Extension : pdf MIME Type : application/pdf PDF Version : 1.3 Linearized : No XMP Toolkit : Adobe XMP Core 4.2.1-c043 52.372728, 2009/01/18-15:56:37 Create Date : 2010:11:15 14:47:47-08:00 Modify Date : 2010:11:15 17:27:51-07:00 Metadata Date : 2010:11:15 17:27:51-07:00 Producer : Adobe Acrobat 9.4 Paper Capture Plug-in Format : application/pdf Document ID : uuid:fcf08d1d-1650-4959-bc1a-0c6c6b7610e7 Instance ID : uuid:19f5e6d5-1cc8-4981-b48e-c7327243638b Page Layout : SinglePage Page Mode : UseOutlines Page Count : 149EXIF Metadata provided by EXIF.tools