Fall 2019/20 - Lecture Notes # 2: - Brief History of 80x86 Family of Microprocessors
Fall 2019/20 - Lecture Notes # 2: - Brief History of 80x86 Family of Microprocessors
8086
▪ Virtual Memory: a way of fooling the microprocessor into thinking that it has
access to unlimited memory by swapping data between disk storage and RAM.
▪ Real mode (faster operation with maximum of 1 Mbytes of memory) vs.
Protected mode protecting the operating system for accidental or deliberate
destruction by the user.
▪ Protected mode is slower but can use 16 megabytes of memory.
EENG410: MICROPROCESSORS I
8086
History of 80x86 Family of Microprocessors
• Other microprocessors: 80286, 80386, and 80486
▪ 80386: Introduced in 1985 also known as (80386DX)
❖ With 32-bit internal and external data bus.
❖ 32-bit address bus (232 = 4 gigabyte-physical memory). With virtual
memory 64 terabyte(246).
❖ 80386SX was later introduced with the same internal structure with 16-bit
external data bus and 24-bit address bus. 80386SX was much cheaper.
▪ All microprocessors discussed so far were general-purpose microprocessors
and could not handle mathematical operations rapidly. For this reason, 8087,
80287, 80387 numeric data processing chips called math co-processors were
used.
▪ 80486: introduced in 1989 with 32-bit internal-external data bus and 32-bit
address bus.
❖ built in math co-processor in a single chip.
❖ Introduction of cache memory ( Static RAM with very fast access time)
EENG410: MICROPROCESSORS I
8086
History of 80x86 Family of Microprocessors
• Evolution of Intel's Microprocessors
• These two sections work simultaneously. BIU accesses memory and peripherals
while the EU executes the instructions previously fetched.
• It only works if BIU keeps ahead of EU. Thus BIU has a buffer of queue. (8088 has 4
byte, and 8088 has 6 bytes).
• If the execution of any instruction takes to long, the BIU is filled to its maximum
capacity and busses will stay idle. It starts to fetch again whenever there is 2-byte
room in the queue.
• When there is a jump instruction, the microprocessor must flush out the queue.
When a jump instruction is executed BIU starts to fetch information from the new
location in the memory. In this situation EU must wait until the BIU starts to fetch
the new instruction. This is known as branch penalty.
EENG410: MICROPROCESSORS I
8086
Registers of 8086 Microprocessor
• Registers of 8086
❖ In the CPU, registers are used store information temporarily. The information
can be one or two bytes of data, or the address of data.
❖ In 8088/8086 general-purpose registers can be accessed as either16-bit or 8-
bit registers. All other registers can be accessed as full 16-bit registers.
MSB LSB
16-bit register:
MSB LSB
EENG410: MICROPROCESSORS I
8086
Registers of 8086 Microprocessor
▪ Different registers are used for different functions. Registers will be explained
later within the context of instructions and their applications.
▪ The first letter of each general register indicates its use.
❖ AX is used for the accumulator.
❖ BX is used for base addressing register.
❖ CX is used for counter loop operations.
❖ DX is used to point out data in I/O operations.
▪ Registers of 8086
• Low/High-level languages
❖ Assembly Language is a low-level language. Deals directly with the internal structure
of CPU. Assembler translates Assembly language program into machine code.
❖ In high-level languages, Pascal, Basic, C; the programmer does not have to be
concerned with internal details of the CPU. Compilers translate the program into
machine code.
EENG410: MICROPROCESSORS I
8086
Introduction to Assembly Language Programming
• Machine Language
❖ Programs consist of 0s and 1s are called machine language.
❖ Assembly Language program consists of series of lines of Assembly
language instructions.
❖ Instructions consist of a mnemonic and operand(s).
• MOV instruction
mnemonic operands
EENG410: MICROPROCESSORS I
8086
Introduction to Assembly Language Programming
• MOV instruction
Comment sign
Example: (8-bit )
MOV CL,55H ;move 55H into register CL
MOV DL,CL ;move/copy the contents of CL into DL (now DL=CL=55H)
MOV BH,DL ;move/copy the contents of DL into BH (now DL=BH=55H)
MOV AH,BH ;move/copy the contents of BH into AH (now AH=BH=55H)
Example: (16-bit)
MOV CX,468FH;move 468FH into CX (now CH =46 , CL=8F)
MOV AX,CX ;move/copy the contents of CX into AX (now AX=CX=468FH)
MOV BX,AX ;now BX=AX=468FH
MOV DX,BX ;now DX=BX=468FH
MOV DI,AX ;now DI=AX=468FH
MOV SI,DI ;now SI=DI=468FH
MOV DS,SI ;now DS=SI=468FH
MOV BP,DS ;now BP=DS=468FH
EENG410: MICROPROCESSORS I
8086
Introduction to Assembly Language Programming
• MOV instruction
▪ Rules regarding MOV instruction
❖ Data can be moved among all registers except the flag register. There are
other ways to load the flag registers. To be studied later.
❖ Source and destination registers have to match in size.
❖ Data can be moved among all registers (except flag reg.) but data can be
moved directly into nonsegment registers only. You can’t move data
segment registers directly.
Examples:
MOV BX,14AFH ;move 14AFH into BX (legal)
MOV SI,2345H ;move 2345H into SI (legal)
MOV DI,2233H ;move 2233H into DI (legal)
MOV CS,2A3FH ;move 2A3FH into CS (illegal)
MOV DS,CS ;move the content of CS into DS (legal)
MOV FR,BX ;move the content of BX into FR (illegal)
MOV DS,14AFH ;move 14AFH into DS (illegal)
EENG410: MICROPROCESSORS I
8086
Introduction to Assembly Language Programming
• MOV instruction
▪ Important points
❖ Data values cannot be loaded directly into (CS,DS,SS and ES)
MOV AX,1234H ; load 1234H into AX
MOV SS,AX ; load the value in AX into SS