My teacher has given me the question to differentiate the maximum memory space of 1MB and 4GB microprocessor. Does anyone know how to answer this question apart from size mentioned difference ? https://i.stack.imgur.com/Q4Ih7.png
-
Real-mode segments overlap, they're only 16 bytes apart but are 64KiB long. – Peter Cordes Nov 16 '22 at 08:21
-
"the difference in memory space between 1MB and 4GB in 8086/88" is illogical, because the 8086/88 never supported 4GB. It is like "the difference in wheels between 4-wheeled and 16-wheeled Tesla model 3": there is no such thing as a 16-wheeled Tesla model 3. – Mike Nakis Nov 16 '22 at 10:16
1 Answers
A 32-bit microprocessor can address up to 4 GB of memory, because its registers can contain an address that is 32 bits in size. (A 32-bit number ranges from 0 to 4,294,967,295). Each of those values can represent a unique memory location.
The 16-bit 8086, on the other hand, has 16-bit registers which only range from 0 to 65,535. However, the 8086 has a trick up its sleeve- it can use memory segments to increase this range up to one megabyte (20 bits). There are segment registers whose values are automatically bit-shifted left by 4 then added to the regular registers to form the final address.
For example, let's look at video mode 13h
on the 8086. This is the 256-color VGA standard with a resolution of 320x200 pixels. Each pixel is represented by a single byte and the desired color is stored in that byte. The video memory is located at address 0xA0000
, but since this value is greater than 16 bits, typically the programmer will load 0xA000
into a segment register like ds
or es
, then load 0000
into si
or di
. Once that is done, the program can read from [ds:si]
and write to [es:di]
to access the video memory. It's important to keep in mind that with this memory addressing scheme, not all combinations of segment and offset represent a unique memory location. Having es = A100/di = 0000
is the same as es=A000/di=1000
.

- 1,598
- 2
- 15