Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Ассемблер? Это просто! Учимся программировать


Новое направление Портала RusFAQ.ru:
MosHoster.ru - Профессиональный хостинг

РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Assembler (Ассемблер)

Выпуск № 1038
от 10.07.2008, 07:35

Администратор:Калашников О.А.
В рассылке:Подписчиков: 325, Экспертов: 0
В номере:Вопросов: 3, Ответов: 5

Нам важно Ваше мнение об этой рассылке.
Оценить этот выпуск рассылки >>


Вопрос № 139200: что происходит при выполнении команд mov ax, @data mov ds, ax ведь при загрузке программы ds установлен на начало psp. и для его (ds) использования выполняется загрузка ds значением сегмента данных. а как инициализируется @data? и во...
Вопрос № 139233: Здравствуйте, Уважаемые эксперты! Пожалуйста, покажите, как перевести шестнадцатеричное число в десятичное на ассемблере? Спасибо!:-) ...
Вопрос № 139563: Здравствуйте, у меня такой вопрос: как запретить DOS и Windows запретить удаление файлов с текущего диска(если таковым является D: ). Написал резидент, в котором перехватываю функцию 41h 21 прерывания. Работает нормально для "моих&qu...

Вопрос № 139.200
что происходит при выполнении команд
mov ax, @data
mov ds, ax
ведь при загрузке программы ds установлен на начало psp. и для его (ds) использования выполняется загрузка ds значением сегмента данных.
а как инициализируется @data? и вообще, что хранится в @data?
Отправлен: 05.06.2008, 18:23
Вопрос задал: Коцуба Валерий Викторович
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Зенченко Константин Николаевич
Здравствуйте, Коцуба Валерий Викторович!

При запуске ЕХЕ-программы, системный загрузчик считывает заголовок программы, выделяет нужную память для программы, ещё из заголовка считывается число элементов таблицы настройки (слово по адресу 0006Н, в файле) и относительный адрес первого элемента таблицы настройки в файле(слово по адресу 0018Н) и только после этого формирует префикс программы или PSP(вот поэтому и такое значение регитсров DS и ES). Ситемный загрузчик не знает сколько сегментов будет использовать программа и что куда загружать. Вот для этого и служит эта таблица, в ней указываются смещение в файле для первого байта каждого сегмента и его длина, а также куда нужно записать выделенные загрузчиком фактические адреса сегментов (вместо @data). Эту таблицу формирует компилятор.
Инициализируется только во время загрузки программы для выполнения.
Что хранится там не имеет значения, т.к. его перезаписывают при загрузке.
Удачи!
---------
И только наступив на грабли мы приобретаем драгоценный опыт!
Ответ отправил: Зенченко Константин Николаевич (статус: Профессор)
Украина, Киев
Тел.: +380958380164
Адрес: Украина г.Киев
----
Ответ отправлен: 05.06.2008, 21:49

Отвечает: Лысков Игорь Витальевич
Здравствуйте, Коцуба Валерий Викторович!
Добавлю:
В момент загрузки DS, действительно, равен PSP
Но, если программа не в модели TINY, то адрес сегмента данных не совпадает с
PSP, и для нормальной работы такой программы необходимо загрузить адрес
сегмента данных в регистр DS.
В модели TINY сегмент PSP, данных и кода, действительно, совпадают
---------
Удачи!
Ответ отправил: Лысков Игорь Витальевич (статус: Специалист)
Ответ отправлен: 06.06.2008, 09:32


Вопрос № 139.233
Здравствуйте, Уважаемые эксперты!
Пожалуйста, покажите, как перевести шестнадцатеричное число в десятичное на ассемблере?
Спасибо!:-)
Отправлен: 05.06.2008, 22:16
Вопрос задала: Alena De Lon (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Airyashov
Здравствуйте, Alena De Lon!
делить последовательно на 10 и брать отстаток от деления на каждом шаге, пока целая часть не 0.
Ответ отправил: Airyashov (статус: 6-ой класс)
Ответ отправлен: 06.06.2008, 09:49

Отвечает: Лысков Игорь Витальевич
Здравствуйте, Alena De Lon!
Например, так, как в программе в приложении

Приложение:

---------
Удачи!

Ответ отправил: Лысков Игорь Витальевич (статус: Специалист)
Ответ отправлен: 06.06.2008, 10:42


Вопрос № 139.563
Здравствуйте, у меня такой вопрос:
как запретить DOS и Windows запретить удаление файлов с текущего диска(если таковым является D: ).
Написал резидент, в котором перехватываю функцию 41h 21 прерывания.
Работает нормально для "моих" программ (которые непосредственно используют 41h), а вот для дос и виндоус не работает.

Приложение:

Отправлен: 08.06.2008, 16:25
Вопрос задал: Abramov_evgenii
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Zetasm
Здравствуйте, Abramov_evgenii!

Можно перехватывать вызов функции win32 API DeleteFile, но это будет довольно слабая защита. Более надежной будет написание драйвера-фильтра.

Приложение:

Ответ отправил: Zetasm (статус: 2-ой класс)
Ответ отправлен: 08.06.2008, 19:25


Вы имеете возможность оценить этот выпуск рассылки.
Нам очень важно Ваше мнение!
Оценить этот выпуск рассылки >>

Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2008, Портал RusFAQ.ru, Россия, Москва.
Авторское право: ООО "Мастер-Эксперт Про"
Техподдержка портала, тел.: +7 (926) 535-23-31
Хостинг: "Московский хостер"
Поддержка: "Московский дизайнер"
Авторские права | Реклама на портале

∙ Версия системы: 4.99 RC 5.0 от 08.07.2008

Яндекс Rambler's Top100
RusFAQ.ru | MosHoster.ru | MosDesigner.ru | RusIRC.ru
Kalashnikoff.ru | RadioLeader.ru | RusFUCK.ru

В избранное