Подсчет количества ячеек памяти массива, содержимое которых удовлетворяет поставленному условию 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Подсчет количества ячеек памяти массива, содержимое которых удовлетворяет поставленному условию



Необходимо выполнить проверку соответствия содержимого каждой ячейки памяти поставленному условию. Если условие выполняется, то производится увеличение содержимого регистра результата на единицу. Остальная часть программы аналогична программе нахождения наибольшего (наименьшего) числа.

Пример. Подсчитать количество ЯП из массива (0800)-(0820), содержимое которых меньше числа 9BH и результат записать в ЯП (0821).

 

Таблица 13 – Пример программы

Адрес ЯП Мнемоническое обозначение Код Комментарий
  LHI H   Запись начального адреса (0800) в регистровую пару (H,L)
     
     
  MVI C 0E Запись числа 20H в регистр C
     
  MVI D   Запись числа 00H в регистр D (организация счетчика)
     
  MOV A, M 7E Содержимое регистр. пары (H, L) переслать в аккумулятор А
  CPI FE Сравнение содержимого аккумулятора с числом 9BH
  9B 9B
090A JNC D2 Условный переход по нулевому значению триггера переноса по адресу (090E)
090B 0E 0E
090C    
090D INR D   Увеличение содержимого регистра D на 1
090E INX H   Увеличение содержимого регистровой пары H на 1
090F DCR C 0D Уменьшение содержимого регистра C на 1
  JNZ C2 Условный переход по нулевому значению результата по адресу (0908)
     
     
  MOV A, D 7A Содержимое регистра D переслать в аккумулятор A
  STA   Переслать содержимое аккумулятора в ЯП (0821)
     
     
  HLT   Останов

Лабораторная работа «Работа с массивами»

1. Определить количество ячеек памяти из массива (0800)-(0830), содержимое которых удовлетворяет условию , и записать это число в ЯП (0840).

2. Определить номер ячейки памяти из ЯП (0800)-(0820), в котором содержится наименьшее число, отличное от . Это число записать в ЯП (0830), а номер ЯП - в (0831), (0832).

3. Определить количество ячеек памяти из ЯП (0810)-(0830), содержимое которых больше , и результат записать в ЯП (0800).

4. Определить наименьшее число из ЯП (0800)-(0820). Если это число меньше , записать его в ЯП (0840), если нет – записать его в ЯП (0841).

5. Определить наибольшее число из ЯП (0800)-(0820), отличное от . Это число записать в ЯП (0830), а номер ЯП в (0831), (0832).


ОРГАНИЗАЦИЯ ПРОГРАММНОЙ ЗАДЕРЖКИ

 

9.1 Практическое занятие «Организация программной задержки»

Простейший алгоритм организации программной задержки состоит в следующем: в регистр (счетчик) помещается число , затем производится декремент, т.е. уменьшение на 1, и делается проверка содержимого счетчика, не равно ли оно нулю. Так продолжается до тех пор, пока содержимое счетчика не станет равным нулю.

Максимальное время задержки определяется числом разрядов регистра, использованного в качестве счетчика на вычитание, и временем выполнения всех команд. Для увеличения времени выполнения цикла, а следовательно, и общей задержки, в подпрограмму может быть добавлена команда NOP (нет операции) или может быть использована любая последовательность команд, выполнение которых не изменяет содержимое регистров МП.

Максимальное время задержки определяется при и вычисляется:

.

 

Таблица 14 – Пример программы

Адрес ЯП Мнемоническое обозначение Код Такты Комментарий
  MVI D     Запись числа FFH в регистр D (младший регистр)
  FF FF
  DCR D     Уменьшение содержимого регистра D на 1
  JNZ C2   Условный переход по нулевому значению результата по адресу (0906)
     
     
  HLT     Останов

 

Максимальное время задержки при :

.

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

Для этого используются несколько регистров (например, B – старший, C – средний, D – младший), в которые записываются числа (например, максимальное число ). Командой DCR D вычитается единица из младшего регистра D и, пока его содержимое не станет равно нулю, командой JNZ выполняется переход обратно на DCR D. Когда этот регистр обнуляется, то из содержимого среднего регистра C командой DCR C вычитается единица и, пока он не равен нулю, по команде JNZ происходит переход на команду MVI, которая снова производит загрузку младшего регистра D и затем происходит его последовательное уменьшение. Когда обнуляется средний регистр C, то вычитается единица из старшего регистра B, регистр C снова загружается числом, и процесс повторяется снова. Таким образом, старший регистр В обнуляется один раз за 255 циклов, регистр С - 255 раз за 255 циклов, а регистр D - раз за 255 циклов.

В таблице 15 приведена программа организации задержки с помощью вложенных циклов на трех регистрах. При и загрузке в регистры максимальных чисел общая задержка составляет 125 с.

 


Таблица 15 – Пример программы

АдресЯП Мнемоническое обозначение Код Такты Комментарий
  MVI B     Запись числа FFH в регистр B (старший регистр)
  FF FF
  MVI C 0E   Запись числа FFH в регистр С (средний регистр)
  FF FF
  MVI D     Запись числа FFH в регистр D (младший регистр)
  FF FF
  DCR D     Уменьшение содержимого регистра D на 1
  JNZ C2   Условный переход по нулевому значению результата по адресу (0906)
     
     
090A DCR C 0D   Уменьшение содержимого регистра C на 1
090C JNZ C2   Условный переход по нулевому значению результата по адресу (0904)
090D    
090E    
090F DCR B     Уменьшение содержимого регистра B на 1
  JNZ C2   Условный переход по нулевому значению результата по адресу (0902)
     
     
  HLT     Останов

 

В соответствии с заданным временем задержки определяются числа, которые загружаются в соответствующие регистры (счетчики).

 

9.2 Лабораторная работа «Организация программной задержки»

Варианты заданий.

Выполнить действие:

1. с задержкой 6 с.

2. с задержкой 15 с.

3. с задержкой 25 с.

4. с задержкой 20 с.

5. с задержкой 10 с.



Поделиться:


Последнее изменение этой страницы: 2016-08-12; просмотров: 221; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.144.103.10 (0.009 с.)