Для того, что бы вычесть два числа необходимо сложить дополнительные коды этих чисел, результат вычитания получается в дополнительном коде.
Различают 3 вида специальных кодов:
1. Прямой [х]пр
2. Обратный [х]обр
3. Дополнительный [х]доп
Если представляем числа со знаками, то число, у которого есть 1 в старшем разряде, считается отрицательным.
Положительные числа от 0000 0000 до 0111 1111 (от 0 до +127)
Отрицательные числа от 1000 0000 до 1111 1111 (от 0 до -128)
Для положительных чисел.
Само число, прямой, обратный и дополнительный коды этого числа совпадают друг с другом и равны самому числу. [х] = [х]пр = [х]обр = [х]доп
Например: число 5 = 0000 0101 (в двоичном виде)
[х]пр =0000 0101 – прямой код числа
[х]обр =0000 0101- обратный код числа
[х]доп = 0000 0101 – дополнительный код числа
Для отрицательных чисел
[х]пр – то же самое число, только в старшем разряде ставится единица;
[х]обр – единица в старшем разряде и инверсия числа;
[х]доп = [х]обр + 1.
Например: число -5 = - 0000 0101 (в двоичном виде)
[х]пр = 1000 0101 – прямой код числа (то же самое число и единица в старшем
разряде);
[х]обр = 1111 1010- обратный код числа ([х]пр и инверсия числа);
+0000 0001- прибавив 1 в младшем разряде получим [х]доп
[х]доп =1111 1011 – дополнительный код числа ([х]обр + 1);
К примеру: 4 – 2 = ?
Для того, что бы вычесть два числа необходимо сложить дополнительные коды этих чисел, результат вычитания получается в дополнительном коде.
Для вычитания необходимо получить дополнительные коды чисел:
число 4 (000 0100 В); число - 2 (–0000 0100 В);
[4]пр = 0000 0100 [-2]пр = 1000 0010
|
|
[4]обр =0000 0100 [-2]обр = 1111 1101
[4]доп =0000 0100 [-2]доп =1111 1110
[4]доп + [-2]доп = 0000 0100
+1111 1110
0000 0010 – результат в дополнительном коде
Так как в старшем разряде результата стоит 0 это значит, что результат положительный, следовательно дополнительный код числа равен самому числу. Таким образом, результат равен 0000 0010, то есть числу +2.
К примеру: 5 – 7 = ?
Для вычитания необходимо получить дополнительные коды чисел:
число 5 (000 0101 В) число -7 (- 000 0111 В);
[5]пр = 0000 0101 [-7]пр. = 1000 0111
[5]обр= 0000 0101 [-7]обр = 1111 1000
[5]доп =0000 0101 [-7]доп =1111 1001
Складываем дополнительные коды чисел
[5]доп + [-7]доп = 0000 0101
+1111 1001
1111 1110 – результат в дополнительном коде.
Так как в старшем разряде результата стоит 1 это значит, что результат отрицательный, следовательно из дополнительного кода результата необходимо получить само число, для этого необходимо проинвертировать результат и прибавить 1 в младшем разряде.
1111 1110 (результат сложения чисел в дополнительных кодах).
|
|
0000 0001 (инверсия результата)
+0000 0001 (прибавление 1 в младшем разряде)
0000 0010 (двоичный код числа 2).
Следовательно 5-7 = -2.
КОМАНДЫ АРИФМЕТИЧЕСКИХ ОПЕРАЦИЙ
Общая характеристика
Арифметические команды позволяют выполнить арифметические операции сложения и вычитания с данными, расположенными в различных блоках микропроцессора. Команды реализуют три способа адресации: непосредственный, регистровый и косвенно – регистровый; бывают одно- и двухбайтные; некоторые команды генерируют флаги. Результат операции чаще всего сохраняется в аккумуляторе.
Команды арифметических операций с непосредственным способом адресации | ||||
Код операции | Название | Флаги | Байт | Содержание команды |
ADI Б2 | Сложение А со 2-м байтом | все | 2 | (А) + (Б2)®(А) |
AСI B2 | Сложение А со 2-м байтом и переносом | все | 2 | (А) + (Б2) +(FС)®(А) |
SUI Б2 | Вычитание 2-ого байта команды | все | 2 | (A) – Б2®(А) |
SBI Б2 | Вычитание 2-ого байта команды с заёмом | все | 2 | (А) – Б2 – (FС) ®(A) |
|
|
Команды арифметических операций с регистровым способом адресации | ||||
Код операции | Название | Флаги | Байт | Содержание команды |
ADD R | Сложение А с регистром R | все | 1 | (А)+(R) ®(A). |
ADС R | Сложение с регистром и переносом | все | 1 | (А)+(R)+(FС) ®(A) |
SUB R | Вычитание содержимого регистра | все | 1 | (А) –(R) ®(A) |
SBB R | Вычитание содержимого регистра c заёмом | все | 1 | (А) – (R)–(FС)®(A). |
DAD B | Сложение содержимого регистров H,L и B,C | С | 1 | (B,C)+(H,L)®(H,L) |
DAD D | Сложение содержимого регистров H,L и D,E | C | 1 | (D,E)+(H,L)®(H,L) |
DAD H | Удвоение содержимого регистров H,L | C | 1 | (H,L)+(H,L)®(H,L) |
DAD SP | Сложение содержимого УС и регистров H,L | C | 1 | (УC)+(H,L)®(H,L) |
DCR R | Декремент регистра | ZSPC’ | 1 | (R)-1®(R). |
DCR M | Декремент памяти | ZSPC’ | 1 | (<HL>)-1®(<HL>). |
DCX B | Декремент регистров В,С | нет | 1 | (BC)-1®(BC). |
DCX D | Декремент регистров D,E | нет | 1 | (DE)-1®(DE). |
DCX H | Декремент регистров H,L | нет | 1 | (HL)-1®(HL). |
DCX SP | Декремент указателя стека | нет | 1 | (УС)-1®(УС). |
INR R | Инкремент регистра | ZSPC’ | 1 | (R)-1®(R). |
INR M | Инкремент памяти | ZSPC’ | 1 | (<HL>)+1®(<HL>). |
INX B | Инкремент пары регистров В,С | нет | 1 | (BC)+1®(BC). |
INX D | Инкремент пары регистров D,E | нет | 1 | (DE)+1®(DE). |
INX H | Инкремент пары регистров H,L | нет | 1 | (HL)+1®(HL). |
INX SP | Инкремент указателя стека | нет | 1 | (УС)+1®(УС). |
DAA | Десятичная коррекция аккумулятора | все | 1 | Преобразует содержимое аккумулятора в двоично-десятичную форму |
|
|
Команды арифметических операций с косвенно-регистровым способом адресации | ||||
Код операции | Название | Флаги | Байт | Содержание команды |
ADD M | Сложение А с памятью | все | 1 | (А)+(М) ®(А) |
ADС M | Сложение А с памятью и переносом | все | 1 | (А)+(М)+(FС)®(А) |
SUB M | Вычитание содержимого ячейки памяти из А | все | 1 | (А)–(<HL>)®(A) |
SBB M | Вычитание содержимого ячейки памяти с заёмом | все | 1 | (А)–(<HL>)–(FС)®(A) |
ЛОГИЧЕСКИЕ ОСНОВЫ ЭВМ
Современные вычислительные машины могут выполнять не только арифметические, но и логические операции. Машина производит определённое преобразования над двоичными числами в результате которого, получается двоичное число, которое является результатом выполнения соответствующей логической операции.
В основе логических схем и устройств ЭВМ лежит специальный математический аппарат, который называется математической логикой. Используется только начальный раздел, который называется алгеброй логики или булевой алгеброй.
Булевая алгебра занимается исчислением высказываний (Буль 1815 – 1866 гг.).
Высказывание - это утверждение, о котором можно сказать: оно ложно илиистинно. В булевой алгебре содержимым высказывания не интересуются, а интересуются лишь их истинностью или ложностью.
Из нескольких простых высказываний с помощью союзов И, ИЛИ, НЕ можно составить сложное (составное) высказывание, которое тоже будет истинно или ложно. Если высказывание истинно, то его обозначают логической единицей, а если ложно, то логическим нулем.
Пример: Москва стоит на Неве –0 –ложное высказывание
Ленинград стоит на Неве-1- истинное высказывание
Москва стоит на Неве (ложное высказывание)ИЛИ Ленинград стоит на Неве (истинное высказывание) в результате получается истинное высказывание .
Таким образом, значение высказываний можно рассматривать, как переменную величину, которая принимает два дискретных значения '' 0 '' или '' 1 '' – это приводит к полному соответствию между логическими высказываниями в математической логике и двоичными цифрами в двоичной системе исчисления. Это позволяет описывать работу логических схем и проводить их анализ и синтез с помощью математического аппарата алгебры логики.
Общий вид логических функций
На вход подаются логические переменные X1....Хn, которые могут принимать значения 0 или 1.
На выходе получаем функции алгебры логики (ФАЛ) f (x1, x2, … , xn) = (0;1), которые также могут принимать значения 0 или 1.
Связь между входными переменными X1 ... Хn и функциями алгебры логики f (x1, x2, … , xn) может быть представлена аналитическим или табличным способом.
При аналитическом способе, связи между логическими переменными представляются в виде логических уравнений. Этот способ достаточно компактен, но труден для восприятия человека и используется при большом количестве входных переменных.
При табличный способе – связь между входными переменными представляется в виде таблицы. Этот способ более прост и нагляден, но при большом количестве входных переменных становится громоздким и трудно поддаётся анализу.
Строго доказано, что количество возможных наборов входных переменных зависит от количества этих переменных. Для “n” переменных существует К=2n наборов входных переменных.
X1 | X2 |
0 | 0 |
0 | 1 |
1 | 0 |
1 | 1 |
Например: при n =2 можно получить четыре набора входных переменных (К=2n= 22 = 4)
Общее число логических функций, которые могут быть получены при n логических переменных, равно 2К.
Например: при n=2, К=4 общее число логических функций будет равно 24=16. При n=3, К=8 общее число логических функций будет равно 28=256.
Таблица логических функций для двух логических переменных (Х1,Х2)
X1 | X2 | y1 | y2 | y3 | y4 | y5 | y6 | y7 | y8 | y9 | y10 | y11 | y12 | y13 | y14 | y15 | y16 |
0 | 0 | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 1 |
0 | 1 | 0 | 0 | 1 | 1 | 0 | 0 | 1 | 1 | 0 | 0 | 1 | 1 | 0 | 0 | 1 | 1 |
1 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 |
1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
y9 (X1 X2 )=X1^ X2 (конъюнкция, логическое умножение, логическое И) – функция y9 =1 при X1 =1, X2 =1, в остальных случаях равна нулю.
X1 | X2 | y9 |
0 | 0 | 0 |
0 | 1 | 0 |
1 | 0 | 0 |
1 | 1 | 1 |
Правила выполнения логического И: 0 Ù 0 = 0
0 Ù 1 = 0
1 Ù 0 = 0
1 Ù 1 = 1
y8(X1 X2 ) = X1 Ù X2 - отрицание конъюнкции (функция Шеффера,) –
функция y8 = 0 при X1 = 1, X2 = 1, в остальных случаях функция равна 0.
Правила выполнения логического отрицания ИЛИ: 0 Ú 0 =1
0 Ú 1 =1
1 Ú 0 =1
1 Ú 1 =0
y15(X1 X2 ) =X1 Ú X2– дизъюнкция (логическое сложение, операция ИЛИ) – функция y15=0 при X1 =0 и X2 = 0 , в остальных случаях y15=1.
y2(X1 X2 )= X1 Ú X2 - отрицание дизъюнкции, функция y2 =1при X1 = 0 и X2 = 0 , в остальных случаях y2=0.
y10(X1 X2 ) =X1 ~X2-эквивалентность (равнозначность) – функция y10 =1 при X1 =X2, в остальных случаях y10 = 0.
y7(X1 X2 ) =X1 ~X2 – отрицание эквивалентности (равнозначности) - функция y7= 0 при X1 = X2, в остальных случаях y7 = 1.
y12(X1 X2 ) = X1®X2 - импликация X1 в X2 , функция y12 = X2 при X1 =1, в остальных случаях y12 = 1.
y14(X1 X2 ) = X2 ®X1 - импликация X2 в X1 , функция y14 = X1 при X2 =1, в остальных случаях y14 = 1.
Дата добавления: 2018-05-13; просмотров: 291; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!