Пересылка (копирование) данных 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Пересылка (копирование) данных



Для изменения содержимого регистров программным путем обычно используют команду MOV (move — внести), которая позволяет копировать в один регистр число или содержимое другого регистра. Первый операнд инструкции MOV указывает адресат (куда переслать значение), а второй — пересылаемое значение или регистр, его содержащий.

Задание.

С помощью команды MOV поместите числа 1234h и ABCDh, соответственно, в регистры AX и DX. Соответствующие инструкции поместите по адресам 0100h и 0102h.

Далее с помощью команды MOV поместите содержимое младшего байта регистра DX в старший байт регистра AX.

Понятие переполнения

Как и в случае умножения, при выполнении сложения результат может выходить за 16-разрядную сетку (четыре шестнадцатеричных числа). Например, результатом сложения четырехзначных чисел FFFFh и 1h будет пятизначное число 10000h, для записи которого слова (двух байт) недостаточно.

Если результат выполнения операции (над беззнаковыми величинами!) не может быть полностью размещен в регистре, то говорят о возникновении переполнения.

При выполнении сложения беззнаковых чисел суть переполнения (в двоичном представлении) состоит в том, что в результате сложения двух единиц в старшем разряде возникает единица, выходящая за разрядную сетку результирующего регистра. Естественно, что эта единица в регистр помещена быть не может, и при записи в регистр отсекается.

Задание.

Выполните сложение чисел FFFFh (AX) и 1h (BX). Каков результат операции?

Регистр флагов.

Флаг - это бит, принимающий значение 1 ("флаг установлен"), если выполнено некоторое условие, и значение 0 ("флаг сброшен") в противном случае. В ПК используется 9 флагов, причем конструктивно они собраны в один 16-разрядный регистр, называемый регистром флагов и обозначаемый как Flags. Эти биты обозначаются буквами C, P, A, Z, S, T, I, D, O. Например, в текстовый редактор загружен текст. Как только вы внесли в текст первое изменение, можно установить в 1 флаг изменений. После сохранения текста значение флага сбрасывается (0). Тогда при выходе из редактора легко проверить, сохранены ли изменения.

Флаг переноса

Если при сложении беззнаковых чисел происходит переполнение (возникает единица переноса за пределы разрядной сетки регистра), то единичка переноса записывается в Carry Flag. В правой половине окна регистров и флагов (Registers) данный флаг обозначается буквой С. Флаг переноса переустанавливается в каждой операции сложения.

Задание.

Проследите за изменением состояния флага переноса при последовательном выполнении следующих операций

1. FFFF + 1

2. FF00 + 1

Использование флага переноса

I. Сложение с использованием флага переноса.

Рассмотренная ранее инструкция сложения ADD выполняет простое сложение двух беззнаковых кодов. Инструкция ADC складывает три числа: два операнда из регистров общего назначения, как и раньше, плюс значение бита флага переноса из регистра флагов.

Задание.

а) Выполните сложение FFFFh и 1.

б) Затем выполните инструкцию: ADC BX, AX

В результате сложения 1 и 0, в регистре BX будет число 2. (надо пояснить, что останется в регистрах после первой операции).

II. Вычитание с использованием флага переноса.

При выполнении инструкции SBB из разности операндов вычитается значение флага переноса.

Задание.

а) Выполните сложение FFFFh и 1.

б) Затем выполните инструкцию: SBB BX, AX

Флаг нуля.

Занесите в регистры BX и AX два равных числа, теперь инструкцией SUB произведите вычитание одного числа из другого, в результате чего должен быть установлен флаг нуля Z=1 (Zero Flag).

Флаг знака.

Данный флаг позволяет узнать знак числа. Если вычесть из нуля единицу, то результат будет FFFFh, при этом устанавливается флаг знака S=1 (Sign Flag).

Флаг переполнения.

Флаг переполнения устанавливается в той ситуации, когда этого не должно было произойти. Занесите в регистр AX число 7000h, а в BX 6000h и выполните инструкцию сложения, в результате AX будет содержать число D000h или-12288. Это ошибка, так как результат переполняет слово и является отрицательным, поэтому микропроцессор устанавливает флаг переполнения О=1(Overflow Flag)

1.8. Контрольные вопросы

1. Каковы задача и содержание этапа отладки программ?

2. Типы программ-отладчиков и особенности их работы.

3. Понятие регистра микропроцессора и машинного слова.

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

5. Какова последовательность выполнения инструкции сложения чисел в среде программы Turbo Debugger?

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

7. В каком виде микропроцессор представляет отрицательные числа? Как будет представлен результат выполнения операции 5h – 8h?

8. Поясните особенности представления и именования двухбайтовых регистров общего назначения в виде совокупности двух однобайтовых.

9. Какими особенностями обладает инструкция умножения целых чисел? Где размещаются операнды и результат?

10. Какими особенностями обладает инструкция деления целых чисел? Где размещаются операнды и результат?

11. Поясните, что означает термин "переполнение". Как выяснить, что при выполнении операции произошло переполнение?

12. Что такое флаг, и для чего он нужен?

13. С помощью какой инструкции, и каким образом происходит сложение с учетом флага переноса?

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

15. Объясните назначение флагов переноса и нуля?

Объясните назначение флагов переполнения и знака?



Поделиться:


Последнее изменение этой страницы: 2016-12-30; просмотров: 381; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.188.152.162 (0.008 с.)