logo Computermuseum der
Stuttgarter Informatik
english français

Befehlssatz des Intel 8008


   Binär             Mnem1   Mnem2                      
0 0  0 0 0  0 0 x     HLT     HLT
1 1  1 1 1  1 1 1     HLT     HLT

0 1  0 0 M  M M 1     INP     IN  port MMM
0 1  R R M  M M 1     OUT     OUT port RRMMM (RR <> 0)

------------------------------------------------------------------------

0 1  x x x  1 0 0     JMP     JMP   unconditionally jump

0 1  0 0 0  0 0 0     JFC     JNC    JMP if  carry = 0
0 1  0 0 1  0 0 0     JFZ     JNZ    JMP if result <> 0
0 1  0 1 0  0 0 0     JFS     JP     JMP if   sign = 0 (positive)
0 1  0 1 1  0 0 0     JFP     JPO    JMP if parity = odd

0 1  1 0 0  0 0 0     JC      JC     JMP if  carry = 1
0 1  1 0 1  0 0 0     JZ      JZ     JMP if result = 0 
0 1  1 1 0  0 0 0     JS      JM     JMP if   sign = 1 (negative)
0 1  1 1 1  0 0 0     JP      JPE    JMP if parity = even

0 1  x x x  1 1 0     CAL     CALL  unconditionally call subroutine

0 1  0 0 0  0 1 0     CFC     CNC   CALL if  carry = 0
0 1  0 0 1  0 1 0     CFZ     CNZ   CALL if result <> 0
0 1  0 1 0  0 1 0     CFS     CP    CALL if   sign = 0 (positive)
0 1  0 1 1  0 1 0     CFP     CPO   CALL if parity = odd

0 1  1 0 0  0 1 0     CC      CC    CALL if  carry = 1
0 1  1 0 1  0 1 0     CZ      CZ    CALL if result = 0
0 1  1 1 0  0 1 0     CS      CM    CALL if   sign = 1 (negative)
0 1  1 1 1  0 1 0     CP      CPE   CALL if parity = even

0 0  x x x  1 1 1     RET     RET   unconditionally return

0 0  0 0 0  0 1 1     RFC     RNC    RET if  carry = 0
0 0  0 0 1  0 1 1     RFZ     RNZ    RET if result <> 0
0 0  0 1 0  0 1 1     RFS     RP     RET if   sign = 0 (positive)
0 0  0 1 1  0 1 1     RFP     RPO    RET if parity = odd

0 0  1 0 0  0 1 1     RC      RC     RET if  carry = 1
0 0  1 0 1  0 1 1     RZ      RZ     RET if result = 0
0 0  1 1 0  0 1 1     RS      RM     RET if   sign = 1 (negative)
0 0  1 1 1  0 1 1     RP      RPE    RET if parity = even

0 0  A A A  1 0 1     RST     RST    call subroutine at adrs AAA000

------------------------------------------------------------------------

1 1  D D D  S S S     Lds     MOV d,s   load d with content of s 
1 1  D D D  1 1 1     LdM     MOV d,M   load d with content of Mem 
1 1  1 1 1  s s s     LMs     MOV M,s   load M with content of s 

0 0  d d d  1 1 0     LdI     MVI d     Load register d with data
0 0  1 1 1  1 1 0     LMI     MVI M     Load Memory M with data b

0 0  d d d  0 0 0     INd     INR d     increment register d (d<>A)
0 0  d d d  0 0 1     DCd     DCR r     decrement register d (d<>A)

------------------------------------------------------------------------

1 0  0 0 0  s s s     ADs     ADD s     add contents of s to A
1 0  0 0 0  1 1 1     ADM     ADD M     add contents of M to A
0 0  0 0 0  1 0 0     ADI     ADI b     add constant b to A

1 0  0 0 1  s s s     ACs     ADC s     add contents of s + CY to A
1 0  0 0 1  1 1 1     ACM     ADC M     add contents of M + CY to A
0 0  0 0 1  1 0 0     ACI     ACI b     add constant b + CY to A

1 0  0 1 0  s s s     SUs     SUB s     sub contents of s from A
1 0  0 1 0  1 1 1     SUM     SUB M     sub contents of M from A
0 0  0 1 0  1 0 0     SUI     SUI b     sub constant b from A

1 0  0 1 1  s s s     SBs     SBB s     sub contents of s + CY from A
1 0  0 1 1  1 1 1     SBM     SBB M     sub contents of M + CY from A
0 0  0 1 1  1 0 0     SBI     SBI b     sub constant b + CY from A


1 0  1 0 0  s s s     NDs     ANA s     logical AND of s and A to A
1 0  1 0 0  1 1 1     NDM     ANA M     logical AND of M and A to A
0 0  1 0 0  1 0 0     NDI     ANI b     logical AND of const b and A to A

1 0  1 0 1  s s s     XRs     XRA s     logical XOR of s and A to A
1 0  1 0 1  1 1 1     XRM     XRA M     logical XOR of M and A to A
0 0  1 0 1  1 0 0     XRI     XRI b     logical XOR of const b and A to A

1 0  1 1 0  s s s     ORs     ORA s     logical OR of s and A to A
1 0  1 1 0  1 1 1     ORM     ORA M     logical OR of M and A to A
0 0  1 1 0  1 0 0     ORI     ORI b     logical OR of const b and A to A

1 0  1 1 1  s s s     CPs     CMP s     compare s with A, set flags
1 0  1 1 1  1 1 1     CPM     CMP M     compare M with A, set flags
0 0  1 1 1  1 0 0     CPI     CPI b     compare const b with A, set flags

------------------------------------------------------------------------

0 0  0 0 0  0 1 0     RLC     RLC       rotate content of A left
0 0  0 0 1  0 1 0     RRC     RRC       rotate content of A right
0 0  0 1 0  0 1 0     RAL     RAL       rotate content of A left through CY
0 0  0 1 1  0 1 0     RAR     RAR       rotate content of A right through CY

------------------------------------------------------------------------

Anmerkungen:
Alle I-Befehle besitzen ein zweites Datenbyte b Alle JMP- und CALL-Befehle besitzen zwei Adressbytes. Zuerst folgt das niederwertige Byte, dann das höherwertige. In diesem haben die beiden höchstwertigen Bits keine Bedeutung, da der 8008 nur 14 Adressbits benutzt.

Die Bezeichnungen für Mnem1 entstammen dem Intel Datenbuch 1974, die für Mnem2 dem Intel Datenbuch 1975.