@Hammer
>>To specify an
address you use a 16 bit base register and a 16 bit offset to form a 20 bit physical address (recalling the hack)
Sort of. You want to be specific then we have to get specific.
It's called a bit shift. 8088 do what we call RMA Real Mode Addressing.
In real mode, each segment register (which is 16 bits in length) is internaly named whit a 0h on its rightmost end shifting it (the segment) left by 4 bits.
This segment and it's ofset are then added to form a 20 bit memory address.
This would limit CPUs to 1MB of memory space, even if the CPU was a 80486 CPU!
This is most clearly NOT nor is it reffered to be a 16 bit cpu.
80286 and later are further extended with their memory addressing capabilities by changing the function the CPU uses to convert a logical address to the linear address.
They commonly use what is known as a lookup table to compute the physical address.
This is also commonly know as Protected Mode Memory Addressing.
Basicly a segment value is used as an index into an array. A description table or look up table.
The contents of the selected array provides the starting address for the segment and then the cpu adds this value to the offset to obtain the physical address.
Anyway, all of this is irrelevent. I'm not dissagreeing with your above statement, but your not addressing the original argument.
The point is, that the article in question here stated that 16 bit processors accessed 1 MB of memory, which is not really correct. Even your own statements above confirm this. A true 16 bit CPU using the constraignts of 16 bit memory adressing would be far more limited than the 1MB constraint.
Here is a little intro into the memory addressing teqniques and their labled address widths etc..
http://courses.ece.uiuc.edu/ece291/lecture%5CSpring2004%5CLecture2.pdf