Сложение массива однобайтных чисел
Государственное бюджетное профессиональное
образовательное учреждение Владимирской области
«Владимирский авиамеханический колледж»
МДК. 02. 01. Микропроцессорные системы
МЕТОДИЧЕСКИЕ УКАЗАНИЯ
ПО ВЫПОЛНЕНИЮ ЛАБОРАТОРНОЙ РАБОТЫ № 1.4
« Программирование арифметических задач на Ассемблере для микропроцессора К580 ВМ80. Выполнение операции сложения »
для студентов специальности 09.02.01 Компьютерные системы и комплексы
2020
Цели работы:
1. Рассмотреть особенности выполнения простейших арифметических операций над целыми числами без знака на микропроцессорном эмуляторе КР580ВМ80
2. Освоить практические навыки программирования в машинных кодах и мнемокодах
3. Научиться пользоваться средствами управления эмулятора.
ТЕОРЕТИЧЕСКАЯ ЧАСТЬ
Представление чисел
При программировании на МП БИС КР580ВМ80 необходимо пользоваться способом представления чисел с фиксированной десятичной точкой. При этом знак числа и количество разрядов, занятых дробной частью числа, могут быть учтены при подготовке данных или программным путем.
Следует помнить, что коды команд, адреса и данные вводятся в микро ЭВМ числами в шестнадцатеричной системе счисления.
Для МП БИС КР580ВМ80 можно представлять данные в виде двоично-десятичного числа, при этом каждый байт рассматривается как две тетрады (два полубайта), а каждая тетрада кодирует одну десятичную цифру.
|
|
Такое представление позволяет закодировать в одном байте десятичные числа от 0 до 99. Обратите внимание на то, что, используя для представления шестнадцатеричную систему счисления, в одном байте можно закодировать число от 0 до FF , что соответствует числам десятичной системы от 0 до 255.
Эти примеры показывают, что такое представление чисел более рационально: используется меньший объем памяти, сокращается программа.
Таблица 1- Представление чисел в различных системах счисления
Десятичная система счисления | Восьмеричная система счисления | Двоичная система счисления (по тетрадам) | Шестнадцатеричная система счисления |
0 | 0 | 0000 | 0 |
1 | 1 | 0001 | 1 |
2 | 2 | 0010 | 2 |
3 | 3 | 0011 | 3 |
4 | 4 | 0100 | 4 |
5 | 5 | 0101 | 5 |
6 | 6 | 0110 | 6 |
7 | 7 | 0111 | 7 |
8 | 10 | 1000 | 8 |
9 | 11 | 1001 | 9 |
10 | 12 | 1010 | A |
11 | 13 | 1011 | B |
12 | 14 | 1100 | C |
13 | 15 | 1101 | D |
14 | 16 | 1110 | E |
15 | 17 | 1111 | F |
Арифметические команды
Основной арифметической функцией является сложение двух чисел. Команда, имеющая мнемокод ADD Rд, складывает данные регистра Rд и аккумулятора (регистра А) и результат сложения запоминает в аккумуляторе.
|
|
- CARRY - регистра признаков. Разряд (флаг) переноса играет большую роль при выполнении микропроцессором арифметических операций и работает девятым разрядом аккумулятора. По флагу командами IC и INC можно осуществить переход. Применяется он так же при сложении чисел длиннее восьми разрядов, выполняя функции связи между двумя байтами записи числа.
Вычитание содержимого регистра Rд из содержимого аккумулятора производит команда SUB Rд. Например, команда SUB B вычитает из аккумулятора данные регистра В.
Команда вычитания использует флаг переноса как разряд заема. Если флаг переноса устанавливается после команды SUB Rд, значит, число в регистре Rд больше, чем в аккумуляторе.
После выполнения команды SUB Rд результат остается в аккумуляторе.
Программа сложения двух однобайтных чисел X и У
Задача состоит в том, чтобы, выполнив занесение однобайтных чисел в регистры А и Rд, сложить их и поместить результат сложения в аккумулятор.
Задать числовые значения Х и Y согласно варианту, приведенному в таблице 3 и начальным адресом программы, приняв его равным 0000.
|
|
Обратить внимание на то, что все приведенные числа записаны в шестнадцатеричной системе счисления.
Используя листинг программы, приведенный в таблице 2, записать в память по указанным адресам коды команд.
Таблица 2 - Программа PRG 1 сложения двух однобайтных чисел
Адрес | Код команды | Метка | Мнемокод | Комментарий |
0000 | AF | PRG 1: | XRA A | Очистить аккумулятор |
0001 | 3E | MVI A, 38 | Записать в аккумулятор число Х | |
0002 | 38 | |||
0003 | 06 | MVI B, A3 | Записать в регистр В число Y | |
0004 | A3 | |||
0005 | 80 | ADD B | Сложить Х и Y | |
0006 | 76 | HLT | Прервать выполнение программы |
Выполнив запись программы, установите начальный адрес и запустите программу. После её исполнения результат вычисления будет в аккумуляторе.
Для получения разности двух чисел X и Y можно использовать программу PRG 1, заменив в ней по адресу 0005 код команды 80 (ADD B) кодом 90 (SUB В) команды вычитания содержимого регистра В из содержимого аккумулятора, разместив предварительно в регистрах В и А соответственно вычитаемое и уменьшаемое. Разность будет записана в аккумуляторе.
|
|
Таблица 3 – Варианты исходных данных
| Значения чисел по вариантам | ||||||||||||||
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | |
X | 05 | 1E | 5A | 12 | 76 | B0 | 25 | A0 | 04 | 34 | 55 | 05 | 12 | 6F | 1D |
Y | 16 | 0F | 1A | 09 | B6 | 11 | 06 | 99 | 1F | A5 | 48 | D1 | B3 | 77 | 0E |
Сложение массива однобайтных чисел
Массив однобайтных шестнадцатеричных чисел, например, 31, АВ, 86, 11 разместить в последовательных адресах памяти, например, 8250, 8251, 8252, 8253.
В качестве входных параметров для выполнения программы необходимо иметь адрес первого слагаемого, например, 8250, записанный в регистрах H, L, и число слагаемых - в регистре С. Выходным параметром будет являться сумма, старший байт которой записан в регистре В, а младший байт - в аккумуляторе.
Таблица 4 – Программа PRG 2 сложения массива однобайтных чисел
Адрес | Код команды | Метка | Мнемокод | Комментарий |
8200 | 21 | PRG 2: | LXI H, 8250 | Загрузить в регистры HLадрес первого слагаемого |
8201 | 50 | |||
8202 | 82 | |||
8203 | 0E |
| MVI C, 04 | Загрузить в регистр С количество слагаемых |
8204 | 04 | |||
8205 | AF | XRA A | Очистить аккумулятор | |
8206 | 47 | MOV B, A | Очистить регистр В | |
8207 | 86 | M1: | ADD M | Прибавить к содержимому аккумулятора число из массива слагаемых |
8208 | D2 |
| INC M2 | Если переноса нет, то идти на М2 |
8209 | 0D | |||
820A | 82 | |||
820B | 04 | INR B | Увеличить содержимое регистра В на 1 | |
820C | B7 | DRA A | Очистить флаг переноса | |
820D | 23 | M2: | INX H | Указать на следующий адрес слагаемого |
820E | 0D | DCR C | Уменьшить содержимое регистра С на 1 | |
820F | C2 |
| JNZ | Если не все слагаемые, то идти на М1 |
8210 | 07 | |||
8211 | 82 | |||
8212 | 76 | HLT | Прервать выполнение программы |
Выполнение программы с именем PRG 2 начинается с команды загрузки регистровой пары HL, 16-битным числом 8250 (адрес первого слагаемого). После выполнения второй команды (адреса 820З, 8204) в регистре С запишется число 4 (число слагаемых). Командами 8205 и 8206 производится обнуление регистров А, В и регистра признаков.
Командой 8207 с меткой MI начинается первый цикл этапа суммирования. В результате выполнения этой команды в регистр А заносится первое слагаемое (число 31) по адресу 8250, записанное в регистровой паре HL.
Так как переполнения аккумулятора нет, по команде 8208 осуществляется переход на метку М2 (адрес команды 820С), и к содержимому регистровой пары HL прибавляется I. Теперь здесь записан адрес 8251 второго слагаемого.
После выполнения команды 820Е число слагаемых (содержимое регистра С) становится равным 3 и по команде 820F осуществляется переход на MI- начало следующего цикла этапа суммирования.
Во втором цикле в регистр А записывается сумма DC чисел 31 и АВ, флаг переноса не устанавливается, уменьшается число слагаемых регистра С до 2.
В третьем цикле в аккумулятор записывается 62 (младший байт суммы чисел DC и 86) и устанавливается флаг переноса С. По команде 8208 осуществляется переход по адресу 820В и в регистр В записывается I. Содержимое регистровой пары HL равно 8253, содержимое регистра С – I.
В четвертом цикле после выполнения команды 8207 в аккумулятор записывается 56, флаг переноса установлен, содержимое регистра В равно 2.
По команде 820(Е) содержимое регистра С становится равным 0, и команда 820F передает управление адресу 8212 - конец выполнения программы.
Оценивание работы:
На оценку «3»: выполнение сложения по вариантам программы PRG 1
На оценку «4»: выполнение сложения и вычитания по вариантам программы PRG 1
На оценку «5»: выполнение сложения и вычитания по вариантам программы PRG 1, сложения программы PRG 2
ВНИМАНИЕ: Все выполняемые арифметические операции сопровождаются оформленным в тетради решением в двоичном коде с переводом в шестнадцатеричную форму. При выполнении вычитания операции производятся в обратном коде.
ВЫВОД
В ходе лабораторной работы рассмотрены особенности выполнения простейших арифметических операций над целыми числами без знака с использованием эмулятора КР580ВМ80А, познакомились с программированием в машинных кодах и мнемокодах, научились пользоваться средствами управления.
Дата добавления: 2020-11-15; просмотров: 143; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!