In the book it is given that:

"to identify the I/O devices these devices can be interfaced using address from memory space: MEMORY-MAPPED I/O. Another option is to have a separate numbering (addressing) scheme for I/O devices. The 8085 has separate 8-bit addressing scheme: PERIPHERAL-MAPPED I/O."

When the 8085 microprocessor has fixed 64kB of memory which it uses for addressing the different memory locations then how it can share that memory with the I/O address (i.e., for any external peripheral) in memory mapped and how can it use "separate 8-bit addressing scheme" when it has fixed memory in it.

I am unable to understand this. If anyone knows this please explain this in detail or tell me where it is explained in detail.

  • \$\begingroup\$ It is relatively easy to support multiple address spaces. A processor puts out a signal which identifies the address space it is using for that external address/data access. The other signals, such as address and data, can be reused. \$\endgroup\$
    – gbulmer
    Commented Sep 19, 2014 at 6:25
  • \$\begingroup\$ To further gbulmer's comment, the program does different things addressing memory vs. I/O. I don't remember the 8085 specifically, but I believe there are different instructions for memory access and I/O access. \$\endgroup\$
    – DoxyLover
    Commented Sep 19, 2014 at 6:40
  • \$\begingroup\$ 8085 instructions IN (0xDB) and OUT (0xD3) read and write the I/O address space. \$\endgroup\$
    – MarkU
    Commented Sep 19, 2014 at 6:57

2 Answers 2


The 8085 has different instructions for accessing main memory and I/O 'memory'. In addition to the standard memory interface pins the 8085 also provides a pin that identifies whether a memory access cycle is accessing main or I/O. This extra line is used in the select logic of both main and I/O 'memory'.

But there is no law that I/O can only be accessed by I/O instructions: in a small system the highest address line could be used to distinguish between memory (a15=0) and I/O (a15=1), so we get 32Kb for real memory (ROM and RAM) and 32 Kb for I/O.

Note that it is even possible to use the I/O addresses to access RAM, but that is less useful because there are only 256 I/O addresses and the addressing modes available for these addresses are very limited.

  • \$\begingroup\$ Does the microprocessor literally has 64kB of memory that can be accessed by the user ? or it saves some of the memory (for peripheral to be connected). \$\endgroup\$ Commented Sep 19, 2014 at 16:55
  • \$\begingroup\$ All of the operations described are accessed via 8085 program instructions. You can "ask" for any memory or I/O location you want. The hardware design dictates whether you'll find anything there when you access it. \$\endgroup\$
    – gbarry
    Commented Sep 19, 2014 at 17:41
  • \$\begingroup\$ @Shivam the up does not 'have' any memory, it can address 2^16 bytes of rom/ram/io, plus 2^8 bytes of io. How you divide that 2^16 over ROM, RAM and IO is up to the hardware designer. The chip doesn't care. \$\endgroup\$ Commented Sep 19, 2014 at 18:33
  • \$\begingroup\$ It is perhaps worth mentioning that in the days of the 8085, memory was not inexpensve - quite the opposite and systems with 64K of memory were not that common. \$\endgroup\$ Commented Feb 16, 2020 at 16:25

Memory mapped :memory mapped is 16 bit address provide for I/o devices &control signals are MEMR and MEMW. data transfer is any registered and I/O. memory related instruction -ex :STA, CDA, MOV

  • 1
    \$\begingroup\$ Please re-write this answer more clearly. As it is written now, your answer is illegible. \$\endgroup\$ Commented Feb 1, 2016 at 16:26

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.