From WikiChip
Editing intel/mcs-8/isa

Warning: You are not logged in. Your IP address will be publicly visible if you make any edits. If you log in or create an account, your edits will be attributed to your username, along with other benefits.

The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then save the changes below to finish undoing the edit.

This page supports semantic in-text annotations (e.g. "[[Is specified as::World Heritage Site]]") to build structured and queryable content provided by Semantic MediaWiki. For a comprehensive description on how to use annotations or the #ask parser function, please have a look at the getting started, in-text annotation, or inline queries help pages.

Latest revision Your text
Line 5: Line 5:
 
| developer 2    = Datapoint Corporation
 
| developer 2    = Datapoint Corporation
 
| implementation = 8008
 
| implementation = 8008
| dev model      = Proprietary
+
| dev model      = proprietary
| design        = Von Neumann
+
| design        = Von Neumann architecture
 
| data size      = 8 bit
 
| data size      = 8 bit
 
| inst size      = 8 bit
 
| inst size      = 8 bit
Line 12: Line 12:
 
| introduction  = 1972
 
| introduction  = 1972
 
| version        = 1
 
| version        = 1
| format        = Register-Memory
+
| format        = register-register
| endianness    = Bi-endian
+
| endianness    = bi-endian
 
| registers      = 7
 
| registers      = 7
 
| gprs          = 7
 
| gprs          = 7
Line 68: Line 68:
 
