- •Лабораторная работа №1
- •1.Машинный язык и Ассемблер.
- •2.Команды передачи данных.
- •Обмен байтами
- •2.1.Регистровая адресация.
- •2.2.Косвенная регистровая адресация.
- •2.3.Прямая адресация.
- •2.4.Непосредственная адресация.
- •2.5.Неявная адресация.
- •3.Команды арифметических и логических операций.
- •4.Применение команд передачи данных, арифметических и логических
- •5.Задания для подготовки и лабораторной работе.
- •6.Требования к отчету.
- •7.Вопросы.
4.Применение команд передачи данных, арифметических и логических
операций в программах.
Рассмотрим простейшую программу (прог.4.1.),извлекающую число из ячейки памяти по адресу 900Н,инвертирующую его и записывающее по адресу 901Н.
Программа 4.1.
Метка |
Мнемоника |
Операнд |
Комментарии
|
|
LDA 0900H |
|
загрузить число в аккумулятор из ОЗУ по адресу 0900Н
|
|
CMA |
|
проинвертировать содержимое аккумулятора |
|
STA 0901H |
|
записать содержимое аккумулятора в ОЗУ по адресу 0901Н |
Для записи программы в память УМК необходимо перевести мнемоники Ассемблера в шестадцатиричный машинный код, по аналогии с табл.1.2. Таблица кодов микропроцессора КР580ВМ80А приведена в конце данного
методического указания. Следует помнить, что при записи двухбайтовых операндов в память сначала записывается младший, а затем старший байт.
Программы должны начинаться с адреса 800Н.
Рассмотрим программу, аналогичную прог.4.1. с использованием косвенного способа адресации.
Программа 4.2.
адрес |
Метка |
Мнемоника |
Комментарии
|
|
|
LXI H,0900H |
занести адрес ячейки в регистровую пару HL |
|
|
MOV A,M |
переслать число из ячейки памяти, адрес которой в паре HL, в аккумулятор |
|
|
CMA |
проинвертировать содержимое аккумулятор |
|
|
INX H |
увеличить содержимое пары HL на 1 |
|
|
MOV M,A |
записать содержимое аккум. в ОЗУ по адресу в паре HL |
Следующая программа производит сложение двух чисел. Одно из них находится в ОЗУ по адресу 900Н,другое в ОЗУ по адресу 901Н.Сумма записывается по адресу 902Н.
Прог.4.3.
адрес |
Мнемоника |
Комментарий |
|
LDA 0900H |
загрузка первого числа в аккумулятор |
|
MOV B,A |
пересылка содержимого аккумулятора в регистр В |
|
LDA.0901H |
загрузка второго числа в аккумулятор |
|
ADD B |
сложение аккумулятора с содержимым регистра В |
|
STA 0902H |
сохранение результата в ОЗУ по адресу 0902Н |
В случае, если происходит сложение 2-х и более байтового числа, то при сложении старших байтов необходимо учитывать перенос из младших байтов (бит переноса С флагового регистра).Это же относится к операции нахождения разности многобайтовых чисел.
5.Задания для подготовки и лабораторной работе.
1.Ознакомиться с языком программирования Ассемблер и структурой команд микропроцессора КР580ВМ80А (i8080/8085).
2.Перевести в машинный код и распределить по адресам в ОЗУ программы 4.1.,4.2.,4.3. (аналогично таблице 1.2.).
3.Ввести в память УМК программу 4.1.Запустить ее на исполнение и исследовать результат выполнения программы. Результат выполнения представить в виде табл.5.1.
Табл.5.1.Результат выполнения программы.
Число по адресу 0900Н |
число по адресу 0901Н |
число по адресу 0902Н |
Содержимое А |
Состояние битов регистра F S= Z= AC= P= C= |
|
|
|
|
|
|
|
|
|
|
4.Проделать те же действия, что в пункте 3 с программами 4.2. и 4.3.
5.Написать программу, увеличивающую содержимое ячейки памяти по адресу 0900Н на 5Н и размещающую результат в ячейку памяти по адресу 0901Н.Произвести анализ выполнения программы, аналогично п.3.
6.Написать программу ,находящую разность 2-х чисел, одно из которых расположено в памяти по адресу 0900Н,а другое по адресу 0901Н (вычесть из первого второе).Результат нахождения разности записать по адресу 0902Н.Прозвести анализ выполнения программы (п.3).
7.Написать программу сложения двух двухбайтовых чисел, одно из которых расположено в памяти, начиная с адреса 0900Н,другое с адреса 0902Н.Результат разместить в памяти с адреса 0904Н.Перед выполнением программы записать по исходным адресам двухбайтовые числа, указанные преподавателем. Результат выполнения представить в виде таблицы, аналогичной табл.5.1.
8.Заменить в прог.4.3. команду сложения содержимого аккумулятора с регистром В (ADD B) командой сравнения CMP B. Ввести программу в память УМК. Записать в ячейку памяти по адресу 0900Н число большее, чем по адресу 0901Н.Запустить программу на выполнение. После выполнения проанализировать результат выполнения (составить табл.5.1.).
9.Записать по адресу 0900Н число меньшее, чем по адресу 0901Н.Произвести действия, описанные в п.8.
10.Записать по адресам 900Н и 901Н два одинаковые числа. Запустить программу на выполнение. Исследовать результат выполнения (п.8).
11.Заменить в программе 4.3. команду ADD B на команды INR A,DCR A,
ADD A, ANA A, ORA A, XRA A. Исследовать результат выполнения, содержимое
аккумулятора и флагового регистра F.
Результат представить в виде таблицы 5.2.
Табл.5.2.
Команда |
Содержимое аккумулятора |
Содержимое аккумулятора после операции |
Содержимое битов флагового регистра F |
|
|
|
|
|
|
|
|
|
|
|
|