|
||||||||||||||||||||||||||||||||||||||
ЛАБОРАТОРНАЯ РАБОТА №1. ИЗУЧЕНИЕ КОМАНД ПЕРЕСЫЛОК И АРИФМЕТИЧЕСКИХ. ОПЕРАЦИЙ.. 1.порядок выполнения работы. Задание1. Сложить три однобайтных числа.Стр 1 из 2Следующая ⇒ ЛАБОРАТОРНАЯ РАБОТА №1 ИЗУЧЕНИЕ КОМАНД ПЕРЕСЫЛОК И АРИФМЕТИЧЕСКИХ ОПЕРАЦИЙ. Цель работы: Изучение конструкции микролаборатории, назначение органов управления. Запись и чтение содержимого ячеек памяти ОЗУ. Ввод программы в ОЗУ. Выполнение и разработка программ, содержащих команды пересылок и арифметических операций. 1. порядок выполнения работы Задание1. Сложить три однобайтных числа. 1. Изучить по конспекту лекций соответствующий раздел настоящего методического пособия. 2. Ввести в ОЗУ простейшую программу сложения трех чисел. Дополнить программу комментариями к каждой команде. Первое число а будет размещено в ячейке 8010, b - в ячейке 8011, с - в ячейке 8012, сумма S в ячейке 8013. Исходные данные a, b, c будем заносить с клавиатуры. Таблица 1. 1. Программа сложения трех чисел S=a+b+c.
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ЕА и если надо добавить и результату единицу переноса. Это будет девятый разряд результата сложения старших байтов.
|
||||||||||||||||||||||||||||||||||||||
|