Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Introduced in 1974
8-bit architecture
Still used in some
microcontroller
applications !
Introduced in 1979
29,000 transistors
33 mm2
Clock: 5 MHz
16 bit architecture
Introduced in 1985
275,000 transistors
43 mm2
Clock: 16 MHz
32 bit architecture
Introduced in 1989
1,200,000 transistors
81 mm2
Clock: 25 MHz
32 bit architecture
1st pipelined
implementation of
IA32
• Introduced in 1993
• 3,100,000 transistors
• 296 mm2
• Clock: 60 MHz
• 32 bit architecture
– 1st superscalar
implementation of IA32
X = Undefined
SF = Sign Flag
OF = Overflow Flag
ZF = Zero Flag
DF = Direction Flag
AF = Auxiliary Flag
IF = Instruction Flag
PF = Parity Flag
TF = Trap Flag
CF = Carry Flag
It has multiplexed address and data bus due to which the pin count is
reduced considerably.
When 8086 is reset the contents of IP are 0000 H and contents of CS are
FFFF H. Other registers are cleared to 0000 H.
It fetches up to 6 instruction bytes from memory and store in queue.
Higher Throughput (Speed) (This is achieved by a concept called
pipelining)
Fetching the next instruction while current instruction is under execution is
called pipelining.
GND 1 40 Vcc
AD14 AD15
AD13 A16,S3
AD12 A17,S4
AD11 A18,S5
AD10 A19,S6
AD9 /BHE,S7
AD8 MN,/MX
AD7 /RD
AD6 /RQ,/GT0 HOLD
AD5
8086 /RQ,/GT1 HLDA
AD4 /LOCK /WR
AD3 /S2 IO/M
AD2 /S1 DT/R
AD1 /S0 /DEN
AD0 QS0 ALE
NMI QS1 /INTA
INTR /TEST
CLK READY
GND 20 21 RESET
CS:IP
DS:SI
ES:DI
SS:BP
SS:SP
One register must be a Base register and the other must be an Index register.
For ex. MOV CX, [BX][BP] is an invalid instruction.
• Data Transfer
• Arithmetic
• Logical
• Control
• Processor Control Instructions
• String Manipulation
• Interrupt Control
MOV dest, src Note that source and destination cannot be memory
location. Also source and destination must be same type.
PUSH Src : Copies word on stack.
POP dest : Copies word from stack into dest. Reg.
IN acc, port : Copies 8 or 16 bit data from port to accumulator.
a) Fixed Port b) Variable Port
OUT port,acc
LES Reg, Mem : Load register and extra segment register with words from
memory.
LDS Reg,Mem : Load register and data segment register with words from
memory.
LEA Reg,Src: load Effective address.(Offset is loaded in specified register)
LAHF: Copy lower byte of flag register into AH register.
SAHF: Copy AH register to lower byte of flag
MUL op
RCL dest, count : Rotate left through Carry If rotate once count is
directly specified in the instruction. For more no.of
rotations count is specified in CL register.
RCR dest, count : Rotate right through carry
ROL dest, count : Rotate left ( into carry as well as into LSB)
ROR dest, Count : Rotate right ( into carry as well as into MSB)
SAL/ SHL dest, count : Shift left and put 0in LSB.
SAR dest, count : Shift right New MSB = Old MSB
SHR dest, count : Shift right .MSB is filled with 0’s.
This Performs a bitwise Logical AND of two operands. The result of the operation is
stored in the op1 and used to set the flags.
To perform a bitwise AND of the two operands, each bit of the result is set to 1 if and
only if the corresponding bit in both of the operands is 1, otherwise the bit in the
result is cleared to 0.
CX-BX
Conditional Jumps based on multiple flags are used after a CMP (compare)
instruction.
NOP : No Operation
Example
MOV CX, 06
REP MOVSB
• CMPS Compares two strings (of equal size), say String1 and String2, a
byte or word at a time.
• String values remain unaffected.
• Only flags affected.
• It performs the subtraction DS:[SI] - ES:[DI] CMPSB for comparing Strings
Byte at a time.
Normally CMPSB or CMPSW instructions are used to check if two given strings
are same or not.
To check for equality, REPE (Repeat while Equal) prefix is used.
DB - Defined Byte.
DB directive is used to declare a byte type variable or to store a byte
in memory location.
Example
PRICE DB 49h, 98h, 29h ;Declare an array of 3 bytes, named as
PRICE and initialize.
NAME DB ‘ABCDEF’ ;Declare an array of 6 bytes and initialize with ASCII
code for letters
TEMP DB 100 DUP(?) ;Set 100 bytes of storage in memory and give
it the name as TEMP, but leave the 100 bytes uninitialized. Program
instructions will load values into these locations.
Rajesh G R, Asst Prof, ECE, VAST 80
DD - Defined Double Word
DQ - Defined Quad Word
DT - Define Ten Bytes
DW - Define Word
END
END directive is placed after the last statement of a program to tell
the assembler that this is the end of the program module.
Example: