![]() |
|
|
![]()
|
|
| Sail Destiny |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 8 Регистрация: 7.7.2002 Репутация: нет Всего: нет |
Каждый раз, когда пишу строки
mov ax,datseg mov ds,ax не совсем понимаю смысл первой Что в машинном коде из себя представляет "datseg": это операнд в памяти или непосредственный операнд? Если непосредственный, то откуда асм знает, с какого параграфа физически дос разместит сегмент данных? Если это операнд в памяти, тогда, что ли есть какой-то _стандартный_ адрес, по которому после загрузки дос передает адреса всех сегментов? Или как? P.S. А не этот ли процесс называют "настройка адресов"? |
|||
|
||||
| Chingachguk |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1232 Регистрация: 25.3.2002 Где: Москва Репутация: нет Всего: 18 |
Конечно, это непосредственный операнд. Программа типа *.exe является перемещаемой (те не жестко привязанной к памяти) - в том смысле, что ее можно (что и делает дос) загружать начиная с любого сегмента. Чем это достигается ? Подразумевается, что есть некий набор сегментов seg1,seg2...segN. Компиллятор, естественно, не знает где в памяти окажется seg1, Но знает относительный адрес seg2 относительно seg1... segN относительно seg1. Так что команда mov ax, seg MySeg в исполнимом файле выглядит как mov ax, относительный адрес сегмента MySeg. При загрузке дос модифицирует эту команду - подставляет реальный адрес сегмента.
Все это можно наглядно увидеть, если скомпиллировать простой exe с такой командой. Сначала посмотреть, что находится в файле, а потом - запустить программу в отладчике и посмотреть, как изменилась эта команда. Таблица настройки адресов дает сведения дос о числе и свойствах сегментов. -------------------- I don't like the drugs (but the drugs like me). M.Manson. |
|||
|
||||
![]()
|
| Правила форума "Asm: Общие вопросы" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Asm: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |