Есть ответ 👍

Напишите в кодах 32-разрядного процессора программу, которая заполнит десять ячеек памяти, начиная с адреса. massiv, числами от 10 до 1

248
445
Посмотреть ответы 2

Ответы на вопрос:


Как уже отмечалось, при разработке 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, который при вызове обработчика настраивается процессором.
HappyEnot
4,7(10 оценок)

19 учебников складывала так: 12+3+7=22 22-3=19 ответ: 19 человек было в классе сначала

Популярно: Математика