Computers are not complicated device,
They are not infinitely intelligent
They do not think better than people.
A computer can only do what a programs instruct through programs
2. 06/02/14 2
Introduction and Basics
Computers are not complicated device,
They are not infinitely intelligent
They do not think better than people.
A computer can only do what a programs
instruct through programs
A program is just a sequence of simple
commands that help a computer solve a
problem
Computers execute instructions very fast .
3. 06/02/14 3
Basics
The power and magic of a computer
lies in the speed at which it executes
instructions without a mistake
The sequence of instructions executed
per second are very many (millions
steps) appears complicated altogether.
These are considered to be a series of
very simple steps or commands
4. 06/02/14 4
Basics (Cont’n)
The microprocessor is a simple integrated
circuit (IC). Or very small computer have the
same commands or instructions they can
perform.
The names used to describe the commands
make them vary.
Microprocessors have commands that can,
move data around, do maths (add,multiply
etc) bring data in side the microprocessor
from out side the system and also send it out
side the system
5. 06/02/14 5
Basic
A typical Microprocessor has three basic parts inside
it: the program counter (PC) ,memory and
input/output (I/O).
The program counter keeps track of which program is
to be executed
The memory contains commands to be executed.
The I/O deals with transferring of data from and to the
out systems.
Microprocessors are housed inside chips.
A microprocessor encounter branches during
program execution.Both conditional and non
conditional branches.
6. 06/02/14 6
Basics
The most difficult part of programming a
microprocessor is to define the problem
to solve.
This is called the logical thought
process
It is a good understanding of the
problem.
7. 06/02/14 7
Decimal, Binary and Hex
Microprocessors use binary numbering
system rather than the decimals for
counting ., and its why the computers are
called binary computers.
Decimal is base 10 and binary is base 2. Hex-
decimal is base 16.
The base of a system defines how many
possible numbers can be in each digit
position
Decimal: 0 to 9
Binary: 0 or 1
Hex 0 to 9, A, B C, D, E and F.
8. 06/02/14 8
Microprocessor Instructions
Microprocessors have instructions that they
send. The decimal, binary and hexadecimal
number indicated earlier are key to the
instruction execution.
There are many kinds of memories in a
system. There is the unrear memory called
the flags.
These are single bit numbers that are used to
indicate different conditions in a system.
Ther are flags coz they flag the program of
events or conditiond
9. 06/02/14 9
Instructions
If a flag is raised or has a 1 in it, then it is said
to be SET, otherwise if its 0 then it is said to b
RESET
In 8-bit byte, referred to as bit 0 through 7, 0
is right most and the least significant bit(LSB)
and 7 the most significant bit.
Inside a microprocessor there are many
registers. These vary from one CPU to CPU.
All have a register called the accumulator,
sometimes called the A register.
10. 06/02/14 10
Instructions
The accumulator is used in for temporary
results and is 8 bits wide or a byte .
In the CPU we will be using there are four
types of instructions, with a number of
variations. These four types are Arithmetic,
Logical, Branching, and Data Transfer. We
look at them independently next:
11. 06/02/14 11
Arithmetic
These include, addition, subtraction,
multiplication division, incrementing and
decrementing. In most early CPUs the
multiplications and division are not available.
There are two flags used in Arithmetic that tell
the program the outcome of an instruction.
These are
- Carry (C) flag
- Zero (Z) flag
the Z flag if set, indicates that the instruction
left a value 0 in the accumulator.
12. 06/02/14 12
Logical
These are also mathematical
instructions, and they include
-OR, AND, XOR, ROTATE,
COMPLEMENT and CLEAR
These commands are concerned with
the value or state of each bit in the data
rather than the value of the data they
work with.
13. 06/02/14 13
Branching
These are jumps or branches that help the
program flow commands. They are termed
differently depending on the way a jump is
done or the condition under which it is done,
e.g. overflow or underflow., zero result or not
zero.
But all stop the normal sequential execution
of the program, and jump to another location,
other than the next instruction in sequence
14. 06/02/14 14
Data Transfer
These use Moving and Exchanging
Moving helps move data across
registers and memory
Exchange is a variation on the move
instruction. Data is moved between two
positions
15. 06/02/14 15
Memory and Addressing
There are several different types of
memory in a micro.
One is Program memory.
This is where the program is located.
Another is Data memory.
Where data, that might be used by the
program, is located.
16. 06/02/14 16
Memory and Addressing-
cont’n
They both reside in the same memory space
and can be changed by the program.
That’s right, a program can actually alter itself
if that was necessary.
Two terms are used when talking about
memory.
Reading (load) is getting a value from
memory and Writing (store) is putting a value
into memory.
17. 06/02/14 17
Types of Buses & their
functions
There are three system buses associated
with the memory subsystem.
address bus,
data bus,
control bus.
It's important for you to know exactly how they work,
because these busses transport data and addresses
everywhere within the system.
All these buses are connected to the memory system,
which makes them interact with the microprocessors.
18. 06/02/14 18
Functions
We have different types of microprocessors:
8085, 8086 and other more types….
In the 8085 microprocessor, the address bus
is 16-bits wide. It selects one of locations in
the 216
memory locations.
The control bus determines whether this will
be a read or a write
In the case of an instruction fetch, the control bus is set
up for a read operation.
Data is read or written through the data bus,
which is 8 bits wide. Explains why registers
and memory is 8-bits wide.
19. 06/02/14 19
Bytes and Microprocessors
A byte is the most used number in a
microprocessor because each memory
location or register is one byte wide.
Memory has to be thought of as a sort of file
cabinet with each location in it being a folder in
the cabinet.
To get to each memory location, a
different method is used, that is
a unique address is assigned to each location.
20. 06/02/14 20
Bytes
In most microprocessors the address is
a word or 16 bits, or 4 digit hex.
This allows for a maximum of 65536 (216
or
64K) unique addresses or memory locations
that can be accessed.
21. 06/02/14 21
Program Counter
The Program Counter is what holds this
address when the microprocessor is
executing instructions.
The reason instructions are read sequentially,
is because the program counter automatically
increments after fetching the current
instruction.
It does this even before the current instruction
is acted upon.
22. 06/02/14 22
Program Counter
The sequence is that the program
counter's contents are placed on the
memory address bus.
this allows the instruction to be fetched
from memory through the data bus, and
immediately the program counter is
incremented by 1.
Then the microprocessor looks at the
instruction and starts processing it
23. 06/02/14 23
8086 Microprocessor
Program, data and stack memories occupy the
same memory space.
The total addressable memory size is 1MB KB.
As the most of the processor instructions use
16-bit pointers the processor can effectively
address only 64 KB of memory.
To access memory outside of 64 KB the CPU
uses special segment registers to specify
where the code, stack and data 64 KB
segments are positioned within 1 MB of
memory
24. 06/02/14 24
8086 Microprocessor
16-bit pointers and data are stored as:
address: low-order byte
address+1: high-order byte
32-bit addresses are stored in
"segment:offset" format as:
address: low-order byte of segment
address+1: high-order byte of segment
address+2: low-order byte of offset
address+3: high-order byte of offset
Physical memory address pointed by
segment:offset pair is calculated as:
address = (<segment> * 16) + <offset>
25. 06/02/14 25
8086 Memory
Program memory - program can be
located anywhere in memory.
Jump and call instructions can be used
for short jumps within currently
selected 64 KB code segment, as well
as for far jumps anywhere within 1 MB
of memory.
All conditional jump instructions can be
used to jump within approximately
+127 to -127 bytes from current
instruction.
26. 06/02/14 26
Memory-Cont’n
Data memory - the processor can access
data in any one out of 4 available segments,
which limits the size of accessible memory to
256 KB (if all four segments point to different
64 KB blocks).
Accessing data from the Data, Code, Stack or
Extra segments can be usually done by
prefixing instructions with the DS:, CS:, SS: or
ES:
Some registers and instructions by default
may use the ES or SS segments instead of DS
segment.
27. 06/02/14 27
Memory- cont’n
Word data can be located at odd or even byte
boundaries.
The processor uses two memory accesses to
read 16-bit word located at odd byte
boundaries. Reading word data from even byte
boundaries requires only one memory access.
Stack memory can be placed anywhere in
memory. The stack can be located at odd
memory addresses, but it is not recommended
for performance reasons.
28. 06/02/14 28
Reserved Locations
Reserved locations:
0000h - 03FFh are reserved for interrupt
vectors.
Each interrupt vector is a 32-bit pointer
in format segment:offset.
FFFF0h - FFFFFh - after RESET the
processor always starts program
execution at the FFFF0h address.
29. 06/02/14 29
Interrupts
The processor has the following interrupts:
INTR is a maskable hardware interrupt. The interrupt
can be enabled/disabled using STI/CLI instructions or
using more complicated method of updating the FLAGS
register with the help of the POPF instruction.
When an interrupt occurs, the processor stores FLAGS
register into stack, disables further interrupts, fetches
from the bus one byte representing interrupt type, and
jumps to interrupt processing routine address of which
is stored in location 4 * <interrupt type>.
Interrupt processing routine should return with the IRET
instruction
30. 06/02/14 30
Interrupts
NMI is a non-maskable interrupt. Interrupt is
processed in the same way as the INTR
interrupt.
Interrupt type of the NMI is 2, i.e. the address
of the NMI processing routine is stored in
location 0008h.
This interrupt has higher priority than the
maskable interrupt
31. 06/02/14 31
Software Interrupts
Software interrupts can be caused
by:
INT instruction - breakpoint interrupt. This
is a type 3 interrupt.
INT <interrupt number> instruction - any
one interrupt from available 256 interrupts.
INTO instruction - interrupt on overflow
Single-step interrupt - generated if the TF
flag is set. This is a type 1 interrupt.
32. 06/02/14 32
Software Interrupts
When the CPU processes this interrupt it
clears TF flag before calling the
interrupt processing routine.
Processor exceptions: divide error (type 0),
unused opcode (type 6) and escape opcode
(type 7).
Software interrupt processing is the
same as for the hardware interrupts.
I/O ports
65536 8-bit I/O ports. These ports can be also
addressed as 32768 16-bit I/O ports
33. 06/02/14 33
Registers
Most of the registers contain
data/instruction offsets within 64 KB
memory segment.
There are four different 64 KB segments
for instructions, stack, data and extra
data.
To specify where in 1 MB of processor
memory these 4 segments are located
the processor uses four segment
registers:
34. 06/02/14 34
Segment Registers
Code segment (CS) is a 16-bit register containing
address of 64 KB segment with processor instructions.
The processor uses CS segment for all accesses to
instructions referenced by instruction pointer (IP)
register. CS register cannot be changed directly. The CS
register is automatically updated during far jump, far
call and far return instructions.
Stack segment (SS) is a 16-bit register containing
address of 64KB segment with program stack. By
default, the processor assumes that all data referenced
by the stack pointer (SP) and base pointer (BP)
registers is located in the stack segment. SS register
can be changed directly using POP instruction.
35. 06/02/14 35
Segments
Data segment (DS) is a 16-bit register containing
address of 64KB segment with program data. By
default, the processor assumes that all data referenced
by general registers (AX, BX, CX, DX) and index
register (SI, DI) is located in the data segment. DS
register can be changed directly using POP and LDS
instructions.
Extra segment (ES) is a 16-bit register containing
address of 64KB segment, usually with program data.
By default, the processor assumes that the DI register
references the ES segment in string manipulation
instructions. ES register can be changed directly using
POP and LES instructions.
36. 06/02/14 36
Analysis-segments
It is possible to change default
segments used by general and
index registers by prefixing
instructions with a CS, SS, DS or
ES prefix.
All general registers of the 8086
microprocessor can be used for
arithmetic and logic operations.
37. 06/02/14 37
General Registers
Accumulator register consists of 2 8-bit
registers AL and AH, which can be combined
together and used as a 16-bit register AX. AL
in this, it case contains the low-order byte of
the word, and AH contains the high-order
byte.
Accumulator can be used for I/O operations
and string manipulation.
Base register consists of 2 8-bit registers BL
and BH, which can be combined together and
used as a 16-bit register BX. BL in this case
contains the low-order byte of the word, and
38. 06/02/14 38
General Registers-cont’n
contains the high-order byte. BX register usually
contains a data pointer used for based, based indexed
or register indirect addressing.
Count register consists of 2 8-bit registers CL and CH,
which can be combined together and used as a 16-bit
register CX.
When combined, CL register contains the low-order byte
of the word, and CH contains the high-order byte.
Count register can be used as a counter in string
manipulation and shift/rotate instructions.
39. 06/02/14 39
General Registers – Cont’n
Data register consists of 2 8-bit registers DL and
DH, which can be combined together and used as a
16-bit register DX.
When combined, DL register contains the low-order
byte of the word, and DH contains the high-order
byte.
Data register can be used as a port number in I/O
operations.
In integer 32-bit multiply and divide instruction the DX
register contains high-order word of the initial or
resulting number.
40. 06/02/14 40
Index Registers
Stack Pointer (SP) is a 16-bit register pointing to
program stack.
Base Pointer (BP) is a 16-bit register pointing to data
in stack segment. BP register is usually used for based,
based indexed or register indirect addressing.
Source Index (SI) is a 16-bit register. SI is used for
indexed, based indexed and register indirect
addressing, as well as a source data address in string
manipulation instructions.
Destination Index (DI) is a 16-bit register. DI is used
for indexed, based indexed and register indirect
addressing, as well as a destination data address in
string manipulation instructions.
41. 06/02/14 41
Other Registers
Instruction Pointer (IP) is
a 16-bit register.
Flags is a 16-bit register
containing 9 1-bit flags:
Overflow Flag (OF) - set if
the result is too large
positive number, or is too
small negative number to
fit into destination operand.
Direction Flag (DF) - if set
then string manipulation
instructions will auto-
decrement index registers.
If cleared then the index
registers will be auto-
incremented.
Interrupt-enable Flag (IF) -
setting this bit enables
maskable interrupts.
Single-step Flag (TF) - if set
then single-step interrupt
will occur after the next
instruction.
Sign Flag (SF) - set if the
most significant bit of the
result is set.
Zero Flag (ZF) - set if the
result is zero.
Auxiliary carry Flag (AF) -
set if there was a carry
from or borrow to bits 0-3
in the register.
42. 06/02/14 42
Parity Flag (PF) - set if parity (the
number of "1" bits) in the low-
order byte of the result is even.
Carry Flag (CF) - set if there was a
carry from or borrow to the most
significant bit during last result
calculation.
43. 06/02/14 43
Instruction Set-8086
8086 instruction set consists of the following
instructions:
Data moving instructions.
Arithmetic - add, subtract, increment, decrement, convert
byte/word and compare.
Logic - AND, OR, exclusive OR, shift/rotate and test.
String manipulation - load, store, move, compare and scan
for byte/word.
Control transfer - conditional, unconditional, call
subroutine and return from subroutine.
Input/Output instructions.
Other - setting/clearing flag bits, stack operations,
software interrupts, etc.
44. 06/02/14 44
Addressing Mode
Implied - the data value/data address is
implicitly associated with the instruction.
Register - references the data in a register or
in a register pair.
Immediate - the data is provided in the
instruction.
Direct - the instruction operand specifies the
memory address where data is located.
Register indirect - instruction specifies a
register containing an address, where data is
located. This addressing mode works with SI,
DI, BX and BP registers.
45. 06/02/14 45
Addressing Mode
Based - 8-bit or 16-bit instruction operand is added to the
contents of a base register (BX or BP), the resulting value is a
pointer to location where data resides.
Indexed - 8-bit or 16-bit instruction operand is added to the
contents of an index register (SI or DI), the resulting value is
a pointer to location where data resides.
Based Indexed - the contents of a base register (BX or BP)
is added to the contents of an index register (SI or DI), the
resulting value is a pointer to location where data resides.
Based Indexed with displacement - 8-bit or 16-bit
instruction operand is added to the contents of a base register
(BX or BP) and index register (SI or DI), the resulting value is
a pointer to location where data resides.