ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 10.12.2023

Просмотров: 118

Скачиваний: 1

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
ADD AX, BX; складываем значение регистров mov CX, AX; в регистр СХ помещаем содержимое регистра АХОперация вычитания для формата SS:mov AX, 0110; помещаем в регистр АХ значение 0110mov BX, 0010; помещаем в регистр BX значение 0010SUB AX, BX; вычитание значение регистров mov CX, AX; в регистр СХ помещаем содержимое регистра АХ2.3.2 Алгоритм операции произведенияОперация произведения выполняется за несколько тактов операционного автомата. Умножение вычисления как сумма частичных произведений, каждая из которых получается последовательными сдвигами и умножением множимого на соответствующий разряд множителя. Рассмотрим выполнение алгоритма умножения двоичных чисел в прямом коде, начиная с младших разрядов со сдвигом частичного произведения.А = 0111, Апр = 0,0110В = 0010, Впр = 0,0010Sign[A] = 0; Sign[B] = 0C1 = Апр * B1 * 2-1 = 0,0111*0*2-1 = 0,0110*0*0,1 = 0C2 = Апр * B2 * 2-2 = 0,0111*1*2-2 = 0,0110*1*0,01 =110C3 = Апр * B3 * 2-3 = 0,0111*0*2-3 = 0,0110*0*0,001 = 0C4 = Апр * B4 * 2-4 = 0,0111*0*2-4 = 0,0110*0*0,0001 = 0С = С1+С2+С3+С4 = 0+0,000110+0+0 = 0,00001110Проверка0,01100,001000000001110,00001100Операция умножения в ассемблере выполняется с помощью инструкции MUL, которая может работать только с регистрами общего назначения или памятью и не может работать непосредственно с числами. Данная инструкция имеет одинаковый синтаксис для всех форматов:mov AX, 0110; помещаем в регистр АХ значение 0110mov BX, 0010; помещаем в регистр BX значение 0010MUL AX, BX; перемножаем содержимое регистров АХ и ВХ, результат помещаем в АХ.Если в результате вычисления получается число более 8 бит, то для хранения результата вычисления будет использоваться пара регистров DX и AX.2.3.3 Алгоритм операции деленияОперация деления выполняется за несколько тактов операционного автомата. Для операндов с фиксированной запятой она осуществляется путем последовательного вычисления кода делителя из кода делимого и определения знака остатка.Реализовать операцию деления можно двумя способами:˗ деление с неподвижным делимым и сдвигаемым вправо делителем;˗ деление с неподвижным делителем и сдвигаемым влево делимым.Произведем операцию деления с неподвижным делителем и сдвигаемым влево делимым без восстановления остатка. Для реализации данной операции для чисел А и В запишем прямой код, а для делителя В запишем еще дополнительный код.А=0110 Апр=0,0110 В=0010 Впр=0,0010 Вдоп.=1,1101+0,0001=1,1110Частное

  1. 0,0110
1,1101 10,0011

  1. 0,1010

1,1101 110,0011

  1. 0,0110
1,1101 1110,0011

  1. 0,0110
1,1101 11100,0011

  1. 0,0110
0,0010 111001,1000За четыре сдвига мы получаем целую часть частного 10111 и положительный остаток 0,0001.Деление ассемблере выполняется с помощью инструкции DIV, которая реализуется за несколько тактов операционного автомата. Данная команда не работает непосредственно с числами или сегментными регистрами, а только с регистрами общего назначения или областью памяти. Данная инструкция имеет одинаковый синтаксис для всех форматов:mov AX, 0110; помещаем в регистр АХ значение 0110mov BX, 0010; помещаем в регистр BX значение 0010DIV AX, BX; выполняется деление чисел А/В, результат операции заносится в регистр АХ.Если при делении получается остаток, то его записывают в регистр АН.2.3.4 Алгоритм логических операцийЛогические операции под соответствующими операндами выполняются комбинационными схемами АЛУ. Основными логическими операциями являются: инверсия, конъюнкция, дизъюнкция и эквивалентность. Данные операции перечислены в сложном логическом выражении, для соблюдения которого используют скобки. Логические операции выполняются за 1 такт операционного автомата.Инверсия – битовая операция, при выполнении которой результат отрицания всегда противоположен значению аргумента.Конъюнкция – это функция двух, трех и более переменных и выполняется по правилу: результат равен 1, если все операнды равны 1, во всех остальных случаях результат равен 0.Дизъюнкция – функция двух, трех и более переменных, выполняет логическое сложение и работает по правилу: результат равен 0, если все операнды равны 0, во всех остальных случаях результат будет равен 1.Импликация – функция двух переменных, которые могут принимать значение из множества (0,1), при этом результат так же принадлежит множеству (0,1) и работает по правилу: функция ложная лишь тогда, когда посылка истина, а следствие ложное.Эквивалентность – логическое выражение, которое является истинным тогда, когда оба простых логических выражения имеют одинаковую истинность.Приведем таблицу истинности для перечисленных выше логических операций.На рисунке 5 представим таблицу истинности для инверсии.

