?
Solved

Far pointers

Posted on 2000-04-15
5
Medium Priority
?
199 Views
Last Modified: 2011-09-20
A processor with 20 bit address line can address upto 1 mb where as its Register is 16 bit which means it can have address upto 2tothepower16 bytes .How can the 1mb RAM be addresed by the Register ?
0
Comment
Question by:r_sam_14
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 3
  • 2
5 Comments
 

Author Comment

by:r_sam_14
ID: 2719113
The discussion can revole arround Segment:offset and explain what is segment:offset .
0
 
LVL 22

Accepted Solution

by:
nietod earned 100 total points
ID: 2719157
The segment value and the offset value are botyh 16 bits.  They are mathematically combined to generate a 20 bit address.  To be preceise the address generated is Segment*16+Offset.  Or if you prefere Segment << 4 + offset.  Where that << 4 shifts the segment left 4 bits so its most significant bit is now the high bit of the 20 bit address.
0
 
LVL 22

Expert Comment

by:nietod
ID: 2719162
So a 16 bit register cannot be used to acccess all of 1M of ram, not by itself.  It must use a segment register to.  for any parituclar vlaue in a segment register, the 16 bit pointer register can access any value within a 64K "window".  By addjusting the segment register, you can move the "window" about in memory and thus address every byte in 1M.

Let me know if you have any questions.
0
 

Author Comment

by:r_sam_14
ID: 2720018
nietod

     Kindly explain me what is segement:offset is ? explain it with example ?
0
 
LVL 22

Expert Comment

by:nietod
ID: 2720312
In a segmented architecture addresses are (ultimately) specified using two numerical values.  A segment and an offset.  The actual address used when accessing memory is determined by a mathematical formula using these to values.  In the x86 family the formula is segment*16+offset.  That generates an address, a number, that is the memory location to be accessed.  This formula can generate numbers that are larger than either the segment or offset value.  So it can be used to access memory that is at a higher address than could be addressed if only one value (and no formula) was used.   Thus it can be used to access a larger memory space.

I'm not sure how to give you an example.  Does that help?
0

Featured Post

Independent Software Vendors: We Want Your Opinion

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Introduction This article is a continuation of the C/C++ Visual Studio Express debugger series. Part 1 provided a quick start guide in using the debugger. Part 2 focused on additional topics in breakpoints. As your assignments become a little more …
Go is an acronym of golang, is a programming language developed Google in 2007. Go is a new language that is mostly in the C family, with significant input from Pascal/Modula/Oberon family. Hence Go arisen as low-level language with fast compilation…
The goal of the tutorial is to teach the user how to use functions in C++. The video will cover how to define functions, how to call functions and how to create functions prototypes. Microsoft Visual C++ 2010 Express will be used as a text editor an…
The viewer will be introduced to the technique of using vectors in C++. The video will cover how to define a vector, store values in the vector and retrieve data from the values stored in the vector.

762 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question