The memory capacity of the 8085 microprocessor is 64 kb because the address bus is 16 bits, and you can address 216, or 64kb, with a 16 bit address bus.
You can access any location in memory. You need only to load its segment address and then refer to its offset address, using the appropriate segment register.
In an 8085 system, the memory word size required is 8 bits. This means that each memory location can store 8 bits or one byte of data. The 8085 processor accesses memory locations using these 8-bit memory addresses to read or write data during program execution. The memory word size of 8 bits allows the 8085 system to handle data in small, manageable chunks efficiently.
In x86 family of CPUs, there are six memory models. Memory is managed in "chunks" (segment or page) of 64K words. To find a specific location, the CPU needs to know the segment it is in and how far down (the offset) it is from the beginning of the segment. In addition, the x86 CPUs support three types of pointers: * near pointers access data in the specified segment * far pointers can access data within a 1MB address space * huge pointers are a type of far pointer, but with specialized behavior So applications written for the x86 world had to specify a type of memory model which detailed how pointers work. Generally speaking, the rules are: If code is under 64KB... and data is under 64KB... use Tiny or Small model If code is over 64KB... and data is under 64KB... use Medium model If code is under 64KB... and data is over 64KB... use Compact model If code is over 64KB... and data is over 64KB... use Large model
Because the offset address is 16 bits. This allows you to access 64kb with only one instruction.
The extra segment in the 8086/8088 is a 64kb region of memory that is indexed by the displacement address of the destination of certain string operations, relative to DI. Contrast that with the data segment, which is a 64kb region of memory that is indexed by the displacment address of the displacement of most operand addresses. The stack segment is similar, but it is used for stack oriented data, relative to SP or BP.
The 8086 can address 1,114,080 bytes. (One Mb + 64Kb - 16) That does not count I/O space, it only counts memory space.
This is due to the fact that 16bits would only address 64KB of memory, which even then was very little. The answer for this was to come up with an extra 4 bits to address the total 1MB, this is done trough segmentation of the memory. Google it.
The 8085 microprocessor is an 8-bit processor with a 16-bit address bus. This means it can access a maximum of 64 KB (2^16) of memory. The 8085 can address memory locations from 0000H to FFFFH, totaling 64 KB of memory space. This limitation is due to the 16-bit address bus, which can only address up to 64 KB of memory.
You cannot address 1GB memory with the 8085 or the 8086/8088 without some kind of external demultiplexor that is software controlled. The address bus on the 8085 is 16 bits, giving addressibility of 64KB; while the address bus on the 8086/8088 is 20 bits, giving addressibility of 1MB. To address 1GB, you need a 30 bit address bus.
The data bus in the 8086 is 16 bits in size, while the address bus is 20 (16bits would only address 64KB of memory, an extra 4 bits allows to address the total of 1MB, this is done trough segmentation of the memory). To form a multiplexed of data bus and address bus, four bits of 8086 address bus are grounded.
The 8086/8088 is a 16 bit computer running on a 20 bit address bus. Processes use a segmented memory architecture to access one of four 64kb memory segments from a physical space of 1mb.