Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 6 328

Раздел: Ассемблер
/ вопрос решён /

Здравствуйте! Имею в своей программе предложение:

MOV DX, [Mes_db]

после компиляции, транслятор заменил имя переменной Mes_db на адрес 02F1h.
Вопрос: но ведь для формирования адреса в DOS еще нужна и сегментная часть! Как команды вроде MOV DX,[имя_переменной] узнают относительно какого сегмента ведется отсчет? Очень рассчитываю на Вашу помощь, спасибо!

Phantom Вопрос решён, но можно продолжить его обсуждение в мини-форуме

Вопрос задал: Phantom (статус: Посетитель)
Вопрос отправлен: 7 декабря 2012, 11:37
Состояние вопроса: решён, ответов: 0.


Мини-форум вопроса

Всего сообщений: 4; последнее сообщение — 16 декабря 2012, 16:13; участников в обсуждении: 2.
Drinkenz

Drinkenz (статус: 1-ый класс), 8 декабря 2012, 10:04 [#1]:

По умолчанию используются сегменты CS для кода DS для данных SS для стека, однако команды процессора, обращающиеся к памяти, могут в качестве первого байта своего кода содержать префикс замены сегмента, с помощью которого процессор определяет, из какого сегментного регистра взять сегментный адрес. Для сегментного регистра ES код префикса составляет 26h, для SS - 36h, для CS - 2Eh, для FS - 64h, GS - 65h. Если префикс отсутствует, сегментный адрес берется из регистра DS (хотя для него тоже предусмотрен свой префикс - 3Eh).
Если в начале программы с помощью директивы assume указано соответствие сегменту данных сегментного регистра DS

assume DS:data

то команды обращения к памяти транслируются без какого-либо префикса, а процессор при выполнении этих команд берет сегментный адрес из регистра DS.
Если в директиве assume указано соответствие сегмента данных регистру ES

assume ES:data
Phantom

Phantom (статус: Посетитель), 8 декабря 2012, 15:03 [#2]:

Благодарю за ответ в столь развернутой форме:) Т.е. предложения в которых встречается обращение к памяти, по умолчанию работают с сегментным регистром DS?
Drinkenz

Drinkenz (статус: 1-ый класс), 12 декабря 2012, 19:49 [#3]:

да
Phantom

Phantom (статус: Посетитель), 16 декабря 2012, 16:13 [#4]:

спасибо

18 марта 2013, 21:26: Статус вопроса изменён на решённый (изменил модератор Ерёмин А.А.)

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:41
Выполнено за 0.02 сек.