(I'll add the rest later) |
(→Listing) |
||
Line 90: | Line 90: | ||
{{inst|cols=4|section=<span id="io">'''Input/Output Instructions'''</span>}} | {{inst|cols=4|section=<span id="io">'''Input/Output Instructions'''</span>}} | ||
+ | {{inst|mn=INP |col 1=IN |op={{bin|01 00M MM1}} |act=A = PORT[MMM]}} | ||
+ | {{inst|mn=OUT |col 1=OUT |op={{bin|01 RRM MM1}} |act=PORT[RRMMM] = A ({{l|neq|RR|00}})}} | ||
+ | |||
{{inst|cols=4|section=<span id="machine">'''Machine Instructions'''</span>}} | {{inst|cols=4|section=<span id="machine">'''Machine Instructions'''</span>}} | ||
+ | {{inst|mn=HLT |col 1=HLT |op={{bin|00 000 00{{X}}}} |act=Enter STOPPED state; remain there until interupted}} | ||
+ | {{inst|mn=HLT |col 1=HLT |op={{bin|11 111 111}} |act=Enter STOPPED state; remain there until interupted}} | ||
}} | }} | ||
Revision as of 03:03, 26 March 2016
8008 ISA | |
Developer | Intel Datapoint Corporation |
Implementation | 8008 |
Dev model | proprietary |
Design | Von Neumann architecture |
Data word size | 8 bit 1 octets
2 nibbles |
Instruction word size | 8 bit 1 octets
|
Instructions | 48 |
Introduction | 1972 |
Version | 1 |
Format | register-register |
Endianness | bi-endian |
Registers | 0 |
GPRs | 7 (scratchpad) |
ISAs • By Company • By Inst • By Data |
The 8008 ISA (or MCS-8 ISA) was an instruction set architecture introduced by Intel in 1972 and was used in the 8008 and 8008-1 microprocessors.
This ISA has an 8-bit data and address bus. This architecture included seven 8-bit registers, 48 instructions, and interrupt capability.
Contents
Registers
The 8008 had seven scratchpad registers. A few of them had additional capabilities - A is used an an accumulator register. Registers H & L are high-order and low-order words of a 14-bit address.
Register | Size | Purpose |
---|---|---|
A | 8 bit | Accumulator |
B | 8 bit | GP |
C | 8 bit | GP |
D | 8 bit | GP |
E | 8 bit | GP |
H | 8 bit | High-order word |
L | 8 bit | Low-order word |
ISA
Data on the 8008 is always stored in an 8-bit binary integer.
- Data WordD7 D6 D5 D4 D3 D2 D1 D0
Instructions can be made of 1-3 bytes depending on operation. Multi-byte instructions must be stored in successive order in memory. Typical operations involving register-register operations such as arithmetic and logic operations only require one byte and take the following form:
- 1-Byte InstD7 D6 D5 D4 D3 D2 D1 D0OPCode
Instructions that involve an immediate value have 2 bytes. The first bite stores the opcode and the second byte stores the 8-bit value.
- 2-Byte InstD7 D6 D5 D4 D3 D2 D1 D0D7 D6 D5 D4 D3 D2 D1 D0OPCodeImm Value
Instructions involving an address (such as CALL and JUMP) require a 14-bit address. This is done via a 3-byte instruction where the first byte is the opcode, the second byte is the low-order word, and the third byte is the high-order word. Note that the 2 MSBs on the high-order word are don't cares.
Listing
The 8008 ISA has 48 instructions broken a number of groups:
- Index Register Instructions
- Accumulator Group Instructions
- Program Counter and Stack Control Instructions
- Input/Output Instructions
- Machine Instructions
In 1972, Intel introduce their first set of mnemonics for their instructions. This original set consists of three characters which meant it could easily be encoded into a lookup table. A few years later, when they released their 8080 and its instruction set, they also revamped the 8008 mnemonics to match the 8080's ones more closely. The newer mnemonics resemble a primitive version of modern x86 mnemonics. Since 8008 programs can be found using bother mnemonics, both the "old" and the "new" mnemonics are listed below. Both mnemonics results in identical binary values.
8008 ISA | |||
---|---|---|---|
Mnemonic (old) | |||
Index Register Instructions Load instructions do not affect any flag. The Inc and Dec instructions affect all flags except carry. | |||
LRdRs | MOV Rd, Rs | 11 DDD SSS2 | Rd = Rs |
LRdM | MOV Rd, M | 11 DDD 1112 | Rd = Mem |
LMRs | MOV Rs, M | 11 111 SSS2 | Mem = Rs |
LRdI | MVI Rd, Imm | 00 DDD 1102 BB BBB BBB2 | Rd = B7...B0 |
LMI | MVI M, Imm | 00 111 1102 BB BBB BBB2 | Mem = B7...B0 |
INRd | INR Rd | 00 DDD 0002 | Rd = Rd + 1 (Rd ≠ A) |
DCRd | DCR Rd | 00 DDD 0012 | Rd = Rd - 1 (Rd ≠ A) |
Accumulator Group Instructions The result of an ALU instruction affect all flags. The rotation instructions only affect the carry flag. | |||
Program Counter and Stack Control Instructions | |||
Input/Output Instructions | |||
INP | IN | 01 00M MM12 | A = PORT[MMM] |
OUT | OUT | 01 RRM MM12 | PORT[RRMMM] = A (RR ≠ 00) |
Machine Instructions | |||
HLT | HLT | 00 000 00X2 | Enter STOPPED state; remain there until interupted |
HLT | HLT | 11 111 1112 | Enter STOPPED state; remain there until interupted |
See also
designer | Intel + and Datapoint Corporation + |
first launched | 1972 + |
full page name | intel/mcs-8/isa + |
implementation | 8008 - Intel + |
instance of | instruction set architecture + |
instruction count | 48 + |
instruction word size | 8 bit (1 octets) + |
name | 8008 + |
word size | 8 bit (1 octets, 2 nibbles) + |