Изучение группы арифметических команд
Автор: Александр Журавлев • Декабрь 4, 2018 • Лабораторная работа • 2,488 Слов (10 Страниц) • 402 Просмотры
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ УКРАИНЫ
ОДЕССКИЙ НАЦИОНАЛЬНЫЙ ПОЛИТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ
Институт Компьютерных Систем
Кафедра Компьютерных Систем
По дисциплине: «Микропроцессорные системы»
Тема: " Изучение группы арифметических команд "
Выполнил:
Студент группы АЕ-161
Иванов А. А.
Проверила: ст. в. Яковлева І.Д.
Вариант 1
Одесса
2018
Цель работы: "Изучить особенности выполнения арифметических команд, разработка алгоритма, составление и отладка программы с использованием этих команд.
Операции с многобайтными числами производятся по байтам, начиная с младших. При сложении (вычитании) многобайтных чисел младшие байты чисел складываются ( вычитаются ) командой ADD (SUB ) все последующие старшие байты командой ADC (SBB R).
Краткие теоретические сведения:
МП может работать с двоичными и с двоично-десятичными числами. Но т.к. двоично-десятичные числа складываются (вычитаются) на двоичном сумматоре, то требуется коррекция результата, для этого используется команда DAA (DAS) - десятичная коррекция.
Команда MUL выполняет умножение двух операндов без учета знаков. Алгоритм зависит от формата операнда команды и требует явного указания местоположения только одного сомножителя, который может быть расположен в памяти или в регистре. Местоположение второго сомножителя фиксировано и зависит от размера первого сомножителя.
Для команды DIV необходимо задание двух операндов — делимого и делителя. Делимое задается неявно и размер его зависит от размера делителя, который указывается в команде. При выполнении операции деления возможно возникновение исключительной ситуации: 0 — ошибка деления. Эта ситуация возникает в одном из двух случаев: делитель равен 0 или частное слишком велико для его размещения в регистре ax/al.
Краткие теоретические сведения:
Часть 1
Мнемокод | Операнд | Комментарий |
ADD | Op1,Op2 | Сложение значений Op1 и Op2, результат помещается в Op1. (Op1)+( Op2) → (Op1) |
ADC | Op1,Op2 | Сложение значений Op1 и Op2 с учетом флага переноса СF, результат помещается в Op1. (Op1)+( Op2)+(СF) → (Op1) |
SUB | Op1,Op2 | Вычитание значений Op1 и Op2, результат помещается в Op1. (Op1)-( Op2) → (Op1) |
SBB | Op1,Op2 | Вычитание значений Op1 и Op2 с учетом заема, результат помещается в Op1. (Op1)-( Op2)-(СF) → (Op1) |
INC | Op | Инкремент операнда Op . Содержимое Op увеличивается на1. (Op) + 1→ (Op) |
DEC | Op | Декремент операнда Op . Содержимое Op уменьшается на 1. (Op) - 1→ (Op) |
DAA | Коррекция результата сложения для представления в десятичном виде. AL | |
DAS | Коррекция результата вычитания для представления в десятичном виде. AL |
Часть 2
Мнемокод | Операнд | Комментарий |
MUL | Op | Целочисленное умножение без учета знака (AL)*( Op8) → (AX) (AX)*( Op16) → (DX):(AX) |
DIV | Op | Беззнаковое деление(AX)/( Op8) → частное а (АL), остаток в (AH) (DX)(AX)/( Op16) → частное а (АX), остаток в (DX) |
AAM | Коррекция после умножения двух неупакованных BCD чисел. Преобразование двоичного числа меньшего 63h (9910) в его неупакованный BCD-эквивалент. | |
AAD | Коррекция перед делением двух неупакованных BCD чисел. Преобразование двузначного неупакованного ВCD-числа меньшего 63h (9910) в двоичное представление. |
...