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




ОПЕРАЦИЙ МИКРОПРОЦЕССОРА

Цель работы: изучение арифметических команд микропроцессора и формирование вычислительных алгоритмов.

Краткие сведения из теории

Над двоичными числами со знаком и без знака могут быть выполнены следующие действия: сложение, вычитание, умножение и деление.

Сложение двоичных чисел

В системе команд микропроцессора имеются три команды двоичного сложения:

1. Операция инкремента:

inc операнд

Означает увеличение значения операнда на 1.

2. Команда сложения:

add операнд_1,операнд_2

Принцип ее действия:

операнд_1 = операнд_1 + операнд_2

3. Команда сложения с учетом флага переноса cf:

adc операнд_1,операнд_2

Принцип действия команды:

операнд_1 = операнд_1 + операнд_2 + значение_ cf

Последняя команда сложения учитывает перенос единицы из старшего разряда. Когда в старшем разряде появляется единица, она переносится в бит cf флагового регистра.

Вычитание двоичных чисел

К командам вычитания относятся следующие:

1. Операция декремента:

dec операнд

Уменьшение значения операнда на 1.

2. Команда вычитания:

sub операнд_1,операнд_2

Принцип действия:

операнд_1 = операнд_1 – операнд_2

3. Команда вычитания с учетом заема (флага cf):

sbb операнд_1,операнд_2

Принцип действия:

операнд_1 = операнд_1 – операнд_2 – значение_ cf

Умножение чисел без знака и со знаком

Для умножения чисел без знака предназначена команда

mul сомножитель_1

В команде указан только один операнд-сомножитель. Второй операнд – сомножитель_2 задан неявно. Его местоположение фиксировано (например, для байта – в регистре al) и зависит от размера сомножителей. Так как в общем случае результат умножения больше, чем любой из его сомножителей, то его размер и местоположение должны быть тоже определены однозначно.

Для указания превышения результатом умножения размера регистра используются флаги переноса cf и переполнения of.

Для умножения чисел со знаком предназначена команда

imul операнд_1[,операнд_2,операнд_3]

Эта команда выполняется так же, как и команда mul. Отличительной особенностью команды imul является только формирование знака.

Если результат мал и умещается в одном регистре (то есть, если cf = of = 0), то содержимое другого регистра (старшей части) является расширением знака – все его биты равны старшему биту (знаковому разряду) младшей части результата.

В противном случае (если cf = of = 1) знаком результата является знаковый бит старшей части результата, а знаковый бит младшей части является значащим битом двоичного кода результата.

Деление чисел без знака и со знаком

Для деления чисел без знака предназначена команда

div делитель

Делитель может находиться в памяти или в регистре и иметь размер 8, 16 или 32 бит. Местонахождение делимого фиксировано (например, для слова – в регистре ax) и, так же как в команде умножения, зависит от размера операндов. Расположение частного и остатка также фиксировано. Результатом команды деления являются значения частного и остатка.

Для деления чисел со знаком предназначена команда

idiv делитель

Для этой команды справедливы все рассмотренные положения, касающиеся команд и чисел со знаком.

Задания для домашней подготовки

1. Ознакомиться с основными группами арифметических команд, поддерживаемых целочисленным вычислительным устройством микропроцессора.

 

2. Ознакомиться со способом машинного представления чисел со знаком.

3. Изучить команды сложения целых двоичных чисел со знаком и без знака.

4. Изучить команды вычитания целых двоичных чисел со знаком и без знака.

5. Изучить команды умножения целых двоичных чисел со знаком и без знака.

6. Изучить команды деления целых двоичных чисел со знаком и без знака.

7. Изучить алгоритм вычислительного процесса на ассемблере.

8. Изучить процедуры ввода чисел с клавиатуры и вывода результата вычислений на монитор.

Задания к лабораторной работе

Задание 1

Разработать программу на ассемблере, реализующую вычисление значения x по следующей формуле: x = (a * b + c * 3) / (d – 5).

Результат равен 0000000240

Задание 2

Разработать программу на ассемблере, реализующую вычисление значения x по следующей формуле: x = (a * bc * 3) / (d + 2).

