Microprocessor and Microcontroller Assignment: Physical Address Generation 8086
Microprocessor and Microcontroller Assignment: Physical Address Generation 8086
Microprocessor and Microcontroller Assignment: Physical Address Generation 8086
ASSIGNMENT
Physical address
generation
8086
Physical address
Data segment register (DS): points to the data segment of the memory where the
data is stored.
The process of combination is as follows: The content of the segment register is internally
appended with 0 H (0000 H) on its rightmost end to form a 20-bit memory address—this
20-bit address points to the start of the segment. The offset is then added to the above to
get the physical address.
Example
The value of Data Segment Register
(DS) is 2222 H.
To convert this 16-bit address into 20-bit,
the BIU appends
0H to the LSBs of the
address.
After appending, the starting address of
the Data Segment becomes 22220H.
The value of Data Segment Register
(DS) is 2222 H.
To convert this 16-bit address into 20-bit,
the BIU appends 0H to the LSBs of the
address.
After appending, the starting address of
the Data Segment becomes 22220H.
Contd.
To calculate the effective address of the
memory, BIU uses the following formula:
Effective Address = Starting Address of
Segment + Offset
To find the starting address of the segment,
BIU appends the contents of Segment
Register with 0H.
Then, it adds offset to it.
Conversion of 16 bit logical to 20bit
physical
With a little hardware help - what is a called a ‘memory management unit’
(MMU) or a mapping unit. This is a common problem on processor such a PDP-
11 or the original 8080 which only had 16-bits of address space. A mapping unit
is added in your case you said you had 20-bits of physical address space, which
means you have 16 ‘chunks’ of 16-bit address if the largest ‘chunks’ are chosen.
The trick is the upper bits of the address are supplied by the mapping hardware.
When you create an address with a memory fetch, the upper N bits stripped off
and directed into the mapper (MMU) and replaced with bits stored there. So
instead of 16 bits you have 20 bits in your case