* [[#machine|Machine Instructions]]
 
* [[#machine|Machine Instructions]]
  
In 1972, Intel introduced 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 {{intel|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.
+
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 {{intel|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.
  
 
{{isa
 
{{isa
 
| title    = 8008 ISA
 
| title    = 8008 ISA
 
| mn title = Mnemonic (old)
 
| mn title = Mnemonic (old)
| Mnemonic (new)
+
| col 1    = Mnemonic (new)
| Len
+
| col 2    = Len
| Opcode
 
| Action
 
| cols = 5
 
 
| listing  =
 
| listing  =
  
Line 83: Line 80:
 
{{inst|mn=LR<sub>d</sub>R<sub>s</sub>  |col 1=MOV R<sub>d</sub>, R<sub>s</sub> |col 2=1 |op={{bin|11 DDD SSS}} |act=R<sub>d</sub> = R<sub>s</sub>}}
 
{{inst|mn=LR<sub>d</sub>R<sub>s</sub>  |col 1=MOV R<sub>d</sub>, R<sub>s</sub> |col 2=1 |op={{bin|11 DDD SSS}} |act=R<sub>d</sub> = R<sub>s</sub>}}
 
{{inst|mn=LR<sub>d</sub>M  |col 1=MOV R<sub>d</sub>, M  |col 2=1 |op={{bin|11 DDD 111}} |act=R<sub>d</sub> = Mem}}
 
{{inst|mn=LR<sub>d</sub>M  |col 1=MOV R<sub>d</sub>, M  |col 2=1 |op={{bin|11 DDD 111}} |act=R<sub>d</sub> = Mem}}
{{inst|mn=LMR<sub>s</sub>  |col 1=MOV M, R<sub>s</sub>  |col 2=1 |op={{bin|11 111 SSS}} |act=Mem = R<sub>s</sub>}}
+
{{inst|mn=LMR<sub>s</sub>  |col 1=MOV R<sub>s</sub>, M   |col 2=1 |op={{bin|11 111 SSS}} |act=Mem = R<sub>s</sub>}}
 
{{inst|mn=LR<sub>d</sub>I  |col 1=MVI R<sub>d</sub>, Imm |col 2=2 |op={{bin|00 DDD 110}} |act=R<sub>d</sub> = Immed Value}}
 
{{inst|mn=LR<sub>d</sub>I  |col 1=MVI R<sub>d</sub>, Imm |col 2=2 |op={{bin|00 DDD 110}} |act=R<sub>d</sub> = Immed Value}}
 
{{inst|mn=LMI              |col 1=MVI M, Imm            |col 2=2 |op={{bin|00 111 110}} |act=Mem = Immed Value}}
 
{{inst|mn=LMI              |col 1=MVI M, Imm            |col 2=2 |op={{bin|00 111 110}} |act=Mem = Immed Value}}
Line 90: Line 87:
  
 
{{inst|cols=5|section=<span id="accumulator_group">'''Accumulator Group Instructions'''</span><br><small>The result of an ALU instruction affect all flags. The rotation instructions only affect the carry flag.</small>}}
 
{{inst|cols=5|section=<span id="accumulator_group">'''Accumulator Group Instructions'''</span><br><small>The result of an ALU instruction affect all flags. The rotation instructions only affect the carry flag.</small>}}
{{inst|mn=ADR<sub>s</sub> |col 1=ADD R<sub>s</sub> |col 2=1 |op={{bin|10 000 SSS}}  |act=A = A + R<sub>s</sub>}}
+
{{inst|mn=ADR<sub>s</sub> |col 1=ADD R<sub>s</sub> |col 2=1 |op={{bin|01 000 SSS}}  |act=A = A + R<sub>s</sub>}}
{{inst|mn=ADM            |col 1=ADD M            |col 2=1 |op={{bin|10 000 111}}  |act=A = A + Mem}}
+
{{inst|mn=ADM            |col 1=ADD M            |col 2=1 |op={{bin|01 000 111}}  |act=A = A + Mem}}
{{inst|mn=ADI            |col 1=ADI              |col 2=2 |op={{bin|00 000 100}}  |act=A = A + Immed Value}}
+
{{inst|mn=ADI            |col 1=ADI              |col 2=2 |op={{bin|01 000 100}}  |act=A = A + Immed Value}}
{{inst|mn=ACR<sub>s</sub> |col 1=ADC R<sub>s</sub> |col 2=1 |op={{bin|10 001 SSS}}  |act=A = Carry + R<sub>s</sub>}}
+
{{inst|mn=ACR<sub>s</sub> |col 1=ADC R<sub>s</sub> |col 2=1 |op={{bin|01 001 SSS}}  |act=A = Carry + R<sub>s</sub>}}
{{inst|mn=ACM            |col 1=ADC M            |col 2=1 |op={{bin|10 001 111}}  |act=A = Carry + Mem}}
+
{{inst|mn=ACM            |col 1=ADC M            |col 2=1 |op={{bin|01 001 111}}  |act=A = Carry + Mem}}
 
{{inst|mn=ACI            |col 1=ACI              |col 2=2 |op={{bin|00 001 100}}  |act=A = Carry + Immed Value}}
 
{{inst|mn=ACI            |col 1=ACI              |col 2=2 |op={{bin|00 001 100}}  |act=A = Carry + Immed Value}}
 
{{inst|mn=SUR<sub>s</sub> |col 1=SUB R<sub>s</sub> |col 2=1 |op={{bin|10 010 SSS}}  |act=A = A - R<sub>s</sub>}}
 
{{inst|mn=SUR<sub>s</sub> |col 1=SUB R<sub>s</sub> |col 2=1 |op={{bin|10 010 SSS}}  |act=A = A - R<sub>s</sub>}}
 
{{inst|mn=SUM            |col 1=SUB M            |col 2=1 |op={{bin|10 010 111}}  |act=A = A - Mem}}
 
{{inst|mn=SUM            |col 1=SUB M            |col 2=1 |op={{bin|10 010 111}}  |act=A = A - Mem}}
 
{{inst|mn=SUI            |col 1=SUI              |col 2=2 |op={{bin|00 010 100}}  |act=A = A - Immed Value}}
 
{{inst|mn=SUI            |col 1=SUI              |col 2=2 |op={{bin|00 010 100}}  |act=A = A - Immed Value}}
{{inst|mn=SBR<sub>s</sub>  |col 1=SBB R<sub>s</sub> |col 2=1 |op={{bin|10 011 SSS}}  |act=A = A - (Carry + R<sub>s</sub>)}}
+
{{inst|mn=SB<sub>s</sub>  |col 1=SBB R<sub>s</sub> |col 2=1 |op={{bin|10 011 SSS}}  |act=A = A - (Carry + R<sub>s</sub>)}}
 
{{inst|mn=SBM            |col 1=SBB M            |col 2=1 |op={{bin|10 011 111}}  |act=A = A - (Carry + Mem)}}
 
{{inst|mn=SBM            |col 1=SBB M            |col 2=1 |op={{bin|10 011 111}}  |act=A = A - (Carry + Mem)}}
{{inst|mn=SBI            |col 1=SCI               |col 2=2 |op={{bin|00 011 100}}  |act=A = A - (Carry + Immed Value)}}
+
{{inst|mn=SBI            |col 1=ACI               |col 2=2 |op={{bin|00 011 100}}  |act=A = A - (Carry + Immed Value)}}
 
{{inst|mn=NDR<sub>s</sub> |col 1=ANA R<sub>s</sub> |col 2=1 |op={{bin|10 100 SSS}}  |act=A = {{l|land|A|R<sub>s</sub>}}}}
 
{{inst|mn=NDR<sub>s</sub> |col 1=ANA R<sub>s</sub> |col 2=1 |op={{bin|10 100 SSS}}  |act=A = {{l|land|A|R<sub>s</sub>}}}}
 
{{inst|mn=NDM            |col 1=ANA M            |col 2=1 |op={{bin|10 100 111}}  |act=A = {{l|land|A|Mem}}}}
 
{{inst|mn=NDM            |col 1=ANA M            |col 2=1 |op={{bin|10 100 111}}  |act=A = {{l|land|A|Mem}}}}
Line 125: Line 122:
 
{{inst|mn=JFS |col 1=JP  |col 2=3 |op={{bin|01 010 000}} |act=If sign = 0 (positive), jump to immed address}}
 
{{inst|mn=JFS |col 1=JP  |col 2=3 |op={{bin|01 010 000}} |act=If sign = 0 (positive), jump to immed address}}
 
{{inst|mn=JFP |col 1=JPO  |col 2=3 |op={{bin|01 011 000}} |act=If parity = 0 (odd), jump to immed address}}
 
{{inst|mn=JFP |col 1=JPO  |col 2=3 |op={{bin|01 011 000}} |act=If parity = 0 (odd), jump to immed address}}
{{inst|mn=JTC |col 1=JC  |col 2=3 |op={{bin|01 100 000}} |act=If carry = 1, jump to immed address}}
+
{{inst|mn=JC |col 1=JC  |col 2=3 |op={{bin|01 100 000}} |act=If carry = 1, jump to immed address}}
{{inst|mn=JTZ |col 1=JZ  |col 2=3 |op={{bin|01 101 000}} |act=If result = 0, jump to immed address}}
+
{{inst|mn=JZ |col 1=JZ  |col 2=3 |op={{bin|01 101 000}} |act=If result = 0, jump to immed address}}
{{inst|mn=JTS |col 1=JM  |col 2=3 |op={{bin|01 110 000}} |act=If sign = 1 (negative), jump to immed address}}
+
{{inst|mn=JS |col 1=JM  |col 2=3 |op={{bin|01 110 000}} |act=If sign = 1 (negative), jump to immed address}}
{{inst|mn=JTP |col 1=JPE  |col 2=3 |op={{bin|01 111 000}} |act=If parity = 1 (even), jump to immed address}}
+
{{inst|mn=JP |col 1=JPE  |col 2=3 |op={{bin|01 111 000}} |act=If parity = 1 (even), jump to immed address}}
 
{{inst|mn=CAL |col 1=CALL |col 2=3 |op={{bin|01 XXX 110}} |act=Save current address onto the stack and jump to immed address}}
 
{{inst|mn=CAL |col 1=CALL |col 2=3 |op={{bin|01 XXX 110}} |act=Save current address onto the stack and jump to immed address}}
 
{{inst|mn=CFC |col 1=CNC  |col 2=3 |op={{bin|01 000 010}} |act=If carry = 0, save current address and jump to immed address}}
 
{{inst|mn=CFC |col 1=CNC  |col 2=3 |op={{bin|01 000 010}} |act=If carry = 0, save current address and jump to immed address}}
Line 134: Line 131:
 
{{inst|mn=CFS |col 1=CP  |col 2=3 |op={{bin|01 010 010}} |act=If sign = 0 (positive), save current address and jump to immed address}}
 
{{inst|mn=CFS |col 1=CP  |col 2=3 |op={{bin|01 010 010}} |act=If sign = 0 (positive), save current address and jump to immed address}}
 
{{inst|mn=CFP |col 1=CPO  |col 2=3 |op={{bin|01 011 010}} |act=If parity = 0 (odd), save current address and jump to immed address}}
 
{{inst|mn=CFP |col 1=CPO  |col 2=3 |op={{bin|01 011 010}} |act=If parity = 0 (odd), save current address and jump to immed address}}
{{inst|mn=CTC |col 1=CC  |col 2=3 |op={{bin|01 100 010}} |act=If carry = 1, save current address and jump to immed address}}
+
{{inst|mn=CC |col 1=CC  |col 2=3 |op={{bin|01 100 010}} |act=If carry = 1, save current address and jump to immed address}}
{{inst|mn=CTZ |col 1=CZ  |col 2=3 |op={{bin|01 101 010}} |act=If result = 0, save current address and jump to immed address}}
+
{{inst|mn=CZ |col 1=CZ  |col 2=3 |op={{bin|01 101 010}} |act=If result = 0, save current address and jump to immed address}}
{{inst|mn=CTS |col 1=CM  |col 2=3 |op={{bin|01 110 010}} |act=If sign = 1 (negative), save current address and jump to immed address}}
+
{{inst|mn=CS |col 1=CM  |col 2=3 |op={{bin|01 110 010}} |act=If sign = 1 (negative), save current address and jump to immed address}}
{{inst|mn=CTP |col 1=CPE  |col 2=3 |op={{bin|01 111 010}} |act=If parity = 1 (even), save current address and jump to immed address}}
+
{{inst|mn=CP |col 1=CPE  |col 2=3 |op={{bin|01 111 010}} |act=If parity = 1 (even), save current address and jump to immed address}}
 
{{inst|mn=RET |col 1=RET  |col 2=1 |op={{bin|00 XXX 111}} |act=Unconditionally return, down one stack level}}
 
{{inst|mn=RET |col 1=RET  |col 2=1 |op={{bin|00 XXX 111}} |act=Unconditionally return, down one stack level}}
 
{{inst|mn=RFC |col 1=RNC  |col 2=1 |op={{bin|00 000 011}} |act=If carry = 0, return, down one stack level}}
 
{{inst|mn=RFC |col 1=RNC  |col 2=1 |op={{bin|00 000 011}} |act=If carry = 0, return, down one stack level}}
Line 143: Line 140:
 
{{inst|mn=RFS |col 1=RP  |col 2=1 |op={{bin|00 010 011}} |act=If sign = 0 (positive), return, down one stack level}}
 
{{inst|mn=RFS |col 1=RP  |col 2=1 |op={{bin|00 010 011}} |act=If sign = 0 (positive), return, down one stack level}}
 
{{inst|mn=RFP |col 1=RPO  |col 2=1 |op={{bin|00 011 011}} |act=If parity = 0 (odd), return, down one stack level}}
 
{{inst|mn=RFP |col 1=RPO  |col 2=1 |op={{bin|00 011 011}} |act=If parity = 0 (odd), return, down one stack level}}
{{inst|mn=RTC |col 1=RC  |col 2=1 |op={{bin|00 100 011}} |act=If carry = 1, return, down one stack level}}
+
{{inst|mn=RC |col 1=RC  |col 2=1 |op={{bin|00 100 011}} |act=If carry = 1, return, down one stack level}}
{{inst|mn=RTZ |col 1=RZ  |col 2=1 |op={{bin|00 101 011}}  |act=If result = 0, return, down one stack level}}
+
{{inst|mn=RZ |col 1=RZ  |col 2=1 |op={{bin|00 101 011}}  |act=If result = 0, return, down one stack level}}
{{inst|mn=RTS |col 1=RM  |col 2=1 |op={{bin|00 110 011}} |act=If sign = 1 (negative), return, down one stack level}}
+
{{inst|mn=RS |col 1=RM  |col 2=1 |op={{bin|00 110 011}} |act=If sign = 1 (negative), return, down one stack level}}
{{inst|mn=RTP |col 1=RPE  |col 2=1 |op={{bin|00 111 011}} |act=If parity = 1 (even), return, down one stack level}}
+
{{inst|mn=RP |col 1=RPE  |col 2=1 |op={{bin|00 111 011}} |act=If parity = 1 (even), return, down one stack level}}
 
{{inst|mn=RST |col 1=RST  |col 2=1 |op={{bin|00 AAA 101}} |act=Call the subroutine at memory AAA000 (up one stack level)}}
 
{{inst|mn=RST |col 1=RST  |col 2=1 |op={{bin|00 AAA 101}} |act=Call the subroutine at memory AAA000 (up one stack level)}}
  

Please note that all contributions to WikiChip may be edited, altered, or removed by other contributors. If you do not want your writing to be edited mercilessly, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource (see WikiChip:Copyrights for details). Do not submit copyrighted work without permission!

Cancel | Editing help (opens in new window)
Facts about "8008 ISA - Intel"
designerIntel + and Datapoint Corporation +
first launched1972 +
full page nameintel/mcs-8/isa +
implementation8008 - Intel +
instance ofinstruction set architecture +
instruction count48 +
instruction word size8 bit (1 octets) +
name8008 +
word size8 bit (1 octets, 2 nibbles) +