Задание 3

Разработать программу на ассемблере, реализующую вычисление значения x по следующей формуле: x = (a * b) / (c3) * (d + 2).

Задание 4

Разработать программу на ассемблере, реализующую вычисление значения x по следующей формуле: x = (a + b) * (cb) / d * 5.

Задание 5

Разработать программу на ассемблере, реализующую вычисление значения x по следующей формуле: x = (a / b * c / 3) + (d – 5).

Задание 6

Разработать программу на ассемблере, реализующую вычисление значения x по следующей формуле: x = (a / 3 + b * 2) – d / c.

Задание 7

Разработать программу на ассемблере, реализующую вычисление значения x по следующей формуле: x = (ab) * (c + b) / (d2)

Задание 8

Разработать программу на ассемблере, реализующую вычисление значения x по следующей формуле: x = (a + b) / (c + 2) * (d – 1).

Задание 9

Разработать программу на ассемблере, реализующую вычисление значения x по следующей формуле: x = [(ab) * (d – 2)] / 3 * (c + 1).

Задание 10

Разработать программу на ассемблере, реализующую вычисление значения x по следующей формуле: x = [(a + b) * (c – 2)] / 4 * (d + 1).

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

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

Для организации ввода чисел с клавиатуры использовать процедуру asbin, рассмотренную в лабораторной работе № 4. Для вывода результата на экран дисплея использовать процедуру outp. Текст процедуры outp:

outp proc; Начало тела процедуры

mov cx,10; Счетчик цифр для преобразования

lea si,ascval+9; Установка указателя на конец

; массива ascval

mov ax,x; Результат х занести в ax

c20: cmp ax,10; Сравнить результат с числом 10

jb c30; Если меньше то преобразовывать не надо

xor dx,dx; Очистка регистра dx для команды

; деления

div cx; Деление на 10

or dl,30h; Преобразование остатка к ASCII коду

mov [si],dl; Занесение остатка от деления в

; массив ascval

dec si; Перемещение указателя массива на

; 1 байт влево

jmp c20; Переход на начало для преобразования

; след. цифры

c30: or al,30h; Если остаток меньше 10, то вывод

; результата на экран дисплея командами

; (см. ниже)

mov [si],al;

lea dx,ascval; Загрузка адреса массива

mov ah,9; Вызов 9-ой функции MS-DOS

int 21h

ret; Возврат в головную программу из

; п/программы

outp endp; Конец процедуры

2. Отладить заданную программу выполнения арифметических операций.

3. На основе рассмотренной программы разработать программу, реализующую арифметические вычисления по формулам согласно заданиям 1–10

Результаты работы

Создать текст исходной программы организации вычислений по заданной формуле и получить результаты ее работы. Результаты предъявить преподавателю.

Отчет должен содержать:

1. Информацию об арифметических командах ассемблера и особенностях их реализации.

2. Задание к лабораторной работе.

3. Текст разработанной программы с комментариями согласно заданиям 1–10.

4. Результаты работы программы согласно заданиям 1–10.

Вопросы для самопроверки

1. Назначение и функционирование флагов переноса cf и переполнения of регистра флагов при выполнении арифметических команд.

2. С какими типами чисел работает группа арифметических команд?

3. Каким образом в ЭВМ представляется отрицательное число?

4. Команды двоичного сложения. Форматы команд. Где размещаются слагаемые и результат при выполнении команды двоичного сложения?

5. Каким образом осуществляется сложение, если происходит переполнение и перенос единицы из старшего разряда результата?

6. Команды двоичного вычитания. Форматы команд. Где размещаются уменьшаемое, вычитаемое и результат при выполнении команды двоичного вычитания?

7. Каким образом происходит вычитание, если уменьшаемое меньше вычитаемого? Использование при этом регистра флагов.

8. Каким образом выполняется вычитание и сложение чисел большой размерности?

9. Команды умножения чисел без знака и со знаком. Форматы команд. Механизм функционирования команд.

10. Команды деления чисел без знака и со знаком. Форматы команд. Механизм функционирования команд.

11. Организация арифметических операций с многоразрядными числами.



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2016-04-27 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: