Intel 8086
Intel 8086 je 16 bitni procesor kompanije Intel koji izlazi na tržište 1978. godine i potom postaje osnova za IBM kućne kompjutere.
Uvod
urediU drugoj polovici sedamdesetih kada je postalo očito da Zilog i Motorola počinju raditi na svojim prvom 16 bitnim procesorima (konkretno Z8000 i Motorola 68000) Intel donosi odluku da brzo izgradi svoj procesor koji kao moderniju verziju 8 bitnog procesora Intel 8080/8085. Nakon dizajniranja koje će trajati malo duže od 2 godine procesor izlazi na tražište.
Osobine procesora
urediPošto je model programiranja i instrukcija imao kao osnovu starije modele on je bio kompaktibilan s Intelovim procesorima 8085, 8080 i 8008. Osnovna unutrašnja razlika među njima je bila da su stariji procesori koristili samo najosnovnije 16 bitne funkcije dok je Intel 8086 imao punu 16 bitnu sposobnost.
Sveukupno procesor je imao 29.000 transistora ako u njih računamo i one od ROMa, a njegova originalna veličina je bila 33 mm2, dok je mogao koristiti najviše 1 megabajt memorije. Maksimalna brzina procesora je bila između 5 i 10 Mhz
Kraj sedamdesetih godina dvadesetog stoljeća počinje kompjuterska revolucija puštanjem u prodaju kompjutera Commodore PET, Atari 400 i Atari 800, Apple II i Tandy TRS80. Uspjeh tih kompjutera rezultira odlukom elektroničnog diva imena IBM da izgradi svoj kompjuter iz lako dostupnih dijelova. Vršeći izbor između procesora raznih procesora na tržištu IBM se odlučuje za Intel i njegovu osakaćenu verziju procesora 8086 koja ulazi u proizvodnju 1979. godine pod imenom Intel 8088. Ta odluka na kraju rezultira da osnova za poslovne kompjutere postane Intel 8086/8088 procesor od kojeg će se razviti današnji kućni kompjuteri.
Proizvođači
urediJedan od osnova poslovne politike kompjuterskih kompanija tijekom sedamdesetih godina je bila da svaki procesor moraju proizvoditi minimalno 2 proizvođača kako se u slučaju propasti jednog proizvodnja ne bi zaustavila. To je bio i zahtjev koji je IBM postavio pred Intel u sklapanju dogovora po kojem procesor te kompanije postaje osnova njihovih kompjutera. Na kraju Intel će dopustiti da procesor 8086 i 8088 proizvode osim njih AMD, NEC, Fujitsu, Harris (Intersil), OKI, Siemens AG, Texas Instruments i Mitsubishi.
Nasljednik ovog procesora će biti Intel 80286.
Popis strojnih naredbi 8086 procesora
urediInstruction | 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 |