Хелпикс

Главная

Контакты

Случайная статья





ЛАБОРАТОРНАЯ РАБОТА №1. ИЗУЧЕНИЕ КОМАНД ПЕРЕСЫЛОК И АРИФМЕТИЧЕСКИХ. ОПЕРАЦИЙ.. 1.порядок выполнения работы. Задание1. Сложить три однобайтных числа.



ЛАБОРАТОРНАЯ РАБОТА №1

ИЗУЧЕНИЕ КОМАНД ПЕРЕСЫЛОК И АРИФМЕТИЧЕСКИХ

ОПЕРАЦИЙ.

Цель работы: Изучение конструкции микролаборатории, назначение органов управления. Запись и чтение содержимого ячеек памяти ОЗУ. Ввод программы в ОЗУ. Выполнение и разработка программ, содержащих команды пересылок и арифметических операций.

1. порядок выполнения работы

Задание1. Сложить три однобайтных числа.

1. Изучить по конспекту лекций соответствующий раздел настоящего методического пособия.

2. Ввести в ОЗУ простейшую программу сложения трех чисел. Дополнить программу комментариями к каждой коман­де. Первое число а будет размещено в ячейке 8010, b - в ячейке 8011, с - в ячейке 8012, сумма S в ячейке 8013.

Исходные данные a, b, c  будем заносить с клавиатуры.

Таблица 1. 1. Программа сложения трех чисел S=a+b+c.


 


Адрес ячейки ОЗУ Мнемокод Код команды Комментарии
LDA 8010 3A   Загрузка содержимого ячейки 8010 (число А) в аккумулятор
LXI H, 8011   Загрузка адреса числа В (8011) в регистровую пару Н
ADD M Сложение чисел А и В
LXI H, 8012   Загрузка адреса числа С (8012) в регистровую пару Н
802А ADD M Сложение чисел (А+В) и С
802В 802С 802D STA 8013   Сохранение содержимого аккумулятора (S) в ячейке 8013
802E RST 7 FF Передача управления программе монитор

 

3. Получить у руководителя индивидуальное задание, вы­полнить сложение трех чисел вручную.

4. Ввести эти числа в память ОЗУ в соответствующие ячей­ки, запустить программу, прочитать результат сложения. Если результаты не совпадают найти ошибку.

Задание 2. Сложить два трехбайтных числа.

1. Рекомендации по составлению программы:

Число А находится в ячейках памяти:

8010 - младший байт

8011 - средний байт

8012 - старший байт

Число В находится в ячейках памяти:

8020 - младший байт

8021 - средний байт

8022 - старший байт

Результат сложения поместить на место первого числа А.

Сложение чисел А и В производим побайтно, т. е. снача­ла сложим младшие байты числа А и В, затем средние и стар­шие. При сложении необходимо учитывать наличие переноса из восьмого разряда.

Поэтому здесь необходимо применить команду сложения с учетом переноса ADC M.

 

Так как при выполнении задачи надо изменять адрес ячейки памяти байта числа А и В, то это удобно делать, выбрав в качестве указателей адреса А - регистровую па­ру ВС, a HL. - указатель адреса числа В.

Сначала в ВС и HL заносятся адреса младших байтов чисел А и В, производится сложение их с учетом переноса. Результат надо записать в ячейку 8010, т. е. туда, где был младший байт числа А. Затем надо увели­чить адрес байта числа А и В на единицу. Для этого применяем команды INX В, INX Н. Эти команды уве­личивают содержимое регистровых пар ВС и HL на единицу. После выполнения этих команд в регистровой паре ВС будет число 8011, а в HL – 8021. Таким образом, мы установили указатели на адреса средних байтов числа А и В.

Очевидно, что теперь надо сложить средние байты чисел А и В и переслать результат на место где был записан средний байт числа А (адрес 8011). Этот адрес находится в регистровой паре ВС, поэтому результат из аккумулятора можно переслать по этому адресу командой SТАХ В.

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

Теперь задача выполнена, результат сложения нахо­дится на месте числа А. Однако, при сложении старших байтов может тоже образоваться перенос, который будет потерян, а результат окажется неверным. Был перенос или нет мы можем определить по состоянию разряда С регистра флагов. Регистр флагов копируется программой монитор автоматически в ячейке памяти 83ЕА и имеет вид:

       

Рис. 1. 1. Формат регистра признаков(флагов).

 

Поскольку С - признак переноса в этой ячейке яв­ляется младшим разрядом то, очевидно, что при С=1, т. е. перенос был, это число будет нечётным, а если перенос отсутствовал, это число - чётное.

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

 

Перенос «С» Старший байт Средний байт Младший байт


  

© helpiks.su При использовании или копировании материалов прямая ссылка на сайт обязательна.