Как 16-битные данные хранятся в 20-битном адресе в процессоре Intel 8086? - PullRequest
0 голосов
/ 22 сентября 2018

В Intel 8086 , у нас есть 20 бит адресная шина, поэтому у нас есть 2 ^ (20) местоположений.
Я не понимаю, как эти 16-битные данные хранятся в 20-битном адресе.

Пример:

Если я хочу сохранить2 в сначала ячейка памяти, затем мой адрес будет
00000000000000000001 ( 20 бит ) и данные в нем будут:
00000000000000010 ( 16 бит ).

Это так или я что-то упустил?

Спасибо.

1 Ответ

0 голосов
/ 22 сентября 2018

Каждый 20-битный слот физического адреса содержит один 8-битный байт.16-разрядное слово занимает 2 последовательных адресных слота.

Физические адреса (в исходном коде 8086) имеют ширину 20 бит, данные имеют ширину (до) 16 бит.

8086 действительно имеет 16-битную шину данных, в то время как 8088 имеет 8-битную шину данных и требует 2 цикла для передачи слова, но большая часть остальной части чипа идентична 8086 вплоть до схемы транзистора.

Ширина адреса и ширина данных не должны быть связаны каким-либо определенным образом.


20-разрядные линейные адреса не хранятся в виде данных в памяти .Указатель, хранящийся в памяти, обычно представляет собой 32-битную пару segment:offset.

Вы можете сжать указатель до 3 байтов, нормализуя значение сегмента, так что требуется только 4-битное смещение, или любое другоеметод устранения некоторой избыточности, вызванной вычислением адреса в реальном режиме seg<<4 + offset.

...