Intel 8080 (пример 5)

В программе для МП Intel 8080 в качестве адресного регистра используется регистровая пара И и L. В этом микропроцессоре в качестве адресных регистров можно также кспользовать регистры'В и С (регистровая пара В) или регистру D и Ш (регистровая пара D), но только для выполнения операций1 пересылки ^данных из памяти в аккумулятор или обратно (с помощью команд LDAX и STAX). Эги аДрёсные-регистры нельзя использовать в кбмайдак, выполняющих арифметические или логические операций, а также операции пересылки данных в РОН или из РОН. Упомянутое ограничЙие р*едко оказывается существенным, так как обычно процессор перед выполнением операций обработки должен пересылать данные^ аккумулятор. Вместе с тейг использование различных, кодов,команд для различных адресных регистров может привести к ошибкам. Заметим, что при каждом проходе программа должна изменять содержимое обоих адресных регистров и что один и тот же набор региетров-делжен совместно использоваться в качестве счетчиков, указателей адреса и рабочих ячеек.

Новой в этой программе является команда STAX D, по которой содержимое аккумулятора посылается в ячейку памяти, адрес которой содержится в регистровой паре D. Команда занимает одну ячейку памяти и выполняется за 3,5 мкс. Команда STAX D аналогична команде MOV М, А и отличается от нее только тем, что использует иной адресный регистр; подобная аналогия существует между командами LDAX D и MOV А, М.

На рис. 5.23 приведен результат ассемблирования данной программы для МП Intel 8080. На рис. 5.^4 показана часть трассы для первого прохода. Центральный процессор Должен изменять содержимое обоих адресных регистров, но при этом для вычисления исполнительного адреса не требуется суммировать 16-битные числа. В МП Intel 8080 массивы могут располагаться в произвольных местах памяти; не обязательно располагать их на расстоянии не более 25В ячеек, как это имеет место в МП Motorola 6800.



Пример 6.: Нахождение максимума.

Разумеется, блоки обработки в циклических программах редко бывают столь простыми, как в примерах 4 и 5. Обычно в них выполняется много операций, предусмотрены разветвления и иногда даже встроены Другие программные циклы. При этбм остальные блоки циклической программы могут остаться неизменными, какова бы ни была сложность самого блока обработки.



Для отыскания максимального элемента массива требуется разработать несколько более сложный, чем в предыдущих примерах, блок обработки. Подобная операция может понадобиться при сортировке данных, при анализе тестовых результатов, при выборе следующей записи, если обработка ведется ига приоритетной основе, или при масштабированйи входных или выгодных данных для выполнения их анализа и выдачи на устройство отображения. Йусть длина массива дай-йых задана в ячейке 41, а сам Массив располагается с ячейки 42. Программа помещает максимальное значение в ячейку 40. Элементы массива представляют собой 8-битные числа без знака.

Типичный пример.

(41) - 03;

(12) - 37;

(43) - F2; : .

(44) - Сб.

Массив состоит из трех элементов, расположенных в ячейках памяти 42—44. & результате работы алгоритма

(40) =F2, так как-максимальным из трех заданных чисел без знака длиной 8 бит является чйсло F 2 (содержимое ячейки 43).

На рис. 5.25 изображена блок-схема программы. Блок обработки содержит операцию условного перехода, с помощью которой осуществляется проверка того, является ли новая запись большей, чем та, которая до этого считалась максимальной. Если это так, то прежнее максимальное значение заменяется новым. Вначале предполагается, что максимальным яляется первый элемент массива Программа уменьшает содержимое счетчика на единицу, поскольку в дальнейшем анализировать первый элемент массива не нужно. Структура программы не отличается от структуры -программ, рассмотренных ранее.