Intel 8086 ime je za 16-bitni mikroprocesor kojeg je razvila američka tvrtka Intel 1976. godine, ovaj mikroprocesor je temelj standarnom industrijskom mikroprocesoru x86. Slabija inačica Intel 8088 s 8-bitnom vanjskom podatkovnom sabirnicom korišten je za prvo IBM PC računalo. Razlog zašto je 8088 korišten za prvi PC bili su jeftiniji i dostupniji 8-bitni memorijski čipovi.
Tehnički podaci
- Takt: 4,77 do 10 MHZ
- Broj tranzistora: 29.000
- Tehnologija: NMOS, CMOS, HMOS
- Kućište: DIP 40 iglica
- Adresna sabirnica: 20-bita (1MB)
- Podatkovna sabirnica: 16-bita
- Broj naredbi: 117
Popis strojnih naredbi 8086 procesora
Instruction | Meaning | Notes |
---|---|---|
AAA | ASCII adjust AL after addition | used with unpacked binary coded decimal |
AAD | ASCII adjust AX before division | buggy in the original instruction set, but "fixed" in the NEC V20, causing a number of incompatibilites |
AAM | ASCII adjust AX after multiplication | |
AAS | ASCII adjust AL after subtraction | |
ADC | Add with carry | |
ADD | Add | |
AND | Logical AND | |
CALL | Call procedure | |
CBW | Convert byte to word | |
CLC | Clear carry flag | |
CLD | Clear direction flag | |
CLI | Clear interrupt flag | |
CMC | Complement carry flag | |
CMP | Compare operands | |
CMPSB | Compare bytes in memory | |
CMPSW | Compare words | |
CWD | Convert word to doubleword | |
DAA | Decimal adjust AL after addition | (used with packed binary coded decimal) |
DAS | Decimal adjust AL after subtraction | |
DEC | Decrement by 1 | |
DIV | Unsigned divide | |
ESC | Used with floating-point unit | |
HLT | Enter halt state | |
IDIV | Signed divide | |
IMUL | Signed multiply | |
IN | Input from port | |
INC | Increment by 1 | |
INT | Call to interrupt | |
INTO | Call to interrupt if overflow | |
IRET | Return from interrupt | |
Jxx | Jump if condition | (JA, JAE, JB, JBE, JC, JCXZ, JE, JG, JGE, JL, JLE, JNA, JNAE, JNB, JNBE, JNC, JNE, JNG, JNGE, JNL, JNLE, JNO, JNP, JNS, JNZ, JO, JP, JPE, JPO, JS, JZ) |
JMP | Jump | |
LAHF | Load flags into AH register | |
LDS | Load pointer using DS | |
LEA | Load Effective Address | |
LES | Load ES with pointer | |
LOCK | Assert BUS LOCK# signal | (for multiprocessing) |
LODSB | Load byte | |
LODSW | Load word | |
LOOP/LOOPx | Loop control | (LOOPE, LOOPNE, LOOPNZ, LOOPZ) |
MOV | Move | |
MOVSB | Move byte from string to string | |
MOVSW | Move word from string to string | |
MUL | Unsigned multiply | |
NEG | Two's complement negation | |
NOP | No operation | |
NOT | Negate the operand, logical NOT | |
OR | Logical OR | |
OUT | Output to port | |
POP | Pop data from stack | |
POPF | Pop data into flags register | |
PUSH | Push data onto stack | |
PUSHF | Push flags onto stack | |
RCL | Rotate left (with carry) | |
RCR | Rotate right (with carry) | |
REPxx | Repeat CMPS/MOVS/SCAS/STOS | (REP, REPE, REPNE, REPNZ, REPZ) |
RET | Return from procedure | |
RETN | Return from near procedure | |
RETF | Return from far procedure | |
ROL | Rotate left | |
ROR | Rotate right | |
SAHF | Store AH into flags | |
SAL | Shift Arithmetically left (multiply) | |
SAR | Shift Arithmetically right (signed divide) | |
SBB | Subtraction with borrow | |
SCASB | Compare byte string | |
SCASW | Compare word string | |
SHL | Shift left (multiply) | |
SHR | Shift right (unsigned divide) | |
STC | Set carry flag | |
STD | Set direction flag | |
STI | Set interrupt flag | |
STOSB | Store byte in string | |
STOSW | Store word in string | |
SUB | Subtraction | |
TEST | Logical compare (AND) | |
WAIT | Wait until not busy | Waits until BUSY# pin is inactive (used with floating-point unit) |
XCHG | Exchange data | |
XLAT | Table look-up translation | |
XOR | Exclusive OR |