Все выпуски  

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


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

Лучшие эксперты в разделе

Kdsfofwe21
Статус: 1-й класс
Рейтинг: 260
∙ повысить рейтинг »
cain52
Статус: 1-й класс
Рейтинг: 3
∙ повысить рейтинг »
Коцюрбенко Алексей aka Жерар
Статус: Мастер-Эксперт
Рейтинг: 0
∙ повысить рейтинг »

∙ Assembler

Номер выпуска:1702
Дата выхода:15.08.2018, 00:15
Администратор рассылки:Лысков Игорь Витальевич (Старший модератор)
Подписчиков / экспертов:61 / 21
Вопросов / ответов:1 / 1

Консультация # 193466: Уважаемые эксперты! Пожалуйста, ответьте на вопрос: Доброго времени , вопрос такой. Когда я пользуюсь функцие mov ah,9 mov dx, offset String int 21 h<...

Консультация # 193466:

Уважаемые эксперты! Пожалуйста, ответьте на вопрос:

Доброго времени , вопрос такой. Когда я пользуюсь функцие mov ah,9
mov dx, offset String
int 21 h
то получается заношу функцию 9 с прерыванием 21 для выводы строки так? так вот если разбирать подробнее в COM программе изначально идет смещение 100 ORG которое записывается в регистры ip и cs, затем мы введя функцию заносим в регистр dx смещение, и прерыванием выводим слово , вопрос в том что если мы ввели дополнительно в регистр es доп число мы получается указываем не правильный адрес, почему?

Дата отправки: 10.08.2018, 00:12
Вопрос задал: mishgan (Х Заблокирован)
Всего ответов: 1
Страница онлайн-консультации »


Консультирует Зенченко Константин Николаевич (Модератор):

Здравствуйте, mishgan!

Ну у Вас тут два вопроса:
1)org 100h;
2)Функция int 21h | ah=9.

1:
COM-файлы это наследие первых РС, у которых ресурс объема памяти оперативной и жесткого диска был маленьким. Размер СОМ-файла не мог быть больше 65000 байт, 65536 байт(полный размер сегмента) - 256 байт(100h- размер стандартного заголовка, который подставляет сама система при запуске программы) - 256 байт(минимальный размер стека программы) = 65024 байт всего. С учетом такой экономии, файл занимал на диске всего 127 секторов(один сектор 512 байт) максимум. За счет отсутствия заголовка и стека экономился один сектор. Ограничения накладываемые на этот тип файлов, все сегментные регистры равны и указывают на один сегмент и программа по сути есть слепок памяти, который копируется в память с определенного адреса в сегменте(100h)-точки входа.
smile
ЕХЕ-файлы занимали больше места, их размер мог достигать 640кб, при этом заголовок самого файла занимал 512 байт(в определялось, сколько нужно сегментов, как они настраиваются и ещё много другого).

2:
Прерывание;

© Цитата: Ralf Brown's Interrupt List
Int 21/AH=09h -DOS 1+ - WRITE STRING TO STANDARD OUTPUT
AH = 09h
DS : DX -> '$'-terminated string

требует от программиста только три определенных регистра, другие регистры просто игнорируются, и ES в этом списке нет, т.е. он не влияет на результат работы прерывания.

Удачи!

Консультировал: Зенченко Константин Николаевич (Модератор)
Дата отправки: 10.08.2018, 10:34
Рейтинг ответа:

НЕ одобряю +1 одобряю!


Оценить выпуск | Задать вопрос экспертам

главная страница  |  стать участником  |  получить консультацию
техническая поддержка

Дорогой читатель!
Команда портала RFPRO.RU благодарит Вас за то, что Вы пользуетесь нашими услугами. Вы только что прочли очередной выпуск рассылки. Мы старались. Пожалуйста, оцените его. Если совет помог Вам, если Вам понравился ответ, Вы можете поблагодарить автора - для этого в каждом ответе есть специальные ссылки. Вы можете оставить отзыв о работе портале. Нам очень важно знать Ваше мнение. Вы можете поближе познакомиться с жизнью портала, посетив наш форум, почитав журнал, который издают наши эксперты. Если у Вас есть желание помочь людям, поделиться своими знаниями, Вы можете зарегистрироваться экспертом. Заходите - у нас интересно!
МЫ РАБОТАЕМ ДЛЯ ВАС!


В избранное