Рисунок 5 – Таблица истинности «Инверсия»На рисунке 6 представим таблицу истинности для конъюнкции.Рисунок 6 – Таблица истинности «Конъюнкция» На рисунке 7 представим таблицу истинности дизъюнкции.Рисунок 7 – Таблица истинности «Дизъюнкция»На рисунке 8 представим таблицу истинности импликации.Рисунок 8 – Таблица истинности «Импликация»На рисунке 9 представим таблицу истинности эквивалентности.Рисунок 9 – Таблица истинности «Эквивалентность»Условные обозначения элементов, приведенных выше логических операций, представим на рисунке 10.а) б) в) г) д)Рисунок 10 – Логические элементыНа рисунке представлены:а) – инверсия; б) – конъюнкция; в) – дизъюнкция; г) – импликация; д) – эквивалентность.2.3.5 Команды пересылкиКоманды пересылки предназначены для операций над словами и строками. Основными командами являются команды MOV и MOVS.Команда MOV пересчитывает 1 байт или слово из памяти в регистр, из регистра в память или из регистра в регистр. Она имеет следующий синтаксис: MOV <получатель>,<источник>При использовании данной команды необходимо учитывать следующие правила: ˗ оба операнда должны иметь одинаковую длину;˗ в качестве одного из операндов обязательно должен использоваться регистр;˗ нельзя пересылать непосредственно заданное значение в сегментный регистр.Команда MOVS предназначена для работы над строками, которые представляют собой последовательность байт. В данной команде в качестве операнда могут использоваться регистры разной длины, но при этом должно выполняться следующее правило: содержимое исходного операнда копируется в больший по размеру регистр получателя данных.
На рисунке 11 представим различные способы, которыми в процессе можно пересылать данные из одного места в другое.Рисунок 11 – Пути пересылки данных2.4 Разработка управляющего устройстваДля обеспечения работы всех устройств и узлов вычислительной машины в соответствии с заданной программой обеспечивается центральным устройством управления (ЦУУ), которая вырабатывает управляющие сигналы необходимые для выполнения.Основными функциями устройства управления являются:˗ определение очередности выборки команд из оперативной памяти;˗ формирование физических адресов операндов;˗ формирование сигналов для выполнения арифметических, логических и иных операций при выполнении программы;˗ операция пуска и остановки вычислительного устройства;˗ обеспечение работы вычислительного устройства в различных режимах.На рисунке 12 представим структурную схему управляющего устройства.Рисунок 12 – Структурная схема управляющего устройстваЦУУ – центральное устройство управления, которое выполняет основные функции по реализации программ. Эти функции оно выполняет через МУУ – местное устройство управления, находящиеся при каждом из устройств, входящих в состав вычислительной машины. Оно реализует специальные алгоритмы, соответствующие принципам действия разных внешних устройств.Последовательность управляющих сигналов, вырабатываемых устройством управления зависит от числа выполняемых арифметических, логических операций и формата используемых команд.2.4.1 Разработка формата командФормат команды – это структура команды с разметкой номеров разрядов, определяющих границы отдельных полей команды. Структура любой команды состоит из нескольких полей, основные из которых представим на рисунке 13.Рисунок 13 – Структура командыКод операции (КОП) указывает какая именно операция (арифметическая, логическая и т.п.) выполняется. В адресной части команды указываются адреса операндов. В зависимости от структуры адресной части различают следующие типы команд:

  • безадресные;

  • одноадресные

  • двухадресные;

  • трехадресные;

  • четырехадресные.
Безадресная структура фиксирует адреса обоих операндов и результата операции, например, при работе со стековой памятью.Одноадресная структура. Подразумеваемые адреса имеют результат операции и один из операндов. При этом один из операндов и результат операции размещаются в одном фиксированном регистре. Выделенный для этой цели внутренний регистр процессора получил название аккумулятор. Адрес другого операнда указывается в команде.Двухадресная структура. Используется в вычислительных машинах, построенных так, что результат операции будет всегда помещаться в фиксированный регистр процессора, например, на место первого операнда. Трехадресная структура. Используется в вычислительных машинах, построенных так, что после выполнения команды по адресу K (команда занимает L ячеек памяти) выполняется команда по адресу K+L. Такой порядок выборки команд называется естественным. Он нарушается только специальными командами передачи управления. При естественном порядке выборки адрес следующей команды формируется в устройстве, называемом счетчик адреса команд. В этом случае команда становится трехадресной.Четырехадресная структура. Содержит наиболее полную информацию о выполняемой операции, включает поле кода операции и четыре адреса для указания ячеек памяти двух операндов, ячейки результата операции, и ячейки, содержащей адрес следующей команды. Такой порядок выборки команд называется принудительным. Он использовался в первых моделях вычислительных машин, имеющих небольшое число команд и очень незначительный объем ОП, поскольку длина такой команды зависит от разрядности адресов операндов и результата.Общую длину команды определим по формуле:где Rк – количество бит, отводимое под команду;RAi – количество разрядов для записи i – того адреса;l – количество адресов в команде;RКОП – разрядность поля кода операции;RCA – разрядность поля способа адресации.Так как система команд разрабатываемого устройства предполагает 22 различных операций, то минимальную разрядность поля кода операции определим по формуле:где int – округление в большую сторону до целого;