Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.03.2012, 09:33   #1
goluzov
Форумчанин
 
Регистрация: 26.06.2010
Сообщений: 168
По умолчанию адресация в реальном режиме

подскажите не могу понять

в реальном режиме адрес выставляется

сегмент * 16 + смещение

смещение понятно, а что 16 значит? и сегмент это номер сегмента?
goluzov вне форума Ответить с цитированием
Старый 24.03.2012, 10:31   #2
S1av0k
Пользователь
 
Регистрация: 26.11.2009
Сообщений: 87
По умолчанию

Какова разрядность смещения и сегмента? Вот для приведения к одной разрядности и нужно 16.
Помог - жми весы
S1av0k вне форума Ответить с цитированием
Старый 24.03.2012, 11:01   #3
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
Какова разрядность смещения и сегмента?
16 бит.

адресация составляет 20 бит, умножение на 16 есть смещение на 4 бита влево.
и получаем наши 20 бит по формуле.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 24.03.2012, 16:16   #4
goluzov
Форумчанин
 
Регистрация: 26.06.2010
Сообщений: 168
По умолчанию

16 нужна не для того чтобы приводить к разрядности, ведь так и так используется 20 бит как я понял.

если это 10 то будет 0x00010

каждая ячейка памяти использует 16 бит

Цитата:
0.............15
0.............15
0.............15
0.............15
0.............15
0.............15
0.............15
0.............15
....
получается 16 нужны для того чтобы каждый сегмент начинался с новой ячейки?
goluzov вне форума Ответить с цитированием
Старый 25.03.2012, 01:27   #5
S1av0k
Пользователь
 
Регистрация: 26.11.2009
Сообщений: 87
По умолчанию

Цитата:
16 нужна не для того чтобы приводить к разрядности, ведь так и так используется 20 бит как я понял.
Физический адрес - да, 20-разрядный. Но в 8086 регистры все 16-разрядные. Логический адрес состоит из 16-разрядных компонент: компоненты сегмента памяти и компоненты смещения внутри сегмента. Как из 16-разрядного сегмента и смещения сделать 20-разрядный адрес? Да, сегментная компонента умножается на 16 (для расширения до 20 разрядов), затем полученное число складывается с компонентой смещения.
Что вы имели в виду в предыдущем посте я не понял, честно говоря.
Помог - жми весы
S1av0k вне форума Ответить с цитированием
Старый 25.03.2012, 01:51   #6
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
получается 16 нужны для того чтобы каждый сегмент начинался с новой ячейки?
сегменты выровнены на границу 16 байт.

зачем так, спросите у интела.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
WP и адресация... Maksimall89 WordPress и другие CMS 1 10.01.2012 20:03
линейная адресация геннадий522 Visual C++ 1 16.12.2011 19:46
Пауза в реальном режиме Doholyan Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 10 20.12.2009 07:32
Адреса в реальном режиме codeok Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 3 21.11.2009 12:28
переброс данных из Excel в Delphi в реальном режиме времени Машутка Общие вопросы Delphi 3 27.09.2008 07:19