русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Программирование участков алгоритма, содержащих циклы


Дата добавления: 2014-11-28; просмотров: 659; Нарушение авторских прав


Пример 4.1. Сложить два трехбайтных числа, каждое из которых занимает в ОЗУ три ячейки памяти с последовательно нарастающими адресами. Адреса младших байтов первого и второго чисел хранятся соответственно в регистровых парах ВС и НL. Результат поместить на место второго слагаемого.

Принцип сложения многобайтных чисел состоит в том, что сначала в МП вызываются младшие байты слагаемых. Байты суммируются, результат суммирования помещается в память на место младшего байта второго слагаемого, возникающий в процессе суммирования перенос из старшего разряда D7 запоминается в триггере Тс регистра признаков. Затем в парах регистров ВС и НL формируется адрес вторых байтов слагаемых, которые затем вызываются в МП и суммируются вместе с хранящимся в триггере Тс переносом, возникшим при сложении первых байтов и т. д. Выполнение процесса завершится после трехкратного повторения указанных действий. Таким образом, этот процесс носит циклический характер: цикл, содержащий операции пересылки, сложения, формирования очередного адреса, должен быть повторен три раза.

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

На рис. 4.1 приведена блок-схема алгоритма решения данной задачи. Рассмотрим операции, выполняемые в каждом из блоков.

Блок 1 обнуляет триггер переноса Тс, т.к. он мог находится в состоянии '''1' после выполнения предыдущих операций. Для этой цели можно использовать любую команду логических операций, например, логическое умножение аккумулятора самого на себя; мнемоника команды АNA A.

Блок 2 производит загрузку числа 3 в регистр D (в счетчик циклов); мнемоника команды MVI D, 0ЗН.



Блок 3 производит пересылку младшего байта (при первом проходе цикла) первого числа из ячейки ОЗУ в аккумулятор. Эта операция выполняется командой, использующей косвенную адресацию; мнемоника команды LDAX В.

Блок 4 производит суммирование младших байтов двух чисел с учетом триггера переноса Тс при первом проходе цикла, вторых байтов при втором проходе и третьих байтов при третьем; мнемоника команды ADC M.

Блок 5 производит пересылку результата суммирования двух байтов на место второго слагаемого; мнемоника команды MOV M, А.

Блок 6 производит вычитание единицы из содержимого счетчика (регистра D).

Блок 7 реализует разветвление по содержимому триггера ТZ; в зависимости от значения содержимого этого триггера выполняется либо блок 8, либо осуществляется выход из цикла; мнемоника команды JZ M1.

Блок 8 формирует в паре регистров ВС адрес следующего байта первого числа; эта операция выполняется командой приращения пары регистров INX B.

Блок 9 формирует в паре регистров HL адрес следующего байта второго числа; эта операция выполняется командой приращения пары регистров INX H.

В табл. 4.1 приведена программа рассматриваемой задачи на языке Ассемблер и в машинных кодах. Размещение команд производилось с ячейки ОЗУ, имеющей адрес 0800Н.

 

 

 
 

 

 


Рис. 4.1. Блок-схема алгоритма сложения двух трехбайтных чисел

Таблица 4.1

Программа сложения двух трехбайтных чисел

Адрес Н-код Метка Мнемоника Операнд Машинный код Комментарий
  ANA A A7 Установ. Тс в "0"
  MVI D, 03Н 16 03 Блок 2
МЕТ 1 LDAX B 0A Блок 3
  ADC M 8E Блок 4
  MOV M,А Блок 5
  DCR D Блок 6
  JZ МЕТ 2 СА 0F 08 Блок 7
080А   INX B Блок 8
080В   INX Н Блок 9
080С   JMP МЕТ 1 C30308 Безусловный переход
080F МЕТ 2 RST FF Переход к программе монитор


<== предыдущая лекция | следующая лекция ==>
Задание для самостоятельной работы | Задание для самостоятельной работы


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.022 сек.