Напишите в кодах 32-разрядного процессора программу, которая заполнит десять ячеек памяти, начиная с адреса. massiv, числами от 10 до 1
161
289
Ответы на вопрос:
Как уже отмечалось, при разработке 16-разрядных программ реального режима, предназначенных для выполнения по операционной системы ms-dos, вполне допустимо использование ряда дополнительных возможностей 32-разрядных процессоров. в реальном режиме можно использовать: 32-разрядные операнды; дополнительные команды и расширенные возможности команд мп 86; дополнительные режимы адресации; четыре сегментных регистра для адресации данных вместо двух. для того, чтобы транслятор распознавал все эти средства, необходимо начать программу с директивы .586 (или, при желании, .486 или .386) и указать при этом для сегментов команд и данных описатель use 16, чтобы программа осталась 16-разрядной. следует заметить, что возможности использования в программах реального режима дополнительных средств 32-разрядных процессоров, хотя и кажутся привлекательными, в действительности весьма ограничены. новых команд не так уж много, и они не имеют принципиального характера; 32-разрядные данные используются в прикладных программах относительно редко (если не касаться вычислительных программ, содержащих действительные числа, но такие программы редко пишут на языке ассемблера); расширенные возможности адресации в полной мере проявляются лишь в 32-разрядных программах, не работающих в dos. тем не менее в каких-то случаях привлечение средств 32-разрядных процессоров может оказаться полезным и в 16-разрядных программах, и мы несколько примеров их использования. среди системных данных dos и bios есть данные, требующие для своего размещения 2 слов. к таким данным, в частности, относится системное время, накапливаемое в 4х-байтовой ячейке с абсолютным адресом 46ch. выше, в разделе 3.5, уже описывалась системная процедура отсчета текущего времени. в процессе начальной загрузки компьютера в ячейку с адресом 46ch переносится из часов реального времени время, истекшее от начала суток, а затем содержимое этой ячейки увеличивается на 1 каждым прерыванием от системного таймера, подключенного к вектору 8. чтение ячейки 46ch позволяет определить текущее время с погрешностью приблизительно в 1/18 секунды, что позволяет достаточно точно измерять интервалы времени. арифметические действия с системным временем удобно выполнять в расширенных 32-разрядных регистрах. рассмотрим программу, которая позволяет установить требуемый временной интервал и отработать некоторым образом его окончание. поскольку ms-dos является системой, единственным способом организации параллельных процессов - выполнения программы и ожидания окончания временного интервала - является использование механизма прерываний. в нашем случае программа содержит обработчик прерываний от системного таймера, который 18 раз в секунду читает системное время и сравнивает его значение с заданной заранее величиной. при достижении равенства обработчик прерываний либо сам отрабатывает это событие, либо устанавливает флаг окончания временного интервала, который периодически тестируется в основной программе. первый вариант позволяет измерить временной интервал с большей точностью, но второй предоставляет больше возможностей, так как в обработчике прерываний нельзя обращаться к функциям dos, а основная программа может делать все, что ей заблагорассудится. ниже пример выполнен в виде программы типа .сом. такая организация программы обработчик прерываний и облегчает его написание. дело заключается в том, что процессор, переходя по аппаратному прерыванию на обработчик прерывания, модифицирует только регистры cs: ip (значениями, полученными из вектора прерываний). все остальные регистры, в том числе и сегментные, сохраняют те значения, которые они имели на момент прерывания. значения эти могут быть какими угодно, особенно, если основная программа вызывает функции dos. поэтому, если в обработчике прерываний необходимо обратиться к данным, хранящимся в основной программе, нам необходимо настроить какой-либо из сегментных регистров (например, ds или es) на сегментный адрес сегмента данных основной программы. если же программа написана в формате .сом, то ее поля данных входят в тот же (единственный) сегмент, где расположены команды, и для обращения к данным можно воспользоваться регистром cs, который при вызове обработчика настраивается процессором.
Реши свою проблему, спроси otvet5GPT
-
Быстро
Мгновенный ответ на твой вопрос -
Точно
Бот обладает знаниями во всех сферах -
Бесплатно
Задай вопрос и получи ответ бесплатно
Популярно: Математика
-
8905133093901.01.2023 05:13
-
aizazaliyaF28.11.2021 01:31
-
maksim0078921.09.2021 21:28
-
alinkamalinka49915.03.2023 09:18
-
ксюша169212.10.2022 10:02
-
CandyBitch66625.04.2021 07:56
-
25marta5211.07.2021 03:29
-
Trdfgg27.10.2021 17:19
-
Arina166609.09.2021 01:19
-
Ulya39107.12.2021 12:04
Есть вопросы?
-
Как otvet5GPT работает?
otvet5GPT использует большую языковую модель вместе с базой данных GPT для обеспечения высококачественных образовательных результатов. otvet5GPT действует как доступный академический ресурс вне класса. -
Сколько это стоит?
Проект находиться на стадии тестирования и все услуги бесплатны. -
Могу ли я использовать otvet5GPT в школе?
Конечно! Нейросеть может помочь вам делать конспекты лекций, придумывать идеи в классе и многое другое! -
В чем отличия от ChatGPT?
otvet5GPT черпает академические источники из собственной базы данных и предназначен специально для студентов. otvet5GPT также адаптируется к вашему стилю письма, предоставляя ряд образовательных инструментов, предназначенных для улучшения обучения.