Segment Registers

advertisement
CEN 226: Computer Organization
&
Assembly Language :CSC 225
(Lec#3)
By
Dr. Syed Noman
2
Basic Programming Model- 8086 CPU
Internal Organization
3
Registers
• The 8086 microprocessor has a total of fourteen registers that are accessible to
the programmer.
• Eight of the registers are known as general purpose registers i.e. they can be used
by the programmer for data manipulation.
• Each of the registers is 16 bits long i.e. can contain a 16-bit binary number.
• The first four registers are sometimes referred to as data registers. They are the ax,
bx, cx and dx registers.
• The second four are referred to as index/pointer registers. They are the sp, bp, si
and di registers.
• The data registers can be treated as 16-bit registers or they can each be treated as two
8-bit registers. Each 8-bit register can be used independently.
• The ax register may be accessed as ah and al (H and L refer to high-order
and low-order bytes).
▫
Similarly
 bx may be accessed as bh, bl
 cx may be accessed as ch, cl
 dx may be accessed as dh, dl
4
General-Purpose Registers
• 8086 CPU has 8 general purpose registers; each register
has its own name:
• AX - the accumulator register (divided into AH /
AL).
• BX - the base address register (divided into BH /
BL).
• CX - the count register (divided into CH / CL).
• DX - the data register (divided into DH / DL).
• SI - source index register.
• DI - destination index register.
• BP - base pointer.
• SP - stack pointer
5
8086 CPU Broad Division
• 8086C CPU can be broadly divided into two separated
groups:
• 1. Execution Unit (EU): The Execution Unit executes all
instructions. An execution unit is a part of a CPU that
performs the operations and calculations called for by
the program. Execution Unit (EU) contains Arithmetic
Logic Unit, which is a core component of all CPUs. ALUs
are capable of calculating the results of a wide variety of
basic arithmetical computations.
• 2. Bus Interface Unit (BIU): It is the part of the
processor that interfaces with the rest of the PC. The BIU
provides various functions, including generation of the
memory and I/O addresses for the transfer of data
between outside the CPU, and the EU.
6
8086 CPU Broad Division
7
8086 CPU Internal Architecture
8
Model Description
• The EU receives program instruction codes and data from the BIU, executes
these instructions, and store the results in the general registers. By passing
the data back to the BIU, data can also be stored in a memory location or
written to an output device. Note that the EU has no connection to the
system buses. It receives and outputs all its data through the BIU.
• BIU Elements:
• Instruction Queue: the next instructions or data can be fetched from
memory while the processor is executing the current instruction. The
memory interface is slower than the processor execution time so this speeds
up overall performance
• Segment Registers:
▫
▫
▫
▫
CS, DS, SS and ES are 16b registers.
Used with the 16b Base registers to generate the 20b address.
Allow the 8086/8088 to address 1MB of memory.
Changed under program control to point to different segments as a program
executes.
9
Model Description
• Instruction Pointer (IP) contains the Offset Address of the
next instruction, the distance in bytes from the address given
by the current CS register.
• CPU will perform the operations into the execution unit,
next, it decodes and interprets instruction to perform
calculations, and then send to Arithmetic Logic Unit
(ALU) that is capable of calculating the results of a wide
variety of basic arithmetical computations. When it is
finished, ALU will be connected to a set of inputs and a set of
outputs through Bus Interface that is the part of the processor
that interfaces with the rest of the PC.
• The fundamental operation of CPU will operate in memory
unit all the times. Moreover, CPU also executes instructions to
read data from input devices and then writes back to output
devices
10
Intel 8086/8088 Microprocessor
• 8086 is a 16-bit processor – because the size of
the “accumulator” register, AX, is 16 bits.
• Has 20 address pins (16 multiplexed with data) –
because address and data cannot be travelled at the
same time. When address is generated it is latched
and then after control bus, data is travelled.
• Can address a max. of 2^20 = 1,048,576 = 1
Million locations
• Address ranges from 00000H to FFFFFH
• Memory is byte addressable - Every byte has a
separate address.
11
Segment and Segment Registers
12
Segment Registers
• Segment Registers
• CS - points at the segment containing the current program.
• DS - generally points at segment where variables are
defined.
• ES - extra segment register, it's up to a coder to define its
usage.
• SS - points at the segment containing the stack.
• Although it is possible to store any data in the segment registers,
this is never a good idea. The segment registers have a very special
purpose - pointing at accessible blocks of memory.
• Segment registers work together with general purpose register to
access any memory value. For example if we would like to access
memory at the physical address 12345h (hexadecimal), we
should set the DS = 1230h and SI = 0045h. This is good,
since this way we can access much more memory than with a
single register that is limited to 16 bit values.
13
Address Calculation
CPU makes a calculation of physical address by multiplying the segment
register by 10h and adding general purpose register to it (1230h * 10h + 45h
= 12345h):
The address formed with 2 registers is called an effective address. By
default
• BX, SI and DI registers work with DS segment register;
• BP and SP work with SS segment register.
• Other general purpose registers cannot form an effective address!
• Also, although BX can form an effective address, BH and BL
cannot.
14
8086 Address Calculation
• The logical address A4FB:4872h means offset 4872h
within segment A4FBh, that is, the segment starting at
physical address A4FB0h. To obtain the corresponding 20bit physical (i.e., absolute) address, the 8086/8088
microprocessor first shifts the segment base address 4 bits
to the left (this is equivalent to multiplying by 10H), and
then adds the offset. Thus the physical address for
A4FB:4872h is:
15
8086 Address Calculation
16
8086 Address Calculation
Download