русс | укр

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

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

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

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


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

Разветвляющиеся программы


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


Пример 3.1. Число хранится в ОЗУ по адресу 0900Н. Определить число единиц в младшем полубайте этого числа. Результат поместить в ОЗУ по адресу 0901Н.

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

Блок 1 обнуляет регистр В (для счета количества единиц будем использовать регистр В); эта операция выполняется командой загрузки MVI B, 00Н.

Блок 2 производит запись в регистровую пару HL адреса (0900Н) числа, хранящегося в ОЗУ; выполняющая эту операцию команда имеет мнемонику LXI H, 0900Н.

Блок 3 производит прием в аккумулятор содержимого ячейки ОЗУ (М), адресом, которой служит содержимое пары регистров HL; выполняющая эту операцию команда имеет мнемонику МОV А, М.

 
 

 


0 ® B    
     
0900H ® HL (B) +1 ® B
     
(M) ® A  
     
ЦСП(A) ® A (B) +1 ® B
     
(TC)  
     
ЦСП(A) ® A (B) +1 ® B
     
(TC)  
     
ЦСП(A) ® A ЦСП(A) ® A
       
(TC) (TC)
       
  (HL) +1 ® HL
     
  (B) ® M
   

 

 

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

 

Блок 4 осуществляет циклический сдвиг вправо содержимого аккумулятора. При этом младший разряд D0 числа записывается в триггер переноса Тс, а на его место сдвигается разряд D1; мнемоника команды RRC.

Блок 5 реализует разветвление по содержимому триггера Тс: в зависимости от значения содержимого этого триггера выполняется либо блок 6, либо блок 7; мнемоника команды JNC MET1.



Блок 6 осуществляет увеличение содержимого регистра В, в котором подсчитывается количество единиц младшего полубайта числа; мнемоника команды INR B.

Блок 7 идентичен блоку 4. Теперь в триггер переноса Тс запишется разряд D1, а на его место в аккумуляторе сдвигается разряд D2; мнемоника команды RRC.

Блок 8 реализует разветвление по содержимому триггера Тс: в зависимости от значения содержимого этого триггера выполняется либо блок 9, либо блок 10; мнемоника команды JNC МЕТ2.

Далее блоки с 9 по 15 выполняют те же самые операции, что и предыдущие, только анализируются соответственно разряды D2 и D3 заданного числа.

Блок 16 формирует в паре регистров HL адрес ОЗУ (0901Н), куда необходимо переслать результат; мнемоника команды INX H.

Блок 17 пересылает в память (по адресу 0901Н) полученный результат в регистре В, соответствующий количеству единиц в младшем полубайте заданного числа; мнемоника команды MOV M, В.

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

 


Таблица 3.1

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

Адрес Н-код Метка Мнемоника Операнд Машинный код Комментарий
  MVI В, 00Н 06 00 Блок 1
  LXI Н, 0900Н 21 00 09 Блок 2
  MOV А, М Блок 3
  RRC   0F Блок 4
  JNC МЕТ 1 D2 0В 08 Блок 5
080А   INR B Блок 6
080В МЕТ 1 RRC   0F Блок 7
080С   JNC МЕТ 2 D2 10 08 Блок 8
080F   INR В Блок 9
МЕТ 2 RRC   0F Блок 10
  JNC МЕТ 3 D2 15 08 Блок 11
  INR В Блок 12
МЕТ 3 RRC   0F Блок 13
  JNC МЕТ 4 D2 1А 08 Блок 14
  INR В Блок 15
081А МЕТ 4 INX H Блок 16
081В   MOV М,В Блок 17
081С   RST FF Переход к программе Монитор



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


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


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

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

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


 


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

 
 

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

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