\documentstyle[art11,fullpage]{article}
\title{X}
\author{}
\date{\today}
%\input{abbrev.tex}
\input{comm}

\begin{document}

{\Huge

\fbox{Some Background on the Processor family}
\bi
\item IBM 8086, 8088, 80x86
\item Memory Map of the XT series
\item 20-bit addresses, how many addresses?
\item \(00000  \rightarrow FFFFF \)
\item 1Mbytes of memory divided into 64K blocks
\item How many such blocks are there?
	\bi
	\item All blocks above 9FFFF used by system
	\item[] How many such blocks are there?
	\item Last block is System ROM (ROM BIOS)
	\item[] ROM = {\bf R}ead {\bf O}nly {\bf M}emory {\LARGE (permanent)}
	\item[] RAM = {\bf R}andom {\bf A}ccess {\bf M}emory {\LARGE (volatile,
		non-permanent) }
	\item[] BIOS = Basic Input Output Routines
	\item Lowest $400_h$ bytes of memory: interrupt vector table
	\item[] Each INT vector address requires 4 bytes, how many handlers? 
	\ei
\ei

\newpage

\bi
\item[]
\item[]
\item Next $200_h$ bytes for BIOS data buffers
\item Next, MS-DOS uses up memory (depends  on version of MS-DOS)
\item[] One item to note is that command.com, the user-interface  and
housekeeper, is split into two parts
	\be
	\item Resident portion (small)
	\item Transient portion (larger)
	\ee
\item[] The transient portion is not necessary when a user program is running
and can be overwritten. It may have to be re-loaded from disk when the
user program ends
\ei

\newpage

\fbox{{\bf Segmentation}} 
\bi
\item Memory address access/manipulation is a fundamental processor operation.
\item It must be speeded up as much as possible
\item Registers have very, very fast response times
\item[$\leadsto$] Store Memory addresses in registers as much as possible
\item Problem:
	\be
	\item Registers are 16 bits or 2 bytes 
	\item Memory addresses are 20 bits wide
	\ee
\item Solution:
	\bi
	\item Could use 2 registers, but that  would give us $2^{32}$
addresses; far more than are possible ($2^{20}$)
	\item Intel's address calculation is a little bizarre but very easy to
calculate (for us and for the computer)
	\ei
\ei

\newpage

\fbox{Address Calculation}
\bi
\item Intel does break up the address into two pieces (stored in two registers)
	\be
	\item 	Segment
	\item	Offset
	\ee
\item Rule
	\bi
	\item[] To calculate an address given its {\em segment} and {\em
offset}, multiply the segment by $16_{10}$ and add the offset.
	\ei
\item[] This is the Intel Segmentation Scheme
\item Easy to calculate:
	\be
	\item In binary, simply append 4 zeros to segment and add offset
	\item In Hex, Even more simply, append a single zero and add offset
	\ee
\item In Intels's 8086/80286 Scheme, two 16 bit numbers team up to form a 20
bit address 
\ei

\newpage

\fbox{Four Segments that matter}
\bi
\item Segments are ranges of memory that spread across the 1Mbyte address
space. Maximum length of a segment is 64Kbytes 
	\be
	\item Segment A = 40000 to 4FFFF
	\item Segment B = 7A000 to 82741
	\item Segment C = 1C400 to 28880
	\item Segment D = 17000 to 1FF00
	\item Segment E = 1C400 to 28880
	\ee
\item[] {\bf Paragraphs:} Segment Addresses must be divisible by 16: Last digit
of a segment's 16bit hex address must be 0. That is, Segments must start at
paragraph boundaries.
\ei


}  % end HUGE
\end{document}
