1.Сумматор или схема логического умножения - служит для получения суммы или логического умножения величин, подаваемых на вход АЛУ.
2.Буферный регистр - используется для временного хранения информации. Разрядность регистра на 1 больше разрядностей шины и А, этот разряд служит для генерации переноса .
3.Шины левого и правого входа - для передачи содержимого А и БРО. 4.Усторйство формирования обратного кода, позволяет поданное на него число получить в обратном коде.
5.Вентильные схемы управляют работой АЛУ.
Сумматор реализуется по типовой схеме полного сумматора, нами уже рассмотренной. Он обеспечивает сложение двух восьмиразрядных слов данных. В АЛУ сумматор объединен в один блок со схемой логического умножения обеспечивающей поразрядное получение функции &.В блоке входные шины разветвляются на оба устройства(комбинационная логика).Выходы обеих устройств объединены через вентильные схемы В9 и В10.Взависимости от того, на какую из них будет подан сигнал управления, на выход к буферному регистру будет подан один из получившихся результатов:(В10 – +I, В9(1) – &, В9(0) – å).
Формирователь обратного кода представляет собой управляемую восьмиразрядную инвертирующую схему, функция которой поразрядное инвертирование поданного на нее слова данных.
При подаче управления на В7 “1” подается на В2 и “0” на В1 В результате данные проходят через восьмиразрядный инвертор НЕ-х. При отсутствии управления “0” подается на В2 и “1” на В1,что обеспечивает пропускание данных без изменений.
Таким образом для получения суммы двух слагаемых УУ подает импульсы управления на вентильные схемы, передающие информацию из БРО(В1) и А(В4) на шины левого и правого входа АЛУ. Получившаяся в результате в буферном регистре АЛУ сумма переносится в А подачей управления на В22.
Для получения разности дополнительно подаются импульсы управления на В7 или В8,в зависимости от того, какое слагаемое(поданное на левый вход или на правый должно быть взято со знаком “-“),кроме того подается импульс управления на В1,увеличивающий полученную сумму на единицу. Это эквивалентно суммированию в дополнительном коде. Этот код используется для представления отрицательных чисел в большинстве микропроцессорных систем.
Дополнением M n-разрядного числа k называют разность М = b n - k,
где b - основание системы счисления т.к. количество различных целых n - разрядных чисел равно b n (от 0 до b n -1 то половину таких чисел рассматривают как положительные (от 1 до b n /2-1 , а другую как отрицательные, т.н. дополнения. Сумма числа со своим дополнением при отбрасывании своего переноса дает 0:
Правило получения дополнения: М=b n - k =((b n -1) - k)+1
1.Произвести инверсию кода: (b n -1) - k
-1
-2
-3
2.Прибавить 1 в младший разряд: +1
Согласно этому правилу и работает АЛУ, т.е. для получения разности, вычитаемое необходимо взять в дополнительном коде, т.е. получить обратный код (управление ФОК) и прибавить единицу В10.
Таким образом, возможности обобщенного АЛУ ограничены тремя операциями:
1.сложение
2.вычитание
3.логическое умножение
Все остальные операции—программным путем.
5. Составить на языке ассемблера 8080(8086) программу, осуществляющую следующие операции:
Программа вычисляет сумму восьмиразрядных двоичных чисел C= A + B ,и, если она больше заданного D, приравнивает C единице, в противном случае C приравнивается 0
Описание исходного кода:
.8086 задаётся целевой набор операций для процессора 8086
.MODEL TINY задается модель памяти — COM-файл для MS-DOS
.DOSSEG определяется соответствие сегментов кода, данных и стека
.DATA сегмент данных - переменные
VarA DB 9 значение переменных для задачи задаётся здесь
VarB DB 4
VarC DB ?
VarD DB 5
.CODE сегмент кода
.STARTUP задаётся точка входа в программу
mov al, [VarA] переменная A загружается в 8-битный регистр al
mov bl, [VarB] переменная B загружается в 8-битный регистр bl
mov cl, al копирование регистра al в регистр cl
add cl, bl вычисление суммы cl и bl (A+B)
cmp cl, [VarD] сравнение полученной суммы с переменной D
mov cl, 1 присвоение регистру cl значения 1
jg gr если результат «cl>D» истинный, то переход к gr
mov cl, 0 иначе присвоение регистру cl значения 0
gr:
mov [VarC], cl сохранение cl в переменной С
mov ah, 4ch код выхода из программы для int 21h
mov al, cl в качестве кода завершения возвращаем переменную C