<p>I decided to teach myself assembly language.</p>

<p>I have realized that my program will not compile if I attempt to change the value of any segment register.</p>

<p>Every article that I have found says that I can indeed change the value of at least 4 segment registers, so what gives?  </p>

<p>I am really only interested in the why at this point, I don't have any real purpose in changing these addresses.</p>

Are you writing windows executables?
In protected-mode (Win32), segment registers are not used any more.
Reference
:
Memory model is also drastically
  different from the old days of the
  16-bit world. Under Win32, we need not
  be concerned with memory model or
  segment anymore! There's only one
  memory model: Flat memory model.
  There's no more 64K segments. The
  memory is a large continuous space of
  4 GB. That also means you don't have
  to play with segment registers. You
  can use any segment register to
  address any point in the memory space.
  That's a GREAT help to programmers.
  This is what makes Win32 assembly
  programming as easy as C.