
- •Разработка прикладной программы
- •Трансляция прикладной программы
- •Выполнение прикладной программы
- •Программный счетчик рс микропроцессора выставляет на шину адреса ша код адреса 0003.
- •Программный счетчик рс микропроцессора выставляет на шину адреса ша код адреса 0006.
- •В программном счетчике рс сформирован адрес следующей команды, равный 0008.
- •Программный счетчик рс микропроцессора выставляет на шину адреса ша код адреса 0008.
- •Анализ результата выполнения прикладной программы
В программном счетчике рс сформирован адрес следующей команды, равный 0008.
ВЫПОЛНЕНИЕ ЧЕТВЕРТОЙ КОМАНДЫ HLT
Программный счетчик рс микропроцессора выставляет на шину адреса ша код адреса 0008.
Код адреса 0008 по шине адреса ША передается оперативному запоминающему устройству ОЗУ. В ОЗУ по адресу 0008 записан КОП четвертой команды F4.
ОЗУ выставляет на ШД содержимое ячейки памяти 0008, равное F4.
КОП четвертой команды F4 по шине данных ШД передается в регистр команд РК операционного блока микропроцессора.
Устройство управления УУ операционного блока декодирует КОП четвертой команды F4, в котором зашифрована следующая информация.
Тип операции: останов прикладной программы.
Длина команды в байтах: один байт.
Способ адресации операнда: операнда нет.
Выполнение прикладной программы завершено и управление передается операционной системе.
Анализ результата выполнения прикладной программы
Результат выполнения сложения двух чисел FFFFh+0001h равен 0000h.
Значение результата в программе, разработанной на языке Ассемблера, зависит от соглашения по формату данных, принятого программистом.
Формат данных может быть двух типов: без знака (unsigned) и со знаком (signed).
Анализ результата в формате без знака (unsigned).
В формате без знака (unsigned) все числа 216=65536 диапазона шестнадцатиразрядной сетки являются положительными.
Диапазон чисел без знака (unsigned):
- в десятичной системе 010÷6553510;
- в шестнадцатеричной системе 0000h÷FFFFh;
- в двоичной системе 00000000000000002÷11111111111111112.
Полученный результат в диапазоне чисел без знака:
- в десятичной системе 6553510+110=010;
- в шестнадцатеричной системе FFFFh+0001h=0000h;
- в двоичной системе 11111111111111112+00000000000000012=00000000000000002.
Результат, который должен был быть получен:
- в десятичной системе 6553510+110=6553610;
- в шестнадцатеричной системе FFFFh+0001h=10000h;
- в двоичной системе 11111111111111112+00000000000000012=100000000000000002.
Вывод: результат 0000h неправильный, т.к. в формате без знака происходит переполнение разрядной сетки и результат 6553610 не входит в диапазон чисел без знака 010÷6553510.
Программа контролирует переполнение разрядной сетки в формате без знака по флагу CF регистра FLAGS: CF=1 (есть переполнение).
Анализ результата в формате со знаком (signed).
В формате со знаком (signed) одна половина чисел 216=6553610 диапазона шестнадцатиразрядной сетки является положительной и другая половина является отрицательной.
Диапазон чисел со знаком (signed):
- в десятичной системе -3276810÷+3276710;
- в шестнадцатеричной системе 8000h÷7FFFh;
- в двоичной системе 10000000000000002÷01111111111111112.
Результат, который должен был быть получен:
- в десятичной системе -110+110=010;
- в шестнадцатеричной системе FFFFh+0001h=0000h;
- в двоичной системе 11111111111111112+00000000000000012=00000000000000002.
Вывод: результат 0000h правильный, т.к. в формате со знаком 010 входит в диапазон чисел без знака -3276810÷+3276710.
Программа контролирует переполнение разрядной сетки в формате со знаком по флагу ОF регистра FLAGS: ОF=0 (нет переполнения).