Вычислительные машины и системы
ПЕРВЫЙ СЕМЕСТР
ЛЕКЦИЯ N 1
2ОСНОВЫ МАШИННОЙ АРИФМЕТИКИ
2Системы счисления и способы перевода чисел
2из одной системы в другую.
Системой счисления называют систему приемов и правил, позво-
ляющих устанавливать взаимно-однозначное соответствие между любым
числом и его представлением в виде совокупности конечного числа
символов. Множество символов, используемых для такого представле-
ния, называют цифрами.
В зависимости от способа изображения чисел с помощью цифр
системы счисления делятся на 1позиционные 0 и 1непозиционные 0.
В 1непозиционных 0 системах любое число определяется как неко-
торая функция от численных значений совокупности цифр, представ-
ляющих это число. Цифры в непозиционных системах счисления соот-
ветствуют некоторым фиксированным числам. Пример непозиционной
системы - римская система счисления. В вычислительной технике не-
позиционные системы не применяются.
Систему счисления называют 1позиционной 0, если одна и та же
цифра может принимать различные численные значения в зависимости
от номера разряда этой цифры в совокупности цифр, представляющих
заданное число. Пример такой системы - арабская десятичная систе-
ма счисления.
В позиционной системе счисления любое число записывается в
виде последовательности цифр:
A = 7+ 0 a 4m-1 0 a 4m-2 0 ... a 4k 0 ... a 40 0 , a 4-1 0 ... a 4-l 0 (I)
Позиции, пронумерованные индексами k (-l < k < m-1) называ-
ются разрядами числа. Сумма m+l соответствует количеству разрядов
числа (m - число разрядов целой части числа, l - дробной части).
Каждая цифра a 4k 0 в записываемой последовательности может при-
нимать одно из N возможных значений. Количество различных цифр
(N), используемых для изображения чисел в позиционной системе
счисления, называется основанием системы счисления. Основание N
указывает, во сколько раз единица k+1 -го разряда больше единицы
k -го разряда, а цифра a 4k 0 соответствует количеству единиц k -го
разряда, содержащихся в числе.
Таким образом, число может быть представлено в виде суммы:
(A) 4N 0 = 7+ 0(a 4m-1 0N 5m-1 0 + a 4m-2 0N 5m-2 0 +...+ a 40 0 + a 4-1 0N 5-1 0 +...+ a 4-l 0N 5-l 0) (II)
Основание позиционной системы счисления определяет ее назва-
ние. В вычислительной технике применяются двоичная, восьмеричная,
десятичная и шестнадцатеричная системы. В дальнейшем, чтобы явно
указать используемую систему счисления, будем заключать число в
скобки и в индексе указывать основание системы счисления.
- 2 -
В двоичной системе счисления используются только две цифры:
0 и 1. Любое двоичное число может быть представлено в следующей
форме:
(A) 42 0 = 7+ 0(a 4m-1 02 5m-1 0 + a 4m-2 02 5m-2 0 + ... + a 40 0 + a 4-1 02 5-1 0 + ... + a 4-l 02 5-l 0)
Например, двоичное число
(10101,101) 42 0 = 1*2 54 0+0*2 53 0+1*2 52 0+0*2+1+1*2 5-1 0+0*2 5-2 0+1*2 5-3 0 = (21,625) 410
В восьмеричной системе счисления для записи чисел использу-
ется восемь цифр (0,1,2,3,4,5,6,7), а в шестнадцатеричной - шест-
надцать (0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F).
Таблица для перевода чисел из одной системы счисления в другую.
──────────────┬──────────────────┬──────────────┬────────────────
Двоичные │ Восьмеричные │ Десятичные │ Шестнадцате-
числа │ числа │ числа │ ричные числа
──────────────┼──────────────────┼──────────────┼────────────────
0,0001 │ 0,04 │ 0,0625 │ 0,1
0,001 │ 0,1 │ 0,125 │ 0,2
0,01 │ 0,2 │ 0,25 │ 0,4
0,1 │ 0,4 │ 0,5 │ 0.8
1 │ 1 │ 1 │ 1
10 │ 2 │ 2 │ 2
11 │ 3 │ 3 │ 3
100 │ 4 │ 4 │ 4
101 │ 5 │ 5 │ 5
110 │ 6 │ 6 │ 6
111 │ 7 │ 7 │ 7
1000 │ 10 │ 8 │ 8
1001 │ 11 │ 9 │ 9
1010 │ 12 │ 10 │ A
1011 │ 13 │ 11 │ B
1100 │ 14 │ 12 │ C
1101 │ 15 │ 13 │ D
1110 │ 16 │ 14 │ E
1111 │ 17 │ 15 │ F
10000 │ 20 │ 16 │ 10
──────────────┴──────────────────┴──────────────┴────────────────
Для хранения и обработки данных в ЭВМ используется двоичная
система, так как она требует наименьшего количества аппаратуры по
сравнению с другими системами. Все остальные системы счисления
применяются только для удобства пользователей.
В двоичной системе очень просто выполняются арифметические и
логические операции над числами.
- 3 -
Таблица сложения:
0 + 0 = 0
0 + 1 = 1
1 + 0 = 1
1 + 1 = 10
Таблица умножения:
0 * 0 = 0
0 * 1 = 0
1 * 0 = 0
1 * 1 = 1
Многоразрядные числа складываются, вычитаются, умножаются и
делятся по тем же правилам, что и в десятичной системе счисления.
Перевод числа из одной системы в другую выполняется по уни-
версальному алгоритму, заключающемуся в последовательном 2делении
1целой 0 части числа и образующихся 1целых частных 0 на 2 основание 0 новой
системы счисления, записанное 2в исходной 0системе 2 0счисления, и в
последующем 2умножении 0 1дробной 0 части и 1дробных частей 0 получающихся
1произведений 0 на то же основание, записанное 2в 0 2 исходной 0системе
счисления.
При переводе 1целой 0 части получающиеся в процессе последова-
тельного деления остатки представляют цифры целой части числа в
новой системе счисления, записанные цифрами исходной системы
счисления. Последний остаток является 2старшей 0 цифрой переведенно-
го числа.
При переводе 1дробной 0 части числа 2целые 0 части чисел, получаю-
щихся при умножении, не участвуют в последующих умножениях. Они
представляют собой цифры дробной части исходного числа в новой
системе счисления, изображенные числами старой системы. Значение
первой целой части является 2первой 0 цифрой после запятой переве-
денного числа.
.
- 4 -
Пример перевода числа 30,6 из десятичной системы в двоичную:
1Перевод целой части Перевод дробной части
Последовательное Остатки Целые части - Последовательное
деление разряды пере- умножение
веденной дроби
0, 6
X
2
30 / 2 0 ──────┐ ───────────────────
15 / 2 1 ─────┐│ ┌──── 1, 2
7 / 2 1 ────┐││ │ X
3 / 2 1 ───┐│││ │ 2
1 / 2 1 ──┐││││ │ ───────────────────
0 │││││ │┌─── 0, 4
│││││ ││ X
│││││ ││ 2
│││││ ││ ───────────────────
│││││ ││┌── 0, 8
│││││ │││ X
│││││ │││ 2
│││││ │││ ───────────────────
│││││ │││┌─ 1, 6
│││││ ││││
Результат: 11110,1001
Если при переводе дробной части получается периодическая
дробь, то производят округление, руководствуясь заданной точ-
ностью вычислений.
Пример перевода числа 111110,01 из двоичной системы в десятичную.
1Перевод целой части Перевод дробной части
0, 0100
X
1010
_111110| _1010 . ───────────────────
_1010 . |110 ────────┐ ┌───── 10, 1000
1011 │ │ X
_1010 . │ │ 1010
10 ────────────┼┐ │ ───────────────────
││ │┌─── 101, 0000
││ ││
Результат: 62,25
- 5 -
Примечание 1: 1010 - основание десятичной системы счисления
в двоичной записи.
Примечание 2: десятичные эквиваленты разрядов искомого числа
находим по таблице.
При переводе чисел из любой системы счисления в десятичную
удобнее пользоваться непосредственно формулой (II):
(775) 48 0 = 7*8 52 0 + 7*8 + 5 = (509) 410
Для осуществления автоматического перевода десятичных чисел
в двоичную систему счисления необходимо вначале каким-то образом
ввести их в машину, Для этой цели обычно используется двоично-де-
сятичная запись чисел или представление этих чисел в кодах ASCII.
При двоично-десятичной записи каждая цифра десятичного числа
заменяется четырехзначным двоичным числом (тетрадой):
(983,65) 410 0 = (1001 1000 0011, 0110 0101) 42-10
При записи чисел в кодах ASCII цифрам от 0 до 9 поставлены
в соответствие восьмиразрядные двоичные коды от 00110000 до
00111001.
ЭВМ, предназначенные для обработки экономической информации,
например IBM AT, позволяют производить арифметические операции в
десятичной системе счисления над числами, представленными в дво-
ично-десятичных кодах и кодах ASCII.
Шестнадцатеричная и восьмеричная системы счисления использу-
ются только программистами и операторами ЭВМ, так как представле-
ние чисел в этих системах более компактное, чем в двоичной, и пе-
ревод из этих систем в двоичную и обратно выполняется очень прос-
то (основания этих систем представляют собой целую степень числа
2).
Для перевода восьмеричного числа в двоичное достаточно каж-
дый восьмеричный разряд представить тремя двоичными (триадой), а
для перевода шестнадцатиричного числа - четырьмя (тетрадой):
(376,51) 48 0 = (011 111 110, 101 001) 42
(1AF8) 416 0 = (0001 1010 1111 1000) 42
ПЕРВЫЙ СЕМЕСТР
ЛЕКЦИЯ N 2
2ОСНОВЫ МАШИННОЙ АРИФМЕТИКИ
2Формы представления чисел в ЭВМ.
Разряд двоичного числа представляется в ЭВМ некоторым техни-
ческим устройством, например, триггером, двум различным состояни-
ям которого приписываются значения 0 и 1. Группа таких устройств,
предназначенная для представления в машине многоразрядного числа,
называется регистром.
Структура двоичного регистра, представляющего в машине
n-разрядное слово:
┌───┬───┬───┬───┬───┐
│n-1│n-2│...│ 1 │ 0 │
└───┴───┴───┴───┴───┘
Отдельные запоминающие элементы пронумерованы от 0 до n-1.
Количество разрядов регистра определяет точность представления
чисел. Путем соответствующего увеличения числа разрядов регистра
может быть получена любая точность вычислений, однако это сопря-
жено с увеличением количества аппаратуры (в лучшем случае зависи-
мость линейная, в худшем - квадратичная).
В ЭВМ применяются две основные формы представления чисел:
полулогарифмическая с плавающей запятой и естественная с фиксиро-
ванным положением запятой.
При представлении чисел с фиксированной запятой положение
запятой закрепляется в определенном месте относительно разрядов
числа и сохраняется неизменным для всех чисел, изображаемых в
данной разрядной сетке. Обычно запятая фиксируется перед старшим
разрядом или после младшего. В первом случае в разрядной сетке
могут быть представлены только числа, которые по модулю меньше 1,
во втором - только целые числа.
Для кодирования знака числа используется старший ("знако-
вый") разряд.
При выполнении арифметических действий над правильными дро-
бями могут получаться двоичные числа, по абсолютной величине
больше или равные единице, что называется 1 переполнением разрядной
1сетки. 0 Для исключения возможности переполнения приходится масшта-
бировать величины, участвующие в вычислениях.
Диапазон представления правильных двоичных дробей:
2 5-(n-1) 0 7, 0 │(A)│ 7 , 0 1 - 2 5-(n-1) 0 .
.
- 2 -
Числа, которые по абсолютной величине меньше единицы младше-
го разряда разрядной сетки, называются 2машинным нулем 0.
Диапазон представления целых двоичных чисел со знаком в
n-разрядной сетке:
0 7, 0 │(A)│ 7 , 0 2 5n-1 0 - 1 .
Использование представления чисел с фиксированной запятой
позволяет упростить схемы машины, повысить ее быстродействие, но
представляет определенные трудности при программировании. В нас-
тоящее время представление чисел с фиксированной запятой исполь-
зуется как основное только в микроконтроллерах.
В универсальных ЭВМ основным является представление чисел с
плавающей запятой. Представление числа с плавающей запятой в об-
щем случае имеет вид:
A = 7+ 0m * N 5+p 0 ,
где N - основание системы счисления,
p - целое число, называемое порядком числа A,
m - мантисса числа A (│m│<1).
Так как в ЭВМ применяется двоичная система счисления, то
A = 7+ 0m * 2 5+p 0 ,.
причем порядок и мантисса представлены в двоичной форме.
Двоичное число называется нормализованным, если его мантисса
удовлетворяет неравенству
1/2 7, 0 │ m │ 7 0< 1 .
Неравенство показывает, что двоичное число является нормали-
зованным, если в старшем разряде мантиссы стоит единица. Напри-
мер, число 0,110100*10 5100 0 - нормализованное, а 0,001101*10 5110 0 -
ненормализованное.
Ситуация, когда в процессе вычислений получено число с │m│ 7. 01
называется переполнением разрядной сетки.
Нормализованное представление чисел позволяет сохранить в
разрядной сетке большее количество значащих цифр и, следователь-
но, повышает точность вычислений. Однако современные ЭВМ позволя-
ют, при необходимости, выполнять операции также и над ненормали-
зованными числами.
.
- 3 -
Диапазон представления нормализованных двоичных чисел, взя-
тых по абсолютному значению, удовлетворяет неравенству:
2 5-1 0* 5 02 5-(2k-1) 7 , 0 │(A)│ 7, 0 (1 5 0- 5 02 5-l 0) 5 0* 5 02 52k-1 0 ,
где l - число разрядов мантиссы;
k - число разрядов порядка;
2 5-1 0 - наименьшее значение нормализованной мантиссы;
1-2 5-l 0 - наибольшее значение нормализованной мантиссы.
Широкий диапазон представления чисел с плавающей запятой
удобен для научных и инженерных расчетов. Для повышения точности
вычислений во многих ЭВМ предусмотрена возможность использования
формата двойной длины, однако при этом происходит увеличение зат-
рат памяти на хранение данных и замедляются вычисления.
2Представление отрицательных чисел в ЭВМ.
Для кодирования знака двоичного числа используется старший
("знаковый") разряд (ноль соответствует плюсу, единица - минусу).
Такая форма представления числа называется 2прямым кодом 0.
Формула для образования прямого кода правильной дроби имеет вид:
7(
72 0 A, если A 7. 00,
[A] 4пр 0 = 7 *
72 0 1-A, если A<0.
79
Примеры:
A = 0,110111 --> [A] 4пр 0 = 0,110111
A = -0,110111 --> [A] 4пр 0 = 1 - (-0,110111) = 1,110111
Прямой код целого числа получается по формуле:
7(
72 0 5 0 A, если A 7. 00,
[A] 4пр 0 = 7 *
72 010 5n-1 0- 5 0A, если A<0.
79
где 10 - число 2 в двоичной системе счисления,
n - количество позиций в разрядной сетке.
Например, при n=8
A = 110111 --> [A] 4пр 0 = 00110111
A = -110111 --> [A] 4пр 0 = 10000000 - (-110111) = 10110111
В ЭВМ прямой код применяется только для представления поло-
жительных двоичных чисел. Для представления отрицательных чисел.
применяется либо дополнительный, либо обратный код, так как над
- 4 -
отрицательными числами в прямом коде неудобно выполнять арифмети-
ческие операции.
Формула для образования дополнительного кода 4 0дроби:
[A] 4доп 0 = 10 + A.
Формула для образования обратного кода 4 0дроби:
[A] 4обр 0 = 10 - 10 5-(n-1) 0 + A.
Например, при n = 8, для A = -0,1100001
[A] 4доп 0 = 10 + (-0,1100001) = 1,0011111
[A] 4обр 0 = 10-10 5-7 0+(-0,1100001) = 1,1111111-0,1100001 = 1,0011110.
Формула для образования дополнительного кода 4 0целого числа:
[A] 4доп 0 = 10 5n 0 + A.
Формула для образования обратного кода 4 0целого числа:
[A] 4обр 0 = 10 5n 0 - 1 + A.
Например, при n = 8, для A = -1100001
[A] 4доп 0 = 100000000 + (-1100001) = 10011111
[A] 4обр 0 = 100000000-1+(-1100001) = 11111111-1100001 = 10011110.
Таким образом, правила для образования дополнительного и об-
ратного кода состоят в следующем:
- для образования дополнительного кода отрицательного числа
необходимо в знаковом разряде поставить единицу, а все цифровые
разряды инвертировать (заменить 1 на 0, а 0 - на 1), после чего
прибавить 1 к младшему разряду;
- для образования обратного кода отрицательного числа необ-
ходимо в знаковом разряде поставить единицу, а все цифровые раз-
ряды инвертировать.
Примечание: при данных преобразованиях нужно учитывать раз-
мер разрядной сетки.
Прямой код можно получить из дополнительного и обратного по
тем же правилам, которые служат для нахождения дополнительного и
обратного кодов.
Замена вычитания двоичных чисел A 41 0- 4 0A 42 0 сложением с дополне-
ниями [A 41 0] 4пр 0+ 4 0[-A 42 0] 4доп 0 или [A 41 0] 4пр 0+ 4 0[-A 42 0] 4обр 0 позволяет опериро-
вать со знаковыми разрядами так же, как и с цифровыми. При этом
перенос из старшего знакового разряда, если он возникает, учиты-
вается по разному для обратного и дополнительного кодов:
- при использовании дополнительного кода единица переноса из
- 5 -
знакового разряда отбрасывается;
- при использовании обратного кода единица переноса из зна-
кового разряда прибавляется к младшему разряду суммы (осуществля-
ется так называемый циклический перенос).
Пример: складываем числа A 41 0=0,10010001 и A 42 0=-0,01100110
При использовании обратного кода получим:
[A 41 0] 4пр 0 = 0,10010001
+
[A 42 0] 4обр 0 = 1,10011001
───────────
10,00101010
└─────── +1
───────────
Результат: 0,00101011
При использовании дополнительного кода получим:
[A 41 0] 4пр 0 = 0,10010001
+
[A 42 0] 4доп 0 = 1,10011010
───────────
Результат: 0,00101011
Если знаковый разряд результата равен нулю, то в получено
положительное число, которое представлено в прямом коде. Если в
знаковом разряде единица, то результат отрицательный и представ-
лен в обратном или дополнительном коде.
Для того, чтобы избежать ошибок при выполнении бинарных опе-
раций, перед переводом чисел в обратные и дополнительные коды не-
обходимо выравнивать количество разрядов прямого кода операндов.
При сложении чисел, меньших единицы, в машине быть получены
числа, по абсолютной величине большие единицы. Для обнаружения
переполнения разрядной сетки в ЭВМ применяются 2 модифицированные
прямой, обратный и дополнительный коды. В этих кодах знак кодиру-
ется двумя разрядами, причем знаку "плюс" соответствует комбина-
ция 00, а знаку "минус" - комбинация 11.
Правила сложения для модифицированных кодов те же, что и для
обычных. Единица переноса из старшего знакового разряда в модифи-
цированном дополнительном коде отбрасывается, а в модифицирован-
ном обратном коде передается в младший цифровой разряд.
Признаком переполнения служит появление в знаковом разряде
суммы комбинации 01 при сложении положительных чисел (положитель-
ное переполнение) или 10 при сложении отрицательных чисел (отри-
цательное переполнение). Старший знаковый разряд в этих случаях
- 6 -
содержит истинное значение знака суммы, а младший является стар-
шей значащей цифрой числа. Для коррекции переполнения число нужно
сдвинуть в разрядной сетке на один разряд вправо, а в освободив-
шийся старший знаковый разряд поместить цифру, равную новому зна-
чению младшего знакового разряда. После корректировки переполне-
ния мантиссы результата необходимо увеличить на единицу порядок
результата.
ПЕРВЫЙ СЕМЕСТР
ЛЕКЦИЯ N 3
2ОСНОВЫ МАШИННОЙ АРИФМЕТИКИ
2Формы представления чисел в ЭВМ 0
2(продолжение)
Система вещественных чисел, применяемая при ручных вычисле-
ниях, предполагается бесконечной и непрерывной, т.е. не существу-
ет никаких ограничений на диапазон используемых чисел и точность
их представления.
Однако в компьютерах реализация такой системы на аппаратном
уровне была бы нецелесообразной, хотя программно может быть реа-
лизована любая точность вычислений. Нецелесообразность аппаратной
реализации вычислений с произвольной точностью вызвана тем, что
такие вычисления требуют неоправданно большого расхода основных
машинных ресурсов: памяти и процессорного времени.
Во всех компьютерах размеры регистров и ячеек памяти фикси-
рованы, что ограничивает систему представления чисел. Ограничения
касаются как диапазона, так и точности представления чисел, т.е.
система машинных чисел оказывается конечной и дискретной.
В любой универсальной ЭВМ существует несколько различных
форматов представления как для чисел с фиксированной, так и для
чисел с плавающей запятой. На некоторые из форматов имеются меж-
дународные стандарты, и поэтому такие форматы являются общими для
ЭВМ, построенных различными фирмами на различной элементной базе.
Следует отметить, что нестандартные форматы обычно являются неяв-
но специализированными для определенных областей применения, при-
чем разработчики аппаратуры могут не указать в документации, для
чего был предназначен тот или иной формат.
С точки зрения программиста важно, какие из форматов данных
обрабатываются аппаратными средствами данной ЭВМ, а какие - толь-
ко программными средствами. Операции над данными любого формата,
который не поддерживается аппаратурой, выполняются очень медлен-
но. Любой формат данных, который превышает размер регистров про-
цессора, не пригоден для быстрых вычислений.
Для представления 2целых чисел 0 в ЭВМ обычно применяются 8-,
16-, 32- и 64-битовый стандартные форматы, причем интерпретация
чисел как знаковых или беззнаковых обычно возлагается на програм-
миста или на компиллятор с языка высокого уровня.
.
- 2 -
Для представления 2 чисел с плавающей запятой 0 также существует
несколько стандартных форматов, различающихся по точности, но
имеющих одинаковую структуру следующего вида:
n-1 n-2 0
┌───╥───┬───┬─────┬───╥───┬───┬─────┬───┐
│ ║ │ │ ... │ ║ │ │ ... │ │
└───╨───┴───┴─────┴───╨───┴───┴─────┴───┘
│ └────────╥────────┘└────────╥───────┘
│ смещенный модуль
знак порядок мантиссы
мантиссы
Порядок p задается в так называемой смещенной форме: если
для задания порядка выделено k разрядов, то к истинному значению
порядка прибавляют смещение, равное (2 5k-1 0 - 1). Использование
смещенной формы позволяет производить операции над порядками, как
над беззнаковыми числами, что упрощает операции сравнения, сложе-
ния и вычитания порядков. Кроме того, использование смещенного
порядка упрощает операцию сравнения нормализованных чисел с пла-
вающей запятой, сводя ее к операции сравнения целых чисел.
Следует отметить, что вещественный формат с m-разрядной ман-
тиссой позволяет абсолютно точно представлять m-разрядные целые
числа, т.е. любое двоичное целое число, содержащее не более m
разрядов, может быть без искажений преобразовано в вещественный
формат.
2Форматы представления чисел в ПЭВМ IBM AT
Рассмотрим стандартные и нестандартные форматы, используемые
для представления чисел в ПЭВМ IBM AT.
В дальнейшем будем использовать на диаграммах следующие
обозначения:
S - знаковый разряд;
E - поле порядка;
M - поле мантиссы;
X - неиспользуемая область;
D - цифра упакованного десятичного целого числа, представ-
ленная в двоично-десятичном коде.
Примечание: основной процессор эффективен только при опера-
циях с целыми числами, разрядность которых не превышает разряд-
ности его внутренних регистров; в остальных случаях более эффек-
тивен математический сопроцессор.
.
- 3 -
1Форматы представления 0 1двоичных целых чисел
1) 8-разрядное целое число без знака (поддерживается всеми
процессорами серии 80x86)
7 0
┌───────────────┐
│ │
└───────────────┘
2) 7-разрядное целое число со знаком (поддерживается всеми
процессорами серии 80x86)
7 6 0
┌─┬─────────────┐
│S│ │
└─┴─────────────┘
3) 16-разрядное целое число без знака (поддерживается всеми
процессорами серии 80x86)
15 0
┌───────────────────────────────┐
│ │
└───────────────┴───────────────┘
4) Word Integer (целое слово) - 15-разрядное целое число со
знаком (поддерживается всеми процессорами серии 80x86 и математи-
ческим сопроцессором)
15 0
┌─┬─────────────────────────────┐
│S│ │
└─┴─────────────┴───────────────┘
5) 32-разрядное целое число без знака (поддерживается всеми
процессорами серии 80x86, но операции с этим форматом выполняются
эффективно только 32-разрядными микропроцессорами, т.е. начиная с
i386SX)
31 0
┌───────────────────────────────────────────────────────────────┐
│ │
└───────────────┴───────────────┴───────────────┴───────────────┘
6) Short Integer (короткое целое) - 31-разрядное целое число
со знаком (поддерживается всеми процессорами серии 80x86 и мате-
матическим сопроцессором, но операции с этим форматом выполняются
эффективно только 32-разрядными микропроцессорами)
.
- 4 -
31 0
┌─┬─────────────────────────────────────────────────────────────┐
│S│ │
└─┴─────────────┴───────────────┴───────────────┴───────────────┘
7) 64-разрядное целое число без знака (частично поддержива-
ется 32-разрядными микропроцессорами)
64 0
┌───────────────────────────────────────────────────────────────┐
│ │
└───────┴───────┴───────┴───────┴───────┴───────┴───────┴───────┘
8) Long Integer (длинное целое) - 63-разрядное целое число
со знаком (поддерживается математическим сопроцессором и частично
поддерживается 32-разрядными микропроцессорами)
64 0
┌─┬─────────────────────────────────────────────────────────────┐
│S│ │
└─┴─────┴───────┴───────┴───────┴───────┴───────┴───────┴───────┘
1Форматы представления 0 1десятичных целых чисел
1) Неупакованное 1-разрядное десятичное целое число без зна-
ка в двоично-десятичном коде (поддерживается всеми процессорами
серии 80x86)
7 4 3 0
┌───────┬───────┐
│0 0 0 0│ D │
└───────┴───────┘
2) 1-разрядное десятичное целое число без знака в коде ASCII
(поддерживается всеми процессорами серии 80x86)
7 4 3 0
┌───────┬───────┐
│0 0 1 1│ D │
└───────┴───────┘
3) Packed Decimal - упакованное 2-разрядное десятичное целое
без знака (поддерживается всеми процессорами серии 80x86)
7 4 3 0
┌───────┬───────┐
│ D 41 0 │ D 40 0 │
└───────┴───────┘
4) Packed Binary Coded Decimal - упакованное 18-разрядное
десятичное целое число со знаком (поддерживается математическим
сопроцессором)
- 5 -
79 0
┌─┬────┬─────────────────────────────────────────────────────┐
│S│ X │D 417 0D 416 0 ... D 41 0 D 40 0│
└─┴────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘
1Форматы представления вещественных чисел
1) Single Format (обычный формат) 1 0или 1 0Short Real (короткое
вещественное) - короткое вещественное нормализованное число со
знаком, 8-разрядным смещенным порядком и 24-разрядной мантиссой
(так как старший бит мантиссы нормализованного числа всегда равен
1, то он не хранится в памяти, и размер поля, выделенного для
хранения мантиссы, составляет только 23 разряда).
31 30 23 22 0
┌─┬───────────────┬─────────────────────────────────────────────┐
│S│ E │ M │
└─┴─────────────┴─┴─────────────┴───────────────┴───────────────┘
2) Double Format(двойной формат) или Long Real (длинное ве-
щественное) - длинное вещественное нормализованное число со
знаком, 11-разрядным смещенным порядком и 53-разрядной мантиссой
(так как старший бит мантиссы нормализованного числа всегда равен
1, то он не хранится в памяти, и размер поля, выделенного для
хранения мантиссы, составляет только 52 разряда).
63 62 52 51 0
┌─┬─────────┬───────────────────────────────────────────────────┐
│S│ E │ M │
└─┴─────┴───┴───┴───────┴───────┴───────┴───────┴───────┴───────┘
3) Extended Format (расширенный формат) или 1 0Single Extended
(обычный расширенный формат) - вещественное число в расширенном
формате со знаком, 15-разрядным смещенным порядком и 64-разрядной
мантиссой. Этот формат позволяет хранить ненормализованные числа
и соответствует стандарту IEEE 754.
79 78 64 63 0
┌─┬─────────┬───────────────────────────────────────────────┐
│S│ E │ M │
└─┴───┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘
ПЕРВЫЙ СЕМЕСТР
ЛЕКЦИЯ N 4
2ТЕОРЕТИЧЕСКИЕ ОСНОВЫ ПОСТРОЕНИЯ УЗЛОВ ЭВМ
2Физические формы представления информации
Вся информация в ЭВМ кодируется совокупностью цифр. В свою
очередь цифры отображаются квантованными по двум уровням сигнала-
ми.
Следует отметить, что в цифровых устройствах сигналы изменя-
ются не непрерывно, а в дискретные моменты времени, обозначаемые
целыми числами (t = 0, 1, ... n). Временной интервал между сосед-
ними моментами дискретного времени называется 2 тактом 0. Эти интер-
валы являются одинаковыми для синхронных устройств и неодинаковы-
ми для асинхронных устройств.
На физическом уровне сигналы могут быть представлены одним
из трех основных способов: потенциальным, импульсным или динами-
ческим.
При 2потенциальном 0 способе 0 соответствует низкий уровень
напряжения, а 1 - высокий. Потенциальный сигнал характеризуется
амплитудами низкого (U 40 0) и высокого (U 41 0) уровней напряжения, а
также временами нарастания и спада сигнала, которые именуются пе-
редним (t 4п 0) и задним (t 4з 0) фронтами соответственно.
При 2импульсном 0 способе 0 и 1 соответствуют импульсы различ-
ной полярности, либо 0 соответствует отсутствие, а 1 - наличие
импульса. Импульсный сигнал характеризуется амплитудой импульса
U 4m 0, шириной (продолжительностью импульса по основанию) t 4и 0, и пе-
редним t 4п 0 и задним t 4з 0 фронтами импульса. В идеальном случае им-
пульсные сигналы должны появляться в тактовые моменты. В действи-
тельности имеет место запаздывание импульсного сигнала относи-
тельно тактового момента на время 7 t 0.
При 2 динамическом 0 способе представления информации двум воз-
можным значениям переменной соответствует наличие либо отсутствие
серии импульсов.
В электронных схемах и устройствах, входящих в состав ЭВМ,
применяется потенциальный способ представления информации, а для
передачи информации между ЭВМ, а также при работе с магнитными
носителями информации применяются импульсный и динамический спо-
собы.
2Математические модели схем ЭВМ
Наиболее общей моделью любой схемы, узла или устройства ЭВМ
является многополюсный черный ящик с 2l 0 входами и 2m 0 выходами. На
входы модели поступают, а на выходах появляются сигналы, кванто-
ванные по двум уровням.
.
- 2 -
┌──────────┐
x 41 0 ─────┤ ├───── y 41
x 42 0 ─────┤ ├───── y 42
. │ Черный │ .
. │ ящик │ .
. │ │ .
x 4l 0 ─────┤ ├───── y 4m
└──────────┘
где x 4i 0 (i = 1, 2, ..., l) - входные сигналы,
y 4j 0 (j = 1, 2, ..., m) - выходные сигналы.
Множество значений, которые может принимать переменная x 4i 0,
называют 2 алфавитом 0 переменной x 4i 0. В современных ЭВМ алфавит вход-
ных и выходных сигналов состоит из двух букв: 0 и 1.
На входы модели поступают в каждый тактовый момент упорядо-
ченные наборы букв, называемые 2 словами 0. Множество всех допустимых
наборов слов называется 2входным алфавитом 0 X данной схемы. Анало-
гично множество всех допустимых комбинаций, образуемых выходными
сигналами, называется 2выходным алфавитом 0 Y.
Математические модели отражают зависимость между входными и
выходными переменными схемы посредством системы уравнений:
y 4j 0(t) = f{x 41 0(t),x 42 0(t)...,x 4l 0(t), q 41 0(t),q 42 0(t),,...,q 4s 0(t)} (I)
где j = 1,2,...,m, а переменные q 41 0,q 42 0,...,q 4s 0 отражают внутренние
состояния схемы.
Если переменные y 4i 0 не зависят от внутреннего состояния схе-
мы, то одинаковым наборам входных переменных соответствует один и
тот же набор выходных переменных. Такие схемы называются 2комбина-
2ционными 0.
При этом система уравнений может быть записана в виде:
y 4j 0(t) = f{x 41 0(t),x 42 0(t)...,x 4l 0(t)}, где j = 1,2,...,m. (II)
Функции такого вида могут принимать только конечное число
значений, и зависят от аргументов, также принимающих конечное
число значений. Такие функции называются 2 переключательными 0.
В дальнейшем мы будем рассматривать переключательные функ-
ции, которые могут принимать только два значения - 0 и 1, и аргу-
менты которых также могут принимать только одно из этих двух зна-
чений. Такие переключательные функции получили название 2 булевых
2функций 0.
Если выходные переменные y 4i 0(t) зависят не только от входных
переменных, но и от внутреннего состояния схемы, то для полного
ее описания необходимо указать еще одну систему уравнений:
- 3 -
q 4n 0(t+1) = 7f 0{x 41 0(t),x 42 0(t)...,x 4l 0(t), q 41 0(t),q 42 0(t),,...,q 4s 0(t)}, (III)
где n = 1,2,...,s.
Эта система отражает зависимость внутреннего состояния схемы
в (t+1) такте от ее состояния и входных сигналов в такте t.
Схемы, описываемые уравнениями I и III, получили название
2цифровых автоматов 0.
Для задания цифрового автомата должны быть указаны:
1) входной алфавит слов X;
2) выходной алфавит слов Y;
3) алфавит внутренних состояний Q;
4) начальное состояние автомата q 40 0;
5) функция переходов A(q,x);
6) функция выходов B(q,x).
2Функция переходов 0 определяет зависимость состояния автомата
q(t+1) в момент времени t+1 от состояния автомата q(t) и входного
сигнала x(t) в момент t.
2Функция выходов 0 определяет зависимость выходного сигнала
y(t) от состояния автомата q(t) и входного сигнала x(t).
Автомат, описываемый системой уравнений
7(
72 0 q(t+1) = A{q(t),x(t)},
7*
72 0 y(t) = B{q(t),x(t)}
79
называется 2автоматом Мили 0.
Автомат, выходной сигнал которого y(t) в тактовый момент t
зависит только от состояния автомата q(t) и не зависит от входно-
го сигнала, называется 2 автоматом Мура 0 и описывается системой:
7(
72 0 q(t+1) = A{q(t),x(t)},
7*
72 0 y(t) = B{q(t)}.
79
ПЕРВЫЙ СЕМЕСТР
ЛЕКЦИЯ N 5
2ТЕОРЕТИЧЕСКИЕ ОСНОВЫ ПОСТРОЕНИЯ УЗЛОВ ЭВМ
Если для двух любых состояний q 4i 0 и q 4j 0 автомата имеется вход-
ной сигнал, переводящий автомат из состояния q 4i 0 в q 4j 0, то такой
автомат называется автоматом с 2полной системой переходов 0. Автомат
Мура имеет 2полную систему выходов 0, если выходные сигналы различны
для всех его состояний.
При построении схем ЭВМ в качестве элементов памяти исполь-
зуются элементарные автоматы. 2Элементарный автомат 0 - это автомат
Мура с двумя внутренними состояниями, двумя различными выходными
сигналами и несколькими входами, обладающий полными системами пе-
реходов и выходов.
2ТЕОРИЯ БУЛЕВЫХ ФУНКЦИЙ
Булевыми функциями называют переключательные функции, кото-
рые так же, как и их аргументы, принимают только два значения:
0 и 1.
Булевы функции могут быть заданы в виде формул или таблиц.
Формулы позволяют представлять функции в более компактном виде,
чем таблицы, так как таблица для функции от n аргументов будет
содержать 2 5n 0 строк (или столбцов, в зависимости от формы табли-
цы). С другой стороны, таблицы дают наглядное представление для
простых функций.
Приведем в качестве примера наиболее часто встречающиеся
функции от одной и двух переменных:
1) Переменная x:
f(x) = x
2) Инверсия переменной x (функция НЕ):
4_
f(x) = x
3) Константа нуля:
f(x) = 0
4) Константа единицы:
f(x) = 1
.
- 2 -
5) Дизъюнкция (функция ИЛИ):
f(x 41 0,x 42 0) = x 41 0 V x 42
Может встречаться другое обозначение: f(x 41 0,x 42 0) = x 41 0 | x 42 0.
Таблица истинности (соответствия) для этой функции имеет вид:
┌─────┬─────┬─────────┐
│ x 41 0 │ x 42 0 │ x 41 0 V x 42 0 │
├─────┼─────┼─────────┤
│ 0 │ 0 │ 0 │
│ 0 │ 1 │ 1 │
│ 1 │ 0 │ 1 │
│ 1 │ 1 │ 1 │
└─────┴─────┴─────────┘
6) Конъюнкция (функция И):
f(x 41 0,x 42 0) = x 41 0 5. 0 x 42
Может встречаться другое обозначение: f(x 41 0,x 42 0) = x 41 0 & x 42 0.
Таблица истинности для этой функции имеет вид:
┌─────┬─────┬─────────┐
│ x 41 0 │ x 42 0 │ x 41 0 5. 0 x 42 0 │
├─────┼─────┼─────────┤
│ 0 │ 0 │ 0 │
│ 0 │ 1 │ 0 │
│ 1 │ 0 │ 0 │
│ 1 │ 1 │ 1 │
└─────┴─────┴─────────┘
7) Функция ИЛИ-НЕ:
4_______
f(x 41 0,x 42 0) = x 41 0 V x 42
Таблица истинности для этой функции имеет вид:
┌─────┬─────┬─────────┐
│ x 41 0 │ x 42 0 │ x 41 0 V x 42 0 │
├─────┼─────┼─────────┤
│ 0 │ 0 │ 1 │
│ 0 │ 1 │ 0 │
│ 1 │ 0 │ 0 │
│ 1 │ 1 │ 0 │
└─────┴─────┴─────────┘
.
- 3 -
8) Функция И-НЕ:
4_______
f(x 41 0,x 42 0) = x 41 0 5. 0 x 42
Таблица истинности для этой функции имеет вид:
┌─────┬─────┬─────────┐
│ x 41 0 │ x 42 0 │ x 41 0 V x 42 0 │
├─────┼─────┼─────────┤
│ 0 │ 0 │ 0 │
│ 0 │ 1 │ 1 │
│ 1 │ 0 │ 1 │
│ 1 │ 1 │ 1 │
└─────┴─────┴─────────┘
9) Функция ИСКЛЮЧАЮЩЕЕ ИЛИ (сумма по модулю 2):
f(x 41 0,x 42 0) = mod2(x 41 0,x 42 0)
Таблица истинности для этой функции имеет вид:
┌─────┬─────┬─────────────┐
│ x 41 0 │ x 42 0 │ mod2(x1,x2) │
├─────┼─────┼─────────────┤
│ 0 │ 0 │ 0 │
│ 0 │ 1 │ 1 │
│ 1 │ 0 │ 1 │
│ 1 │ 1 │ 0 │
└─────┴─────┴─────────────┘
2Аксиомы алгебры логики
В алгебре логики определено отношение эквивалентности (=) и
три операции: дизъюнкция, конъюнкция и отрицание.
Отношение эквивалентности удовлетворяет следующим свойствам:
x=x - рефлексивность; если x=y, то y=x - симметричность; если x=y
и y=z, то x=z - транзитивность. Из отношения эквивалентности сле-
дует 2 принцип подстановки 0: если x=y, то в любой формуле, содержа-
щей x, вместо x можно подставить y, и будет получена эквивалент-
ная формула.
Алгебра логики определяется следующей системой аксиом:
x = 0, если x 7- 0 1 7 )
78 0 (1)
x = 1, если x 7- 0 0 7 0
1 V 1 = 1 7 )
78 0 (2)
0 5 . 0 0 = 0 7 0
- 4 -
0 V 0 = 0 7 )
78 0 (3)
1 5. 0 1 = 1 7 0
0 V 1 = 1 V 0 = 1 7 )
78 0 (4)
0 5 . 0 1 = 1 5 . 00 = 0 7 0
4_
0 = 1 7 )
4_ 0 78 0 (5)
1 = 0 7 0
Аксиома (1) утверждает, что в алгебре логики рассматриваются
только двоичные переменные, аксиомы (2)-(4) определяют операции
конъюнкции и дизъюнкции, а аксиома 5 - операцию отрицания.
Если в аксиомах (2)-(5), заданных парами утверждений, произ-
вести взаимную замену операций дизъюнкции и конъюнкции, а также
элементов 0 и 1, то из одного утверждения пары будет получено
другое. Это свойство называется принципом двойственности.
2Теоремы алгебры логики
С помощью аксиом алгебры логики можно доказать целый ряд те-
орем и тождеств. Одним из эффективных методов доказательства тео-
рем является 2 метод перебора 0 всех значений переменных: если теоре-
ма истинна, то при подстановке любых значений переменных в обе
части выражения, формулирующего утверждение теоремы, должно полу-
читься тождество.
Методом перебора можно убедиться в справедливости следующих
теорем:
идемпотентные законы
x V x = x 7 )
78
x 5. 0 x = x 7 0
коммутативные законы
x V y = y V x 7 )
78
x 5. 0 y = y 5. 0 x 7 0
ассоциативные законы
(x V y) V z = x V (y V z) 7 )
78
(x 5. 0 y) 5. 0 z = x 5. 0 (y 5. 0 z) 7 0
.
- 5 -
дистрибутивные законы
x 5. 0 (y V z) = x 5. 0 y V x 5. 0 z 7 )
78
x V y 5. 0 z = (x V y) 5. 0(x V z) 7 0
законы отрицания 4 _
x V x = 1 7 )
4_ 0 78
x 5. 0 x = 0 7 0
0 V x = x 7 )
78
1 5. 0 x = x 7 0
1 V x = 1 7 )
78
0 5. 0 x = 0 7 0
законы двойственности (теоремы де Моргана)
4_____ _ _
x V y = x 5. 0y 7 )
4_____ 0 4_ 0 4_ 0 78
x 5. 0 y = x V y 7 0
закон двойного отрицания 4 0 4 _____
7( 0 4_ 7 )
72 0 x 7 2 0 = x
79 0
законы поглощения
x V x 5. 0 y = x 7 )
78
x 5. 0(x V y) = x 7 0
операции склеивания 4 _
x 5. 0 y V x 5. 0 y = x 7 0 7)
4_ 0 78
(x V y) 5. 0(x V y) = 7 0x 70
операции обобщенного склеивания
4_ _
x 5. 0y V x 5. 0z V y 5. 0z = x 5. 0y V x 5. 0z 5 7)
4_ 0 5 4_ 5 0 78
(x V y) 5. 0(x V z) 5. 0(y V z) = 7 0(x V y) 5. 0(x V z) 70
4_
x V x 5. 0 y = x V y 7 )
4_ 0 78
x 5. 0(x V y) = x 7 5. 0 y 70
ПЕРВЫЙ СЕМЕСТР
ЛЕКЦИЯ N 6
2МЕТОДЫ УПРОЩЕНИЯ (МИНИМИЗАЦИИ) БУЛЕВЫХ ФУНКЦИЙ
Сложные булевы функции могут быть построены из более прос-
тых.
2Элементарными функциями 0 называются функции, образованные пу-
тем использования однотипных логических операций: только операции
И, только операции ИЛИ и т.д.
Для представления сложных логических функций можно использо-
вать не все элементарные функции, а только ту или иную часть их,
называемую системой. Система элементарных функций f 41 0, ..., f 4k 0 на-
зывается функционально полной, если любую сложную булеву функцию
можно записать в виде формулы через функции f 41 0, ..., f 4k 0.
Так, любую функцию можно представить с помощью одних только
операций И-НЕ или только операций ИЛИ-НЕ.
В цифровых устройствах часто применяется в качестве базовой
система из трех функций: И, ИЛИ и НЕ.
Используя законы алгебры логики, можно упрощать сложные ло-
гические выражения. Упрощение заключается в уменьшении количества
букв и количества отрицаний в выражении, что позволяет упростить
схему устройства с жесткой логикой или программу устройства с
программируемой логикой. Такое упрощение позволяет уменьшить се-
бестоимость и увеличить быстродействие устройства.
Рассмотрим функцию
4_________
7( 4_ 7 ) 4 _
f(a,b.c) = a 5. 72 0b V a 5. 0c 72 0 V a 5. 0b
79 0
Используя законы алгебры логики, можно привести эту функцию
к виду:
4_ 0 5 0 4_ 0 4 _ 0 4_ __ _ 0 4_ _
f(a,b.c) = a 5. 0(b 5. 0(a 5 0V 5 0c)) V a 5. 0b = ab V abc V ab = ab V ab
4применяем 0 4 0 4 применяем
4законы де Моргана 0 4 закон поглощения
Одной и той же логической функции может быть поставлено в
соответствие неограниченное количество различных эквивалентных
формул. Наиболее удобными для практического использования являют-
ся так называемые 2нормальные формы 0 представления сложных логичес-
ких функций.
2Элементарной конъюнкцией 0 Q называется логическое произведе-
ние переменных и их отрицаний, причем каждая переменная должна
встречаться в произведении только один раз.
.
- 2 -
4_ _
Пример элементарной конъюнкции: Q = x 41 0x 42 0x 43 0x 44 0x 46 0.
Аналогично 2элементарной дизъюнкцией 0 В называется логическая
сумма переменных и их отрицаний, причем каждая переменная должна
встречаться в сумме только один раз.
4_
Пример элементарной дизъюнкции: D = x 41 0 V x 43 0 V x 44 0.
Формула, эквивалентная заданной и представляющая собой логи-
ческую сумму элементарных конъюнкций, называется 2дизъюнктивной
2нормальной формой 0 (ДНФ) заданной формулы. Дизъюнктивная нормаль-
ная форма существует для любой логической функции.
Аналогично считается, что логическая функция задана своей
2конъюнктивной 0 2нормальной формой 0 (КНФ), если она выражена посредс-
твом логического произведения элементарных дизъюнкций. КНФ также
существует для любой логической функции.
Например, для функции 4_________
7( 4_ 7 ) 4 _
f(a,b.c) = a 5. 72 0b V a 5. 0c 72 0 V a 5. 0b
79 0
ДНФ будет иметь вид
4_ _
f(a,b.c) = ab V ab,
КНФ будет иметь вид
4_ _
f(a,b.c) = (a V b)(b V c).
Одна и та же функция путем эквивалентных преобразований мо-
жет быть представлена различными КНФ и ДНФ. Из всей совокупности
нормальных форм, представляющих данную функцию, выделяют одну КНФ
и одну ДНФ, именуемые совершенными.
2Минтермом 0 (m) n аргументов называется логическое произведе-
ние этих аргументов, причем каждый аргумент может входить в про-
изведение в прямой или инверсной форме.
Минтермы могут быть пронумерованы, причем номер минтерма оп-
ределяется как десятичный эквивалент двоичного числа, образован-
ного из значений переменных, входящих в данный набор: если пере-
менная входит в прямой форме, то ей соответствует единица, если в
инверсной - ноль.
2Макстермом 0 (M) n аргументов называется логическая сумма этих
аргументов, причем каждый аргумент может входить в сумму в прямой
или инверсной форме. Номер макстерма задается аналогично номеру
минтерма.
.
- 3 -
Рассмотрим в качестве примера случай двух аргументов:
┌─────┬─────┬─────────────┬──────────────┐
│ a │ b │ минтерм │ макстерм │
├─────┼─────┼─────────────┼──────────────┤
│ │ │ 4_ 0 4_ 0 │ 4_ 0 4_ 0 │
│ 0 │ 0 │ m 40 0 = a 5. 0b │ M 40 0 = a V b │
│ │ │ 4_ 0 │ 4_ 0 │
│ 0 │ 1 │ m 41 0 = a 5. 0b │ M 41 0 = a V b │
│ │ │ 4_ 0 │ 4_ 0 │
│ 1 │ 0 │ m 42 0 = a 5. 0b │ M 42 0 = a V b │
│ │ │ 4 0 │ │
│ 1 │ 1 │ m 43 0 = a 5. 0b │ M 43 0 = a V b │
└─────┴─────┴─────────────┴──────────────┘
Минтермы и макстермы можно геометрически представить на кар-
тах (диаграммах) Вейча. Так, для двух переменных карта Вейча бу-
дет представлять собой квадрат, причем левая половина квадрата
определяется переменной a, а верхняя половина квадрата - перемен-
ной b. Это означает, что левая 4_ 0 половина квадрата соответствует
значению переменной a, правая - a, верхняя половина соответствует
4_
b, нижняя b.
Карта Вейча для двух переменных:
4_
2a a
┌─────┬─────┐
│ │ 4_ 0 │
2b 0│ a 5. 0b │ a 5. 0b │
│ │ │
├─────┼─────┤
4_ 0 │ 4_ 0 │ 4_ 0 4_ 0 │
2b 0│ a 5. 0b │ a 5. 0b │
│ │ │
└─────┴─────┘
.
- 4 -
Карта Вейча для 5 0трех переменных:
4_
2a a
5┌──────┴──────┐ ┌──────┴──────┐
┌───────┬───────┬───────┬───────┐
│ 4_ 0 │ │ 4_ 0 │ 4_ 0 4_ 0 │
2b 0│ a 5. 0b 5. 0c │ a 5. 0b 5. 0c │ a 5. 0b 5. 0c │ a 5. 0b 5. 0c │
│ │ │ │ │
├───────┼───────┼───────┼───────┤
4_ 0 │ 4_ 0 4_ 0 │ 4_ 0 │ 4_ 0 4_ 0 │ 4_ 0 4_ 0 4_ 0 │
2b 0│ a 5. 0b 5. 0c │ a 5. 0b 5. 0c │ a 5. 0b 5. 0c │ a 5. 0b 5. 0c │
│ │ │ │ │
└───────┴───────┴───────┴───────┘
4_ 0 5└──────┬──────┘ 4 _
2c 0 2c c
2Свойства минтермов и макстермов:
1) Минтерм является инверсией некоторого макстерма и наобо-
рот: 4 _
m 4i 0 = M
2 5n 0-1-i
4_
M 4i 0 = m
2 5n 0-1-i
4_
Пример: m 41 0 = 4 0M 42 0 (заштрихованная площадь соответствует макс-
терму, незаштрихованная - минтерму).
1┌┬┬┬ 0┬ 1── 0─┐
1├┼┼┼┤ │
1├┼┼┼ 0└ 1┬┬┬ 0┤
1├┼┼┼┼┼┼┼┤
1└┴┴┴┴┴┴┴┘
2) Логическая сумма всех минтермов для любого заданного чис-
ла переменных равна 1.
2 5n 0-1
V m 4i 0 = 1.
i=0
3) Логическое произведение всех макстермов для любого задан-
ного числа переменных равно 0.
2 5n 0-1
7L 0 M 4i 0 = 0.
i=0
- 5 -
4) Два неодинаковых минтерма или макстерма имеют хотя бы од-
ну переменную, входящую в один из них в прямой, а в другой - в
инверсной форме, следовательно
m 4i 5. 0m 4j 0 = 0, если i 7- 0 j;
M 4i 0 V M 4j 0 = 1, если i 7- 0 j.
2Основная теорема алгебры логики 0: любую булеву функцию от n
переменных можно выразить логической суммой минтермов, которая
называется 2 совершенной нормальной дизъюнктивной формой 0, или логи-
ческим произведением макстермов, которое называется 2 совершенной
2нормальной конъюнктивной формой 0.
Логические функции отражают не только принцип работы некото-
рых частей ЭВМ, но и их состав, если каждой элементарной функции
соответствует реальный физический элемент. Любая сложная логичес-
кая функция может быть реализована некоторой частью ЭВМ, если эта
часть построена с помощью такого набора элементов, который реали-
зует все функции одной из функционально полных систем. Такой на-
бор называется функционально полным набором логических элементов
Поскольку каждая функция может быть представлена в виде раз-
личных логических уравнений, каждая функция может быть реализова-
на при помощи различных логических схем. Очевидно, что более
простому логическому уравнению соответствует более простая схема.
Упрощение (минимизация) функции сводится к получению ее минималь-
ной дизъюнктивной или конъюнктивной нормальной формы, т.е. такой
формы, при которой функция содержит наименьшее число переменных и
знаков логических операций.
Существует несколько методов минимизации. В дальнейшем мы
рассмотрим метод непосредственных преобразований и метод диаграмм
Вейча.
ПЕРВЫЙ СЕМЕСТР
ЛЕКЦИЯ N 7
2МЕТОДЫ МИНИМИЗАЦИИ БУЛЕВЫХ ФУНКЦИЙ
2Метод непосредственных преобразований
Суть данного метода заключается в том, что минимизация ис-
ходной логической функции производится путем применения к отдель-
ным членам или группам членов формулы, выражающей данную логичес-
кую функцию, основных законов алгебры логики с целью получения
минимальной формы функции, т.е. такой, которая не содержит лишних
переменных или членов.
Лишними переменными или членами являются те, которые не вли-
яют на значение преобразуемой формулы.
Пример:
4_ 5 4_
x 41 5. 0x 42 5. 0x 43 0 V x 41 5. 0x 42 5. 0x 43 0 = x 42 5. 0x 43 5. 0(x 41 5 0V 5 0x 41 0) = x 42 5. 0x 43 5. 01 = x 42 5. 0x 43
т.е. в исходной формуле лишней являлась двоичная переменная x 41 0.
Примечание: произведенная операция называется "склеиванием"
членов формулы.
Действия, отвечающие методу непосредственных преобразований,
обычно проводятся в следующем порядке:
1) Выявляются группы двоичных переменных исходной формулы, к
которым можно применить операцию склеивания или другие законы ал-
гебры логики, приводящие выражение к более простой форме.
2) Упрощение исходной формулы путем применения к выявленным
группам соответствующих законов.
3) Преобразование промежуточной логической формулы с целью
образования таких групп переменных, к которым можно применить уп-
рощающие законы алгебры логики. Здесь могут проводиться:
- группирование членов;
- действия по раскрытию скобок и выносу за скобки;
- добавление фиктивных членов, т.е. таких, совокупность ко-
торых тождественно равна нулю;
- логическое умножение одного или нескольких членов на логи-
ческую сумму переменной и ее отрицания.
4) Упрощение преобразованной промежуточной логической форму-
лы с получением формы, близкой к минимальной, в виде некоторой
ДНФ.
5) Выявление и удаление из полученной предварительной формы
лишних членов, что дает минимальную форму исходной логической
функции.
В качестве примера рассмотрим минимизацию следующей функции:
4_ _ _ _
f(a,b,c) = ab V bc V bc V ab =
- 2 -
(используем метод умножения всех членов формулы на сумму тех пе-
ременных и их отрицаний, которые отсутствуют в данном члене;)
4_ _ _ _ _ _ _ _
= ab(cVc) V bc(aVa) V bc(aVa) V ab(cVc) =
(в результате, отбросив повторяющиеся члены, получаем СДНФ функ-
ции;)
4_ 0 4 __ 0 4_ 0 4 _ _ 0 4 _ 0 4 __ 0 4 _ 0 4 _ _
= abc V abc V abc V abc V abc V abc V abc V abc =
└─┘ ╚═╝ └─┘ ╚═╝
4_ __ _ _ _ __ _
= abc V abc V abc V abc V abc V abc =
(перегруппировываем члены с целью их упрощения)
4_ 9 4 _ _ _ _ _
= b 9c 0(aVa) V ab(cVc) V ac(bVb) =
(окончательно получим)
4_ _ _
= bc V ab V ac.
Однако группирование членов после умножения можно провести и
несколько иначе:
4_ _ _ _ _ _ _ _ _
f(a,b,c) = ab(cVc) V bc(aVa) V ac(bVb) = ab V bc V ac.
Следовательно, данная функция имеет две минимальные формы.
Недостатком метода непосредственной минимизации является
трудность получения всех минимальных форм, если их несколько.
Кроме того, метод в целом весьма трудоемок, результат минимизации
в сильной степени зависит от квалификации и интуиции человека,
проводящего минимизацию. Поэтому данный метод применяется лишь
для минимизации простых логических формул.
2Метод минимизации с помощью карт Вейча
Данный метод наиболее применим в инженерной практике благо-
даря своей простоте и легкости использования. Однако метод удобен
для упрощения функций, зависящих от небольшого числа переменных
(до 8). Преимущество этого метода состоит в том, что нет необхо-
димости приводить функцию к СДНФ.
Рассмотрим изображение на карте Вейча функции
4__ _ _ _ __ _ __ _
f(a,b,c,d) = cd V abd V abc V abcd V abcd V bcd
- 3 -
При нанесении заданной функции на карту никаких предвари-
тельных преобразований не проводится. Каждый дизъюнктивный член
рассматривается в отдельности, и в соответствующие ему квадратики
вписывается 1 (т.е. дизъюнктивный член развертывается до минтер-
мов).
Например, нанесение на карту вейча заданной функции выполня-
ется в следующей последовательности:
a
┌───┴───┐
┌┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐
││ _1 . │ │ │ _1 . │ │ _1 . │ _1 . │ │ 1 │ │ 1 │ 1 │ │ _1 . │
b ┤├───┼───┼───┼───┤┐ ├───┼───┼───┼───┤ ├───┼───┼───┼───┤
││ │ │ │ ││ │ │ │ │ │ │ │ │ │ _1 . │
└├───┼───┼───┼───┤├ d ├───┼───┼───┼───┤ ├───┼───┼───┼───┤
│ │ │ │ ││ │ │ │ │ │ │ │ │ │ │
├───┼───┼───┼───┤┘ ├───┼───┼───┼───┤ ├───┼───┼───┼───┤
│ _1 . │ │ │ _1 . │ │ 1 │ │ │ 1 │ │ 1 │ │ │ 1 │
└───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘
└───┬───┘
4__ 0 c 4 0 4 __ _ __ _ _ _
cd cd V abd cd V abd V abc
┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐
│ 1 │ 1 │ │ 1 │ │ 1 │ 1 │ │ 1 │ │ 1 │ 1 │ │ 1 │
├───┼───┼───┼───┤ ├───┼───┼───┼───┤ ├───┼───┼───┼───┤
│ │ │ │ 1 │ │ │ │ │ 1 │ │ │ │ │ 1 │
├───┼───┼───┼───┤ ├───┼───┼───┼───┤ ├───┼───┼───┼───┤
│ │ │ │ │ │ _1 . │ │ │ │ │ 1 │ _1 . │ _1 . │ │
├───┼───┼───┼───┤ ├───┼───┼───┼───┤ ├───┼───┼───┼───┤
│ 1 │ │ _1 . │ 1 │ │ 1 │ │ 1 │ 1 │ │ 1 │ │ 1 │ 1 │
└───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘
4__ _ _ _ __ _ _ _ __ _ _ _
cd V abd V abc V cd V abd V abc V cd V abd V abc V
4__ _ __ _ __ __ _ __
V abcd V abcd V abcd V abcd V abcd V bcd
Следующий шаг заключается в нахождении на карте простых имп-
ликант, т.е. в склеивании минтермов. Нахождение простых импликант
является результатом последовательного применения теоремы:
4_
x 41 0x 42 0x 43 0...x 4n 0 V x 41 0x 42 0x 43 0...x 4n 0 = x 42 0x 43 0...x 4n
Нахождение простых импликант производится на картах путем
группировки минтермов, отмеченных единицей.
Рассмотрим правила группировки на диаграмме для четырех пе-
ременных, учитывая, что их легко обобщить на случай для любого
- 4 -
числа переменных. Группирование выполняется в следующем порядке:
а) группа из восьми членов может быть представлена одной пе-
ременной, если две смежные строки, либо два смежных столбца, либо
две крайние строки, либо два крайних столбца, соответствующих
этой переменной, заполнены единицами;
б) группа из четырех членов может быть представлена посредс-
твом двух переменных всякий раз, когда единицами заполнены:
- строка диаграммы,
- столбец диаграммы,
- квадрат из двух строк и двух столбцов,
- концы двух смежных строк,
- концы двух смежных столбцов,
- четыре угла диаграммы;
в) группа из двух членов может быть представлена посредством
трех переменных всякий раз, когда единицами заполнены:
- два смежных квадратика,
- два противоположных конца одной строки,
- два противоположных конца одного столбца.
При группировке единиц на диаграмме необходимо попытаться
сначала образовать члены, содержащие одну переменную, затем чле-
ны, содержащие две переменные, и, наконец, члены, содержащие три
переменные. Один и тот же минтерм может входить 2 несколько раз 0 в
выражение функции, не изменяя ее значения. Поэтому единицу или
группу единиц можно несколько раз включать в различные комбина-
ции. В нашем случае минимизированная функция будет иметь вид:
4__ _ _ _ 0 4_ _ 0 ___
f(a,b,c,d) = cd V abd V abc V abd V bcd V abd.
ПЕРВЫЙ СЕМЕСТР
ЛЕКЦИЯ N 8
2МЕТОДЫ МИНИМИЗАЦИИ БУЛЕВЫХ ФУНКЦИЙ
(окончание)
Обычно для проверки правильности результата, полученного с
помощью одного из методов минимизации, либо используют другой ме-
тод (хотя при наличии у функции нескольких минимальных форм могут
быть получены несовпадающие результаты), либо проверяют на тож-
дественность исходную и минимальную формы методом перебора всех
возможных комбинаций значений переменных (однако уже для 20 пере-
менных число возможных комбинаций превышает миллион).
В качестве примера проведем минимизацию рассматривавшейся
ранее функции
4_ _ _ _
f(a,b,c) = ab V bc V bc V ab
с помощью карты Вейча. Как видно из диаграммы, возможны две мини-
мальные дизъюнктивные формы:
a
┌───┴───┐
┌───┬───┬───┬───┐
b │ 1 │ │ _1 . │ _1 . │
├───┼───┼───┼───┤
│ 1 │ 21 0 │ 21 0 │ │
└───┴───┴───┴───┘
└───┬───┘
c
4_ _ 0 4_
f(a,b,c) = ac V ab V bc
a
┌───┴───┐
┌───┬───┬───┬───┐
b │ _1 . │ │ 21 0 │ _1 . │
├───┼───┼───┼───┤
│ 1 │ 1 │ 21 0 │ │
└───┴───┴───┴───┘
└───┬───┘
c
4_ _ 0 4_
f(a,b,c) = bc V ac V ab
.
- 2 -
2ЭЛЕМЕНТЫ И УЗЛЫ ЭВМ
═══════════════════
2ЛОГИЧЕСКИЕ ЭЛЕМЕНТЫ
Системой элементов ЭВМ называется функционально полный набор
логических элементов, использующий одинаковый способ представле-
ния информации и одинаковый тип межэлементных связей.
Система элементов чаще всего избыточна по своему составу,
что позволяет строить схемы с более простой топологией межэле-
ментных связей и более экономные по количеству используемых эле-
ментов.
Классификация логических элементов:
1) По способу представления информации и типу межэлементных
связей различают элементы импульсного, потенциального, импуль-
сно-потенциального и динамического типа.
Примечание: в современных ЭВМ применяются потенциальные и
динамические элементы.
2) По функциональному назначению элементы принято разделять
на 2типовые и элементы специального назначения 0. К 2типовым 0 относят-
ся логические, запоминающие и формирующие элементы. Логические
элементы предназначены для преобразования информации, запоминаю-
щие - для ее хранения, а формирующие элементы - для восстановле-
ния стандартизированных значений физических параметров сигналов,
изменяющихся во время прохождения сигналов по электрическим це-
пям. К элементам 2 специального назначения 0 относятся усилители сла-
бых сигналов, генераторы токов и напряжений специальной формы и
другие элементы, не изменяющие информационного содержания сигна-
лов.
3) В зависимости от используемых физических явлений логичес-
кие элементы подразделяются на полупроводниковые, магнитополупро-
водниковые, электромагнитные и др.
2Основные характеристики логических элементов
Общие технические характеристики:
- температурный диапазон,
- надежность,
- стоимость.
Специфические характеристики:
- функциональные возможности элемента,
- нагрузочная способность,
- быстродействие,
- 3 -
- помехоустойчивость,
- потребляемая мощность.
Функциональные возможности логического элемента характеризу-
ются выполняемой им операцией и коэффициентами разветвления и
объединения, т.е. факторами, влияющими на структуры более сложных
схем, построенных с применением данного элемента.
При этом под 2коэффициентом разветвления 0 2n 0 понимают число
входов последующих ячеек, которые могут управляться от выхода
данной ячейки, а под 2коэффициентом объединения 0 2m 0 - число входов,
которое может иметь ячейка. Величины m и n ограничиваются услови-
ями сохранения нормального электрического режима ячейки.
2Нагрузочная способность 0 в общем случае определяется током,
который может быть отдан ячейкой во внешние цепи (нагрузку). В
случае однородных нагрузок, создаваемых входами идентичных ячеек,
нагрузочная способность оценивается коэффициентом разветвления n.
2Быстродействие 0 логического элемента определяется скоростями
его перехода из состояния "0" в состояние "1" и обратно. Переход-
ные процессы изменения состояния элемента состоят из двух этапов:
задержки и формирования фронта или спада сигнала. Длительность
задержек и фронтов зависит от динамических свойств логического
элемента.
Однако для оценки быстродействия часто используют обобщенную
характеристику - 2 среднее время задержки 0. В этом случае моментом
поступления сигнала на ячейку считают момент достижения входным
сигналом некоторого определенного уровня (например, 0,5 от уста-
новившегося значения). Моментом появления сигнала на выходе также
считают момент достижения выходным сигналом этого уровня.
Так как длительности переходных процессов при включении и
выключении транзистора в общем случае не равны, то проводят обоб-
щение и говорят о среднем времени задержки сигнала на ячейку.
Время задержки при формировании спада
t 4сп
t 5' 4з 5 0= t 4з.сп 0+ 4 0─── ,
2
а время задержки при формировании фронта
t 4фр
t 5" 4з 5 0= t 4з.фр 0+ 4 0─── .
2
Среднее время задержки на один каскад схемы
t 5' 4з 0 + t 5" 4з
t 4з.ср 0 = ───────── 5.
2
- 4 -
Одна из важнейших характеристик элемента - его 2помехоустой-
2чивость 0. Различают статическую и динамическую помехоустойчивость.
При определении статической помехоустойчивости помеха рассматри-
вается как длительно действующий уровень потенциала, а при опре-
делении динамической помехоустойчивости - как импульс определен-
ной длительности. Устойчивость элемента к воздействию длительной
помехи меньше, чем к воздействию кратковременной помехи при оди-
наковых амплитудах. Устойчивость к воздействию динамической поме-
хи тем ниже, чем выше быстродействие элемента.
С увеличением степени интеграции элементов ЭВМ все большую
роль начинает играть такой параметр, как 2 рассеиваемая мощность 0.
Следует отметить, что закрытому состоянию соответствует один уро-
вень рассеивания мощности (P 4з 0), а открытому - другой (P 4о 0). Обычно
предполагают, что схема половину времени находится в открытом
состоянии, а половину - в закрытом, и определяют среднюю рассеи-
ваемую мощность следующим образом:
P 4з 0 + P 4о
P 4ср 0 = ─────── .
2
Рассеиваемая мощность может зависеть как от нагрузки, так и
от схем, включенных на входе.
1Классификация логических элементов по типу радиокомпонентов,
1на которых реализуются логические функции 2.
Можно выделить следующие наиболее часто употребляемые на
данный момент типы логических элементов:
- транзисторно-транзисторная логика с диодами Шотки (ТТЛШ);
- КМОП-логика (логика на базе комплементарных полевых тран-
зисторов со структурой металл-окисел-полупроводник);
- КМДП-логика (логика на базе комплементарных полевых тран-
зисторов со структурой металл-диэлектрик-полупроводник);
- интегральная инжекционная логика (ИИЛ, И 52 0Л, I 52 0L).
Следует отметить также некоторые типы элементов, которые в
данный момент уже не применяются в новых разработках вследствие
низкого быстродействия или большой рассеиваемой мощности.
- резисторно-транзисторная логика (РТЛ, RTL);
- резисторно - конденсаторная транзисторная логика (РКТЛ,
RCTL);
- диодно-транзисторная логика (ДТЛ, DTL);
- транзисторно-транзисторная логика (ТТЛ, TTL);
- транзисторная логика с эмиттерными связями (ЭСЛ, TECL).
- транзисторная логика с непосредственными связями (DCTL).
- МОП-логика;
- МДП-логика (MDS).
ПЕРВЫЙ СЕМЕСТР
ЛЕКЦИЯ N 9
2ЭЛЕМЕНТЫ И УЗЛЫ ЭВМ
═══════════════════
2ЛОГИЧЕСКИЕ ЭЛЕМЕНТЫ
Электронную схему, выполняющую какие либо операции над одним
машинным словом, называют 2узлом 0 ЭВМ. Многие узлы ЭВМ строятся на
базе логических элементов.
Общие требования к проектируемому устройству:
- устройство должно полностью соответствовать своему функци-
ональному назначению, т.е. выполнять заданные в ТЗ функции;
- быстродействие, энергопотребление, надежность, устойчи-
вость к вредному воздействию окружающей среды (температура, влаж-
ность, давление, вибрация, удары, статическое электричество,
внешние магнитные поля, электромагнитные помехи и пр.) должны со-
ответствовать заданным в ТЗ параметрам;
- устройство должно быть максимально простым, чтобы обеспе-
чить высокое быстродействие и надежность, а также низкую себесто-
имость.
Если устройство проектируется на базе нескольких различных
наборов логических элементов, особенно в случае различной техно-
логии изготовления (ТТЛ и ТТЛШ, ТТЛ и КМОП, ТТЛ и ЭСЛ и т.п.),
необходимо тщательно проверить эти наборы на совместимость во
всем рабочем диапазоне температур и на отсутствие состязаний в
спроектированной схеме.
Требуется проверить:
- соответствие по номинальному напряжению питания;
- соответствие по входным и выходным характеристикам логи-
ческих элементов, особенно по уровням 0 и 1;
- соответствие элементов по быстродействию;
- соответствие по переходным процессам.
1Основные характеристики логических элементов
2Амплитудная передаточная характеристика 0 U 4вых 0= 4 0f(U 4вх 0) опре-
деляет формирующие свойства логического элемента, его помехоус-
тойчивость, амплитуду и уровни стандартного сигнала. Вид характе-
ристики зависит от типа логического элемента (ЭСЛ, ТТЛ и т.д.) и
может изменяться в определенных пределах в зависимости от разбро-
са параметров схем, изменений напряжения питания, нагрузки и тем-
пературы окружающей среды.
2Входная характеристика 0 I 4вх 0 = f(U 4вх 0) и 2выходная характеристи-
2ка 0 U 4вых 0 = f(I 4вых 0) позволяют определить нагрузочную способность
элемента, режим его работы и способ согласования переходных про-
- 2 -
цессов в линиях связи.
2Импульсная (динамическая) помехоустойчивость 0 - это зависи-
мость допустимой амплитуды импульсной помехи от ее длительности
U 4пом 0 = f(t 4пом 0).
2ТРИГГЕРЫ
Практически все устройства ЭВМ совмещают функции переработки
и хранения информации. Неотъемлемая часть таких устройств - эле-
мент памяти. В арифметических и логических устройствах для хране-
ния информации чаще всего используют элемент с двумя устойчивыми
состояниями - 2триггер 0.
Структуру триггера можно представить в виде запоминающей
ячейки и схему управления:
┌─ ── ── ── ── ── ── ── ── ┐
┌───────┐ 4S 0 ┌────────┐
E 41 0 ───┴─┤ Схема ├─────┤ Запоми-├─┴─── Q
C ─────┤ управ-│ 4R 0 │ нающая │ 4 _
E 42 0 ───┬─┤ ления ├─────┤ ячейка ├─┬─── Q
└───────┘ └────────┘
└─ ── ── ── ── ── ── ── ── ┘
4_ 0 2Запоминающая ячейка 0 - это схема, которая имеет два выхода Q
и Q 4, 0 сигналы на которых всегда противоположны (если на одном 0,
то на другом 1), и два входа - вход установки S (set) и вход
сброса R (reset).
2Переключающий 0 сигнал по входу S устанавливает запоминающую
ячейку в состояние "1", а по входу R - в состояние "0". В зависи-
мости от типа элементов, из которых построена запоминающая ячей-
ка, переключающим сигналом может являться либо "0", либо "1". За-
поминающую ячейку называют также 2 асинхронным RS-триггером 0.
2Схема управления 0 преобразует информацию, поступающую на вхо-
ды E 41 0 и E 42 0 в сигналы, которые подаются на установочные входы за-
поминающей ячейки. В некоторых схемах выходные сигналы триггерра
поступают на вход схемы управления - на рисунке эти соединения
показаны пунктиром.
Как правило, триггеры, применяемые в потенциальной системе
элементов, имеют еще один вход - вход для синхронизирующих сигна-
лов C. Импульсы, поступающие на вход C, не несут логической ин-
формации, но определяют момент приема триггером входной информа-
ции.
.
- 3 -
1Классификация триггеров
В основу классификации триггерных устройств положены два ос-
новных признака: функциональный признак и способ записи информа-
ции в триггер.
Функциональная классификация - это классификация триггеров
по типам схем управления. По функциональному признаку различают
RS, S, R, E, T, D, TV, DV, RST и JK триггеры.
Классификация по способу записи информации характеризует
временную диаграмму работы триггера, т.е. определяет ход процесса
записи информации в триггер:
┌────────────────────────┐
│ Потенциальные триггеры │
└────────────┬───────────┘
│
┌───────────────┴──────────────┐
┌──────┴──────┐ ┌─────┴──────┐
│ Асинхронные │ │ Синхронные │
└──────┬──────┘ └─────┬──────┘
│ │
┌──────┴──────┐ ┌──────┴──────┐
┌──────┴─────┐ ┌─────┴─────┐ ┌──────┴─────┐ ┌─────┴─────┐
│С внутренней│ │Управляемые│ │С внутренней│ │Управляемые│
│ задержкой │ │уровнем │ │ задержкой │ │уровнем │
└────────────┘ │входного │ └────────────┘ │синхроим- │
│сигнала │ │пульса │
└───────────┘ └─────┬─────┘
│
┌────┴────┐
┌───┴───┐ ┌───┴───┐
│ Одно- │ │Много- │
│тактные│ │тактные│
└───────┘ └───────┘
2Временная диаграмма 0 - это диаграмма, отображающая зависи-
мость внутреннего состояния устройства, сигналов на его выходах и
протекающих в нем переходных процессов от времени и сигналов на
входах этого устройства.
Отличительной особенностью 2асинхронных 0 триггеров является
то, что запись информации в них осуществляется непосредственно в
момент поступления информационного сигнала на вход триггера.
Запись информации в 2 синхронные тактируемые 0 триггеры осущест-
вляется только при подаче разрешающего импульса ( 2синхроимпульса 0)
на синхронный вход C. Синхронные триггеры подразделяются на две
категории: триггеры, срабатывающие по переднему фронту синхроим-
пульса (" 2по 0 2уровню 0"), и триггеры, срабатывающие по заднему фронту
- 4 -
синхроимпульса (" 2по спаду 0").
Синхронные триггеры могут быть однотактными и многотактными.
Многотактные триггеры характеризуются тем, что формирование ново-
го состояния триггера завершается с поступлением n-го синхроим-
пульса. Наибольшее распространение получили двухтактные синхрон-
ные триггеры.
Законы функционирования триггеров задаются таблицами перехо-
дов или составленными в соответствии с этими таблицами логически-
ми уравнениями.
Входы триггеров обозначаются следующим образом:
C - вход синхронизации;
S (set) - вход установки триггера в 1;
R (reset) - вход сброса триггера в 0;
D (delay) - "задержка";
T (trigger) - "защелка";
J - вход установки JK-триггера в 1;
K - вход установки JK-триггера в 0;
V - управляющий вход DV-триггера.
4_
Выходы триггеров: Q - прямой выход, Q - инверсный выход.
_Асинхронные триггеры
Асинхронные триггеры редко непосредственно используются в
цифровых схемах, однако на базе асинхронных триггеров строятся
все триггерные схемы.
1Асинхронный RS-триггер
RS-триггер имеет два информационных входа R и S. При поступ-
лении на эти входы сигналов S=1 и R=0 триггер принимает состояние
Q=1, при S=0 и R=1 состояние Q=0, а при S=0 и R=0 триггер сохра-
няет то состояние, в котором он находился до поступления на его
входы нулевых сигналов. Подача единичных сигналов на оба входа R
и S запрещена.
.
- 5 -
Полная таблица переходов RS-триггера:
┌────────┬────────┬────────┬──────────┐
│ Q(t) │ R(t) │ S(t) │ Q(t+1) │
├────────┼────────┼────────┼──────────┤
│ 0 │ 0 │ 0 │ 0 │
│ 0 │ 0 │ 1 │ 1 │
│ 0 │ 1 │ 0 │ 0 │
│ 0 │ 1 │ 1 │ X │
│ 1 │ 0 │ 0 │ 1 │
│ 1 │ 0 │ 1 │ 1 │
│ 1 │ 1 │ 0 │ 1 │
│ 1 │ 1 │ 1 │ X │
└────────┴────────┴────────┴──────────┘
Минимизированная таблица переходов RS-триггера:
┌────────┬────────┬──────────┐
│ R(t) │ S(t) │ Q(t+1) │
├────────┼────────┼──────────┤
│ 0 │ 0 │ Q(t) │
│ 0 │ 1 │ 1 │
│ 1 │ 0 │ 0 │
│ 1 │ 1 │ X │
└────────┴────────┴──────────┘
Логические уравнения RS-триггера имеют вид:
7( 4 ____
72 0 Q(t+1) = S(t) V R(t) 5. 0Q(t)
7*
72 0 R(t) 5. 0S(t) = 0
79
Асинхронный RS-триггер на элементах ИЛИ-НЕ:
┌───┐
R ─────┤1 │
│ 7@ 0───┬── Q
┌──┤ │ │
│ └───┘ │
└─────────┐│
┌─────────┼┘
│ ┌───┐ │
└──┤1 │ │ 4 _
│ 7@ 0──┴─── Q
S ─────┤ │
└───┘
.
- 6 -
Условное графическое изображение такого триггера:
┌─┬───┐
──┤S│T ├──
│ │ │
──┤R│ 7@ 0──
└─┴───┘
Асинхронный RS-триггер на элементах И-НЕ:
4_ 0 ┌───┐
S ─────┤& │
│ 7@ 0───┬── Q
┌──┤ │ │
│ └───┘ │
└─────────┐│
┌─────────┼┘
│ ┌───┐ │
└──┤& │ │ 4 _
4_ 0 │ 7@ 0──┴─── Q
R ─────┤ │
└───┘
Условное графическое изображение такого триггера:
┌─┬───┐
── 7@ 0S│T ├──
│ │ │
── 7@ 0R│ 7@ 0──
└─┴───┘
или
┌─┬───┐
│ 4_ 0│ 7 0│
──┤S│ 7T 0 ├──
│ │ │
│ 4_ 0│ │
──┤R│ 7@ 0──
│ │ │
└─┴───┘
ПЕРВЫЙ СЕМЕСТР
ЛЕКЦИЯ N 10
2ТРИГГЕРЫ
1Синхронный однотактный RS-триггер
Синхронные RS-триггеры имеет на каждом входе дополнительные
схемы совпадения:
4_
┌───┐ S ┌───┐
S ──────┤& 7@ 0──────┤& │
│ │ │ 7@ 0───┬── Q
┌──┤ │ ┌──┤ │ │
│ └───┘ │ └───┘ │
│ └─────────┐│
C ───┤ ││
│ ┌─────────┼┘
│ ┌───┐ │ ┌───┐ │
└──┤& │ 4_ 0 └──┤& │ │ 4 0 4_
│ │ R │ 7@ 0──┴─── Q
R ──────┤ 7@ 0──────┤ │
└───┘ └───┘
Если на входе C "ноль", то на выходах схемы совпадения также
будут нулевые значения при любых сигналах на входах R и S. При
поступлении синхроимпульса на вход схемы совпадения информация с
входов R и S инвертируется и передается на входы асинхронного
триггера.
Графическое обозначение синхронного однотактного RS-триггера:
┌─┬───┐
──┤S│T ├── Q
──┤C│ │ 4 _
──┤R│ 7@ 0── Q
└─┴───┘
.
- 2 -
Синхронный триггер может иметь дополнительные асинхронные
входы R 4а 0 и S 4а 0:
4_
S 4а 0 ──────────────┐
4_ 0 │ ┌───┐
┌───┐ S └──┤& │
S ──────┤& 7@ 0──────┤ 7@ 0───┬── Q
│ │ ┌──┤ │ │
┌──┤ │ │ └───┘ │
│ └───┘ └─────────┐│
C ───┤ ││
│ ┌───┐ ┌─────────┼┘
└──┤& │ 4_ 0 │ ┌───┐ │
│ │ R └──┤& │ │ 4 _
R ──────┤ 7@ 0──────┤ 7@ 0──┴──── Q
└───┘ ┌──┤ │
4_ 0 │ └───┘
R 4а 0 ──────────────┘
Графическое обозначение синхронного однотактного RS-триггера
с асинхронными входами:
4_ 0 ┌─┬───┐
S 4а 0 ── 7@ 0S│T ├── Q
├─┤ │
──┤S│ │
──┤C│ │
──┤R│ │
4_ 0 ├─┤ │ 4 _
R 4а 0 ── 7@ 0R│ 7@ 0── Q
└─┴───┘
1Синхронные 0 1двухтактные триггеры
Синхронные двухступенчатые (двухтактные) триггеры построены
по принципу "master-slave" (ведущий-ведомый). Триггерная схема
состоит из двух частей-триггеров, одновременный прием информации
в которые запрещен. Для построения первой и второй ступеней ис-
пользуют однотактные синхронные триггеры. Информация передается
во вторую ступень только после ее приема в первую ступень и окон-
чания синхроимпульса, разрешающего запись информации в первую
ступень. Такая последовательность приема информации достигается
включением инвертора в цепь синхронизации для второй ступени.
.
- 3 -
Все двухтактные триггеры имеют следующую общую структуру:
┌─ ── ── ── ── ── ── ── ── ─┐
┌──┬────┐ ┌─┬────┐
E 41 0 ───┴────┤E 41 0│T ├─────┤S│T ├─┴─── Q
C ──────┬─┤C │ │ ┌──┤C│ │ 4 _
E 42 0 ───┬──┼─┤E 42 0│ ├──┼──┤R│ ├─┬─── Q
│ └──┴────┘ │ └─┴────┘
└─ ┼─ ── ── ── ─┼ ── ── ── ─┘
│ ┌──┐ │
└────┤ 51 0 7@ 0────┘
└──┘
Наиболее широкое применение в устройствах вычислительной
техники находят двухтактные триггеры типов RS, T, D и JK.
Рассмотрим в качестве приера схему двухтактного RS-триггера:
┌───┐ ┌───┐ Q' ┌───┐ ┌───┐
S ──────┤& 7@ 0─────┤& 7@ 0──┬──────┤& 7@ 0─────┤& 7@ 0──┬─── Q
┌──┤ 41 0│ ┌──┤ 44 0│ │ ┌──┤ 46 0│ ┌──┤ 48 0│ │
│ └───┘ │ └───┘ │ │ └───┘ │ └───┘ │
│ └────────┐│ │ └────────┐│
C ───┤ ││ │ ││
│ ┌────────┼┘ │ ┌────────┼┘
│ ┌───┐ │ ┌───┐ │ 4_ 0 │ ┌───┐ │ ┌───┐ │
├──┤& │ └──┤& │ │ 4 0Q' ├──┤& │ └──┤& │ │ 4 _
R ───┼──┤ 42 7@ 0─────┤ 45 7@ 0─┴────┼──┤ 47 7@ 0─────┤ 49 7@ 0─┴──── 4 0Q
│ └───┘ └───┘ 4_ 0 │ └───┘ └───┘
│ ┌───┐ C │
└─────┬─┤& 7@ 0───────────┘
└─┤ 43 0│
└───┘
Рассмотрим идеализированную временную диаграмму работы двух-
тактного RS-триггера (предполагаем форрму импульсов прямоугольной
и не учитываем разброс времени задержки элементов схемы):
.
- 4 -
C
│ ┌─────┐ ┌─────┐ ┌─────┐ ┌─────┐
├─────┘ └─────┘ └─────┘ └─────┘ └─────
└─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼────── t
S
│ ┌───────────┐
├──────────────┘ └──────────────────────────
└─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼────── t
R
│ ┌──────────────
├──────────────────────────────────────┘
└─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼────── t
1
├──────────────────┐ ┌────────────────────────────
│ └─────┘
└─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼────── t
2
├──────────────────────────────────────────┐ ┌────
│ └─────┘
└─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼────── t
Q'
4│ ┌────────────────────── 0──┐
├───── 4──────────────┘ 0 4 0└ 4──── 0────
└─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼────── t
4_
Q'
├───── 4────── 0── 4───────┐ 0 ┌─ 4───── 0───
4│ 0 4 └────────────────────── 0┘
└─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼────── t
4_
C
├──────┐ ┌─────┐ ┌─────┐ ┌─────┐ ┌────
│ └─────┘ └─────┘ └─────┘ └─────┘
└─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼────── t
6
├─────────────────────────┐ ┌─────┐ ┌─────────
│ └─────┘ └─────┘
└─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼────── t
7
│ ┌─────┐ ┌───────────────────────┐
├───────┘ └─────┘ └─────────
└─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼────── t
Q
4│ 0 4┌────────────────── 0┐
├───── 4──────── 0────────── 4───┘ 0 └ 4─── 0────
└─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼────── t
ПЕРВЫЙ СЕМЕСТР
ЛЕКЦИЯ N 11
2ТРИГГЕРЫ
1T-триггеры
T-триггер (триггер со счетным входом) изменяет свое состоя-
ние на противоположное каждый раз при подаче на вход T единичного
сигнала.
Таблица переходов асинхронного T-триггера:
┌────────┬──────────┐
│ Т(t) │ Q(t+1) │
├────────┼──────────┤
│ │ │
│ 0 │ Q(t) │
│ │ 4_ 0 │
│ 1 │ Q(t) │
└────────┴──────────┘
Схема асинхронного T-триггера:
┌─────────────────────────┐
│ ┌─┬────┐ ┌─┬────┐ │
└──┤S│T ├─────┤S│T ├─┬┼── Q
T ──┬────┤C│ │ ┌──┤C│ │ 4 0││ 4 _
│ ┌──┤R│ 7@ 0──┼──┤R│ 7@ 0─┼┴── Q
│ │ └─┴────┘ │ └─┴────┘ │
│ └────────────┼───────────┘
│ ┌──┐ │
└───────┤ 51 0 7@ 0───┘
└──┘
Графическое изображение асинхронного T-триггера:
┌─┬────┐
│ │TT ├──
──┤T│ │
│ │ 7@ 0──
└─┴────┘
.
- 2 -
Схема синхронного T-триггера:
┌─────────────────────────────────┐
│ ┌───┐ │
└──┤& │ ┌───┐ ┌───┐ │ ┌───┐
┌────┤ 7@ 0─────┤& 7@ 0──┬──────┤& 7@ 0──┼──┤& 7@ 0──┬─── Q
│ ┌──┤ 41 0│ ┌──┤ 44 0│ │ ┌──┤ 46 0│ ├──┤ 48 0│ │
│ │ └───┘ │ └───┘ │ │ └───┘ │ └───┘ │
│ │ └────────┐│ │ └────────┐│
T ──┼─┤ ││ │ ││
│ │ ┌────────┼┘ │ ┌────────┼┘
│ │ ┌───┐ │ ┌───┐ │ │ ┌───┐ │ ┌───┐ │
│ └──┤& │ └──┤& │ │ 4 0 ├──┤& │ ├──┤& │ │ 4 _
├────┤ 7@ 0─────┤ 45 7@ 0─┴────┼──┤ 47 7@ 0──┼──┤ 49 7@ 0─┴──── 4 0Q
│ ┌──┤ 42 0│ └───┘ │ └───┘ │ └───┘
│ │ └───┘ │ │
│ └───────────────────────┼─────────┘
│ ┌───┐ │
C ──┴───────┬─┤& 7@ 0───────────┘
└─┤ 43 0│
└───┘
Графическое изображение синхронного T-триггера:
┌─┬────┐
│ │TT ├──
──┤T│ │
──┤C│ │
│ │ 7@ 0──
└─┴────┘
Синхронный T-триггер с цепями сброса и установки:
┌─┬────┐
── 7@ 0S│TT ├──
├─┤ │
──┤T│ │
──┤C│ │
├─┤ │
── 7@ 0R│ 7@ 0──
└─┴────┘
.
- 3 -
1D-триггеры
Триггер D-типа - это триггер задержки. Он описывается логи-
ческим уравнением Q(t+1)=D(t), т.е. состояние D-триггера в момент
времени t+1 совпадает с кодом входного сигнала, действовавшего в
момент времени t.
Схема D-триггера:
┌───┐ ┌───┐ ┌───┐ ┌───┐
D ───────┤& 7@ 0──┬────┤& 7@ 0──┬──────┤& 7@ 0─────┤& 7@ 0──┬─── Q
┌───┤ 41 0│ │ ┌──┤ 44 0│ │ ┌──┤ 46 0│ ┌──┤ 48 0│ │
│ └───┘ │ │ └───┘ │ │ └───┘ │ └───┘ │
│ │ └────────┐│ │ └────────┐│
C ───┤ ┌────────┘ ││ │ ││
│ │ ┌────────┼┘ │ ┌────────┼┘
│ │ ┌───┐ │ ┌───┐ │ │ ┌───┐ │ ┌───┐ │
│ └─┤& │ └──┤& │ │ 4 0 ├──┤& │ └──┤& │ │ 4 _
├───┤ 42 7@ 0───────┤ 45 7@ 0─┴────┼──┤ 47 7@ 0─────┤ 49 7@ 0─┴──── 4 0Q
│ └───┘ └───┘ │ └───┘ └───┘
│ ┌───┐ │
└───────┬─┤& 7@ 0────────────┘
└─┤ 43 0│
└───┘
Временная диаграмма работы D-триггера:
T
C ├───────────────┤
│ ┌───────┐ ┌───────┐ ┌───────┐
├───────┘ └───────┘ └───────┘ └─────
└───────┼───────┼───────┼───────┼───────┼───────┼────── t
D
│ ┌─────────────────┐
├──────────────────┘ └────────────────
└───────┼───────┼───────┼───────┼───────┼───────┼────── t
2 7t 03 7t
Q ├──┤ ├───┤
│ │ ┌────────────────┐
├──────────────────────────────────┘ └──
└───────┼───────┼───────┼───────┼───────┼───────┼────── t
.
- 4 -
D-триггер с цепями сброса и установки:
┌─┬────┐
── 7@ 0S│TT ├──
├─┤ │
──┤D│ │
──┤C│ │
├─┤ │
── 7@ 0R│ 7@ 0──
└─┴────┘
1JK-триггеры
JK-триггер имеет обычно не менее 5 входов: входы асинхронный
установки S и сброса R, вход тактовых импульсов C и управляющие
входы J и K.
При подаче 2единиц 0 на входы J и K JK-триггер работает как
триггер со счетным входом: при поступлении каждого импульса на
вход C (точнее, после спада импульса) состояние триггера изменя-
ется на противоположное. Если на входах J и K установлены 2нулевые
уровени, то состояние триггера при подаче импульсов на вход C не
меняется. Если на входе J 2единица 0, а на входе K 2ноль 0, то после
спада синхроимпульса на входе C JK-триггер устанавливается в сос-
тояние 2единица 0 (Q=1). Если на входе J 2ноль 0, а на входе K 2единица 0,
то после спада синхроимпульса на входе C JK-триггер устанавлива-
ется в состояние 2ноль 0 (Q=0). Если на входе C низкий уровень, то
изменение сигналов на входах J и K не влияет на состояние тигге-
ров.
Следует различать "универсальные" и "синхронные" JK-тригге-
ры. 2Универсальный 0 триггер при наличии высокого уровня ( 2единицы 0)
на входе C и 2спаде 0 сигнала (переходе из 1 в 0) на входе J перехо-
дит в состояние 2единица 0. При наличии 2единицы 0 на входе C и 2спаде
сигнала на входе K универсальный триггер переходит в состояние
2ноль 0. Этот режим работы универсальных триггеров позволяет в неко-
торых случаях упростить построение различных счетчиков.
Основным отличием 2синхронных 0 триггеров от универсальных яв-
ляется то, что изменение состояния синхронных триггеров может
происходить только по спаду импульсов на входе C или по поступле-
нию сигналов сброса и установки на асинхронные входы R и S.
Если во время действия высокого уровня на входе C триггер
находится в нулевом состоянии и на входе J появляется (хотя бы
кратковременно) единица, то после спада сигнала на входе C триг-
гер переключится в состтояние 1, причем это произойдет независимо
от состояний сигналов на входах J и K в момент спада сигнала на
входе C. Аналогично, если во время действия высокого уровня на
входе C триггер находится в состоянии 1 и на входе K появляется
- 5 -
(хотя бы кратковременно) единица, то по спаду сигнала на входе C
триггер переключится в состтояние 0, т.е. триггер запоминает им-
пульсы, приходящие на входы J и K.
Определить разновидность триггера можно по его принципиаль-
ной схеме. Если вход C образован соединением двух входов, каждый
из которых эквивалентен входам J и K, то это - универсальный
триггер. Если для получения входа C используются еще и другие це-
пи триггера, то триггер синхронный.
К сожалению, технические условия на большинство JK-триггеров
не определяют их принципиальных схем. В результате, например,
триггеры типов К130ТВ1, К131ТВ1, К133ТВ1, К155ТВ1, впускаемые ра-
личными изготовителями, могли быть как универсальными, так и
синхронными, что сильно осложняло работу проектировщиков элект-
ронных схем. Чтобы избежать недоразумений, рекомендуется исполь-
зовать только такие схемы включения триггеров, в которых сигналы
на входах J и K не меняются при наличии высокого уровня на входе
C.
Схема "синхронного" JK-триггера:
┌─────────────────────────────────┐
│ ┌───┐ │
└──┤& │ ┌───┐ ┌───┐ │ ┌───┐
J ───────┤ 7@ 0─────┤& 7@ 0──┬──────┤& 7@ 0──┼──┤& 7@ 0──┬─── Q
┌───┤ 41 0│ ┌──┤ 44 0│ │ ┌──┤ 46 0│ ├──┤ 48 0│ │
│ └───┘ │ └───┘ │ │ └───┘ │ └───┘ │
│ └────────┐│ │ └────────┐│
│ ││ │ ││
│ ┌────────┼┘ │ ┌────────┼┘
│ ┌───┐ │ ┌───┐ │ │ ┌───┐ │ ┌───┐ │
├───┤& │ └──┤& │ │ 4 0 ├──┤& │ ├──┤& │ │ 4 _
K ───┼───┤ 7@ 0─────┤ 45 7@ 0─┴────┼──┤ 47 7@ 0──┼──┤ 49 7@ 0─┴──── 4 0Q
│┌──┤ 42 0│ └───┘ │ └───┘ │ └───┘
││ └───┘ │ │
│└───────────────────────┼─────────┘
│ ┌───┐ │
C ───┴──────┬─┤& 7@ 0───────────┘
└─┤ 43 0│
└───┘
.
- 6 -
JK-триггер с цепями сброса и установки:
┌─┬────┐
── 7@ 0S│TT ├──
├─┤ │
──┤J│ │
──┤C│ │
──┤K│ │
├─┤ │
── 7@ 0R│ 7@ 0──
└─┴────┘
ПЕРВЫЙ СЕМЕСТР
ЛЕКЦИЯ N 12
2РЕГИСТРЫ
Электронную схему, выполняющую операции над одним машинным
словом, называют узлом ЭВМ.
2Регистр 0 - это узел ЭВМ, который состоит из системы запомина-
ющих элементов и управляющей этой системой логической схемы и
предназначен для выполнения следующих операций:
1) сброс регистра в ноль;
2) прием n-разрядного кода числа из другого узла ЭВМ;
3) передача кода числа в другой узел;
4) хранение кода числа;
5) преобразование прямого кода числа в обратный или дополни-
тельный и наоборот;
6) сдвиг влево или вправо кода числа на требуемое число раз-
рядов;
7) преобразование последовательного кода в параллельный и
наоборот;
8) поразрядное логическое сложение двух чисел;
9) поразрядное логическое умножение двух чисел;
10) поразрядное сложение двух чисел по модулю 2.
Конкретные регистры обычно являются специализированными и
реализуют лишь некоторые из перечисленных операций.
1Классификация регистров
По возможности смещения информации различают сдвигающие ре-
гистры и регистры памяти (регистры без сдвига).
По количеству тактов управления, необходимых для записи ин-
формации, различают однотактные регистры (с приемом информации в
парафазном коде), двухтактные (со сбросом перед записью информа-
ции) и многотактные (сдвигающие) регистры.
Сдвигающие регистры классифицируются по способу приема и пе-
редачи информации:
а) последовательные (прием и передача кода слова производят-
ся последовательно, разряд за разрядом);
б) параллельные (с одновременным приемом или передачей кодов
всех разрядов слова);
в) последовательно параллельные (прием и передача слова про-
изводятся группами по несколько разрядов, например, байтами).
.
- 2 -
Рассмотрим в качестве примера структуру четырехразрядного
запоминающего регистра, работающего в парафазном коде:
┌─┬───┐
D 41 0─────┤S│TT ├───── Q 41
4_ 0 ┌─┤C│ │ 4 _
D 41 0───┼─┤R│ 7@ 0───── Q 41
│ └─┴───┘
│ ┌─┬───┐
D 42 0───┼─┤S│TT ├───── Q 42
4_ 0 ├─┤C│ │ 4 _
D 42 0───┼─┤R│ 7@ 0───── Q 42
│ └─┴───┘
│ ┌─┬───┐
D 43 0───┼─┤S│TT ├───── Q 43
4_ 0 ├─┤C│ │ 4 _
D 43 0───┼─┤R│ 7@ 0───── Q 43
│ └─┴───┘
│ ┌─┬───┐
D 44 0───┼─┤S│TT ├───── Q 44
4_ 0 ├─┤C│ │ 4 _
D 44 0───┼─┤R│ 7@ 0───── Q 44
│ └─┴───┘
C ───┘
На принципиальной схеме данный регистр изображается следую-
щим образом:
┌──┬────┐
──┤S 41 0│RG ├──
──┤R 41 0│ 7@ 0──
──┤S 42 0│ ├──
──┤R 42 0│ 7@ 0──
──┤S 43 0│ ├──
──┤R 43 0│ 7@ 0──
──┤S 44 0│ ├──
──┤R 44 0│ 7@ 0──
──┤C │ │
└──┴────┘
.
- 3 -
Регистры сдвига строятся на базе двухтактных триггеров RS, D
или JK. Рассмотрим в качестве примера реверсивный сдвигающий ре-
гистр, построенный на базе D-триггеров с коммутаторами на базе
логических элементов И-ИЛИ-НЕ:
D 41 0 Q 41 0 D 42 0 Q 42 0 D 4n 0 Q 4n
│ │ │ │ │ │
4│ 0 4│ 0 ┌──┼───────────────┼────┼─────────────── 4┤
│ ┌───────────────┼─┼──┼───────────────┤ ┌──┼─ 4──────────────┤
│ │┌─┬──┐ │ │ │┌─┬──┐ │ │ │┌─┬──┐ │
│ └┤&│1 │ │ │ └┤&│1 │ │ │ └┤&│1 │ │
│┌──┤ │ │ │ │┌──┤ │ │ │ │┌──┤ │ │ │
││ ├─┤ │ ┌─┬───┐│ ││ ├─┤ │ ┌─┬───┐│ ││ ├─┤ │ ┌─┬───┐│
4├ 0┼──┤&│ 7@ 0── 7@ 0D│TT ├┴─┼┼──┤&│ 7@ 0── 7@ 0D│TT ├┴─┼┼──┤&│ 7@ 0── 7@ 0D│TT ├┴─
4│ 0│┌─┤ │ │┌─┤C│ │ ││┌─┤ │ │┌─┤C│ │ ││┌─┤ │ │┌─┤C│ │
4│ 0││ ├─┤ ││ ├─┤ │ │││ ├─┤ ││ ├─┤ │ │││ ├─┤ ││ ├─┤ │
4└ 0┼┼─┤&│ ││┌ 7@ 0R│ │ └┼┼─┤&│ ││┌ 7@ 0R│ │ └┼┼─┤&│ ││┌ 7@ 0R│ │
││┌┤ │ │││└─┴───┘ ││┌┤ │ │││└─┴───┘ ││┌┤ │ │││└─┴───┘
│││└─┴──┘││ │││└─┴──┘││ │││└─┴──┘││
│││ ││ │││ ││ │││ ││
V ─┴┼┼──────┼┼──────────┴┼┼──────┼┼──────────┘││ ││
DR──┴┼──────┼┼───────────┴┼──────┼┼───────────┘│ ││
DL───┴──────┼┼────────────┴──────┼┼────────────┘ ││
4_ 0 ││ ││ ││
R ──────────┴┼───────────────────┴┼───────────────────┘│
C ───────────┴────────────────────┴────────────────────┘
Обозначения:
D 41 0-D 4n 0 - информационные входы;
Q 41 0-Q 4n 0 - информационные выходы;
C - вход синхронизации;
R - вход сброса;
V - разрешение записи информации (параллельного кода);
DR - сдвиг вправо;
DL - сдвиг влево;
.
- 4 -
На принципиальной схеме данный регистр изображается следую-
щим образом:
╤┌──┬──┬──┐
──┤D 41 0│RG│Q 41 0├──
──┤D 42 0│ │ │
──┤D 43 0│ │Q 42 0├──
──┤D 44 0│ │ │
├──┤ │Q 43 0├──
──┤DR│ │ │
──┤DL│ │Q 44 0├──
──┤V │ │ │
──┤C │ │ │
├──┤ │ │
── 7@ 0R │ │ │
└──┴──┴──┘
ПЕРВЫЙ СЕМЕСТР
ЛЕКЦИЯ N 13
2СЧЕТЧИКИ
Счетчиком называется схема, выполняющая функции подсчета ко-
личества единичных сигналов, поступивших на ее вход, а также
функции формирования и запоминания некоторого кода, соответствую-
щего этому количеству. Счетчики также иногда могут выполнять
функции приема и выдачи кода.
Схемы счетчиков можно классифицировать по следующим призна-
кам:
1) Основание системы счисления. В вычислительных системах
используются двоичные и десятичные счетчики. Двоичные счетчики в
свою очередь подразделяются на счетчики с модулем пересчета, рав-
ным 2 5n 0, и модулем пересчета, не равным 2 5n 0, где n - разрядность
счетчика.
2) Направление переходов счетчика. Счетчики принято разде-
лять на простые (суммирующие или вычитающие), которые могут вести
счет только в одном направлении, то есть только прибавлять или
вычитать входные сигналы, и реверсивные, которые в зависимости от
управляющих сигналов могут вести счет в прямом или обратном нап-
равлениях.
3) Способ построения цепей переноса. Различают счетчики с
последовательным, сквозным, параллельным и групповым переносом.
4) Способ организации счета. Счетчики могут быть асинхронны-
ми и синхронными. В асинхронных счетчиках изменение состояния
счетчика осуществляется с поступлением информации только на вход
первого каскада. В синхронных счетчиках информационный сигнал
поступает одновременно на синхронные входы всех разрядов.
5) Тип элементов, используемых для построения счетчика. Раз-
личают счетчики на импульсных, импульсно-потенциальных и потенци-
альных элементах. Хотя в современной электронной аппаратуре ис-
пользуются все эти три типа, в дальнейшем мы будем рассматривать
только счетчики на потенциальных элементах, так как это основной
тип счетчиков, используемых в ЭВМ.
6) Тип организации счетного элемента. Счетчики могут быть
построены на триггерах со счетным входом и на запоминающих эле-
ментах с использованием логических суммирующих схем.
Особую группу составляют счетчики, работающие по принципу
циклического сдвигающего регистра (ккольцевые счетчики). Однако
эти счетчики отличаются низкой устойчивостью к помехам и сбоям и
в ЭВМ практически не применяются.
2Двоичные счетчики
Схемы счетчиков могут быть построены на базе триггеров. Чис-
ло триггеров, необходимых для построения счетчика, определяется
по формуле:
- 2 -
n = ceil(log 42 0k)
где k - 2коэффициент (модуль) пересчета 0 - максимальное число
внутренних состояний, которое может иметь счетчик, ceil - функция
округления сверху до целого числа.
Другой важной характеристикой является быстродействие. 2Быст-
2родействие 0 счетчика в значительной мере определяется построением
цепей переноса. Быстродействие характеризуется 2временем установ-
2ления кода 0 на выходе счетчика T 4уст 0, то есть интервалом времени
между моментом поступления входного импульса и моментом окончания
самого длительного переходного процесса в счетчике.
Если не приняты никакие меры к ускорению переносов, то T 4уст
счетчика определяется временем срабатывания триггеров счетчика
t 4тр 0 и числом разрядов счетчика n:
T 4уст 0 = t 4тр 0 5. 0 n
Введение цепи сквозного переноса позволяет сократить время
установления кода до величины
T' 4уст 0 = (n-1) 5. 0 t 4& 0 + t 4тр
где t 4& 0 - время срабатывания схемы И в цепи сквозного переноса.
Дальнейшее повышение быстродействия счетчиков достигается
использованием цепей параллельного переноса (T" 4уст 0 = t 4тр 0) и груп-
пового переноса. В случае использования группового переноса учи-
тывается время распространения сигнала между m группами, входящи-
ми в состав счетчика:
T 5гр 4уст 0 = mt 4& 0 + t 4тр
Разрешающая способность счетчика определяется минимальным
временем t 4р 0 между двумя счетными импульсами, при котором счетчик
работает надежно. Максимальная частота поступления счетных им-
пульсов f 4сч 0 в общем случае определяется как
f 4сч 0 = 1/t 4тр
1Асинхронные счетчики
Простейшие схемы двоичных счетчиков выполняются путем после-
довательного соединения триггеров со счетными входами. T-триггер
является счетчиком с K=2. Для построения счетчика с K = 2 5n 0 требу-
ется n таких триггеров. Рассмотрим в качестве примера схему
асинхронного двоичного триггера с последовательным переносом:
- 3 -
Q 41 0 Q 42 0 Q 43
┌─┬───┐ │ ┌─┬───┐ │ ┌─┬───┐ │
│ │TT ├────┤ │ │TT ├────┤ │ │TT ├────┘
T ─────┤T│ │ └────┤T│ │ └────┤T│ │
│ │ │ │ │ │ │ │ │
├─┤ │ ├─┤ │ ├─┤ │
┌─ 7@ 0R│ 7@ 0── ┌─ 7@ 0R│ 7@ 0── ┌─ 7@ 0R│ 7@ 0──
4_ 0 │ └─┴───┘ │ └─┴───┘ │ └─┴───┘
R ───┴───────────────┴───────────────┘
Временная диаграмма работы счетчика будет иметь следующий
вид:
T
│
│ ┌──┐ ┌──┐ ┌──┐ ┌──┐ ┌──┐ ┌──┐ ┌──┐ ┌──┐ ┌──┐
└──┴──┴──┴──┼──┴──┴──┴──┼──┴──┴──┴──┴──┴──┴──┴──┴──┴──┴── t
Q 41 0 t 4тр
│ ─┼┼─── │ │
│ │├─────┐ ┌─────┐ ┌─────┐ ┌─────┐
└─────┴┴────┼┴─────┴────┼┴─────┴─────┴─────┴─────┴─────── t
Q 42 0 2t 4тр
│ ─┼─┼──── │
│ │ ├───────────┐ ┌──────────┐
└───────────┴─┴─────────┼─┴────────────┴──────────┴────── t
Q 43 0 3t 4тр
│ ─┼──┼────
│ │ ├───────────────────────┐
└───────────────────────┴──┴───────────────────────┴───── t
Основным недостатком счетчиков с последовательным переносом
является низкое быстродействие.
1Синхронные счетчики со сквозным,
1параллельным и групповым переносом
Быстродействие счетных схем можно повысить благодаря специ-
альной организации цепей переноса и подаче счетных импульсов на
все разряды счетчика одновременно. Как правило, в таких схемах
счетные импульсы выполняют роль импульсов синхронизации, поэтому
рассматриваемые ниже счетчики относятся к классу синхронных.
В схеме 2со сквозным переносом 0 переключение каждого j-го
разряда JK-триггера возможно в том случае, если на его информаци-
онных входах J и K присутствует 1. В противном случае j-й триггер
находится в режиме запоминания.
.
- 4 -
Q 41 0 Q 42 0 Q 43 0 Q 44
│ │ │ │
│ │ ┌──┐ │ ┌──┐ │
├─────────┼─┤& ├──┬─────────┼─┤& ├──┐ │
┌─┬───┐ │ ┌─┬───┐│ │ 4 0 │ 4 0 │ ┌─┬───┐│ 4 0│ 4 0│ │ ┌─┬───┐│
"1"────┤J│TT ├─┼──┤J│TT ├┴─┤ 4 0 │ ├──┤J│TT ├┴─┤ 4 0│ ├──┤J│TT ├┘
┌─┤C│ │ │┌─┤C│ │ └──┘ 4 0 │┌─┤C│ │ 4 0└──┘ │┌─┤C│ │
"1"──┼─┤K│ │ └┼─┤K│ │ └┼─┤K│ │ └┼─┤K│ │
│ ├─┤ │ │ ├─┤ │ │ ├─┤ │ │ ├─┤ │
│┌ 7@ 0R│ 7@ 0─ │┌ 7@ 0R│ 7@ 0─ │┌ 7@ 0R│ 7@ 0─ │┌ 7@ 0R│ 7@ 0─
││└─┴───┘ ││└─┴───┘ ││└─┴───┘ ││└─┴───┘
T ──┴┼─────────┴┼────────────────┴┼────────────────┘│
4_ 0 │ │ │ │
R ───┴──────────┴─────────────────┴─────────────────┘
На входы J и K младшего разряда счетчика подана константа
"1", поэтому он постоянно работает в режиме асинхронного T-триг-
гера, то есть изменяет свое состояние на противоположное под воз-
действием каждого счетного импульса. Изменение состояния старших
разрядов счетчика возможно только в том случае, если все пред-
шествующие триггеры младших разрядов находятся в единичном состо-
янии.
Отличительной особенностью схемы счетчика 2с параллельным пе-
2реносом 0 является то, что выходы всех предшествующих i-му триггеру
разрядов подаются на вход данного триггера.
Q 41 0 Q 42 0 Q 43 0 Q 44
│ │ │ │
├─────────────┼────┬──────────┼───┐ │
│ ├────┼──────────┼──┐│ │
┌─┬───┐ │ ┌─┬───┐ │ 4 0 │ ┌─┬───┐ │ ││ ┌─┬───┐ │
"1"────┤&│ │ │"1"──┤&│ │ │"1"─┼──┤&│ │ │ ├┼──┤&│ │ │
"1"────┤J│TT ├─┼─────┤J│TT ├─┼────┼──┤J│TT ├─┼──┼┼──┤J│TT ├─┘
"1"────┤ │ │ │"1"──┤ │ │ │ ├──┤ │ │ │ │├──┤ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ ││ │ │ │
┌─┤C│ │ │ ┌─┤C│ │ │ 4 0 │┌─┤C│ │ │ ││┌─┤C│ │
│ │ │ │ │ │ │ │ │ │ ││ │ │ │ │ │││ │ │ │
"1"──┼─┤&│ │ │"1"┼─┤&│ │ │"1"─┼┼─┤&│ │ │ └┼┼─┤&│ │
"1"──┼─┤K│ │ └───┼─┤K│ │ └────┼┼─┤K│ │ └───┼┼─┤K│ │
"1"──┼─┤ │ │ "1"┼─┤ │ │ └┼─┤ │ │ └┼─┤ │ │
│ ├─┤ │ │ ├─┤ │ │ ├─┤ │ │ ├─┤ │
│┌ 7@ 0R│ 7@ 0─ │┌ 7@ 0R│ 7@ 0─ │┌ 7@ 0R│ 7@ 0─ │┌ 7@ 0R│ 7@ 0─
││└─┴───┘ ││└─┴───┘ ││└─┴───┘ ││└─┴───┘
T ──┴┼────────────┴┼──────────────┴┼─────────────┘│
4_ 0 │ │ │ │
R ───┴─────────────┴───────────────┴──────────────┘
Для построения данного счетчика использовались многовходовые
- 5 -
JK-триггеры. Из схемы видно, что с возрастанием порядкового номе-
ра триггера увеличивается число входов J и К, необходимых для ор-
ганизации схемы. Так как число входов триггера и его нагрузочная
способность ограничены, то разрядность счетчика с параллельным
переносом обычно не превышает четырех. При построении счетчиков
большей разрядности разряды счетчика разбивают на группы по четы-
ре триггера, и внутри каждой группы строят цепи параллельного пе-
реноса. Перенос между группами организуется, например, методом
сквозного переноса. Такой способ образования сигналов переноса
называется 2групповым 0.
2Счетчики с K 0 7- 0 22 5n
Для многих электронных устройств необходимы счетчики с моду-
лем пересчета, отличным от целой степени двойки. Для электроныых
часов, например, могут потребоваться счетчики с коэффициентами
пересчета 3,6,7,10,24 и т.д. В ЭВМ счетчики применяются для зада-
ния сетки тактовых частот машины.
Принцип построения счетчиков с K 7- 0 2 5n 0 заключается в исключе-
нии лишних устойчивых состояний у двоичного счетчика с K = 2 5n 0.
Для реализации данного принципа используются следующие ос-
новные методы:
1) метод блокирования переноса;
2) принудительный порядок счета;
3) начальная установка кода.
Идея способа 2блокирования переноса 0 заключается в том, что
при подаче импульса с номером, несколько меньшим коэффициента пе-
ресчета, блокируется поступление счетных импульсов в разряды, на-
ходящиеся в нулевом состоянии, а последующие импульсы обнуляют
триггеры, оставшиеся в единичном состоянии, так, что с приходом
K-го импульса все триггеры счетчика оказываются в нулевом состоя-
нии.
Рассмотрим в качестве примера троичный счетчик:
Q 41 0 Q 42
│ │
┌────────────┼───────────────┐ │
│ ┌─┬───┐ │ ┌─┬───┐ │ │
└─┤J│TT ├────┴───────┤J│TT ├─┼──┘
┌──────┤C│ │ ┌──────┤C│ │ │
│ "1"──┤K│ │ │ "1"──┤K│ │ │
│ ├─┤ │ │ ├─┤ │ │
│ ┌─ 7@ 0R│ 7@ 0─ │ ┌─ 7@ 0R│ 7@ 0─┘
│ │ └─┴───┘ │ │ └─┴───┘
T ──┴────┼─────────────┘ │
4_ 0 │ │
R ───────┴──────────────────┘
- 6 -
Временная диаграмма работы счетчика будет иметь следующий
вид:
T
│
│ ┌──┐ ┌──┐ ┌──┐ ┌──┐ ┌──┐ ┌──┐
└──┴──┴──┴── 4┴──┴──┴──┴──┴──┴──┴ 0──┴──┴── t
Q 41
│
│ 4┌───── 0┐ 4 0 ┌─────┐
└───── 4┴ 0─── 4──┴ 0───── 4─── 0─ 4─── 0┴─────┴─────── t
Q 42
│
│ 4 0 4┌───── 0┐ 4 0 ┌─────┐
└─── 4─────── 0─ 4┴ 0─── 4──┴ 0───── 4─── 0─ 4─── 0┴─────┴─ t
В счетчиках с 2принудительным порядком счета 0 исключение зап-
рещенных состояний достигается за счет принудительной установки
отдельных разрядов в состояние 1 в процессе счета. Для этого в
схему счетчика вводятся обратные связи.
В счетчике с 2начальной установкой кода 0 необходимое число
запрещенных состояний устанавливается перед началом счета по сиг-
налу "Начальная установка кода".
ПЕРВЫЙ СЕМЕСТР
ЛЕКЦИЯ N 14
2ДЕШИФРАТОРЫ
2Дешифратором 0 называтся комбинационная схема с несколькими
входами и выходами, преобразующая код, подаваемый на входы, в
сигнал на одном из выходов.
В общем случае дешифратор с n входами имеет 2 5n 0 выходов, так
как n-разрядный код входного слова может принимать 2 5n 0 различных
значений.
Рассмотрим в качестве примера следующую схему:
┌───┐
┌──────┤ 5& 0 ├───── y 41
┌──┐ │ ┌──┤ │
┌─┤ 51 0 7@ 0────┤ │ └───┘
│ └──┘ │ │ ┌───┐
x 41 0 ────┴───────┬─┼───┼──┤ 5& 0 ├───── y 42
│ │ ├──┤ │
┌──┐ │ │ │ └───┘
┌─┤ 51 0 7@ 0──┼─┼───┘ ┌───┐
│ └──┘ │ └──────┤ 5& 0 ├───── y 43
x 42 0 ────┴───────┼───┬────┤ │
│ │ └───┘
│ │ ┌───┐
│ └────┤ 5& 0 ├───── y 44
└────────┤ │
└───┘
Условное обозначение дешифратора:
┌─┬──┬─┐
│D│DC│0├──
──┤0│ │1├──
──┤1│ │2├──
│ │ │3├──
└─┴──┴─┘
2МУЛЬТИПЛЕКСОРЫ
2Мультиплексором 0 называется схема, осуществляющая передачу
сигналов с одной из входных линий на выходную. Выбор входной (ин-
формационной) линии производится с помощью кода, подаваемого на
управляющие входы мультиплексора. Мультиплексор с k управляющими
входами имеет 2 5k 0 информационными входов.
- 2 -
Рассмотрим в качестве примера следующую схему:
┌───┐
D 40 0 ─────────┤ 5& 0 ├───┐
┌─────┤ │ │
│ └───┘ │
│ ┌───┐ │
D 41 0 ───┼─────┤ 5& 0 ├──┐│ ┌───┐
│┌────┤ │ │└──┤ 51 0 │
││ └───┘ └───┤ ├─── y
││ ┌───┐ ┌───┤ │
D 42 0 ───┼┼────┤ 5& 0 ├──┘┌──┤ │
││┌───┤ │ │ └───┘
│││ └───┘ │
│││ ┌───┐ │
D 43 0 ───┼┼┼───┤ 5& 0 ├───┘
│││┌──┤ │
││││ └───┘
││││
││││
┌─┬──┬─┐ ││││
│ │DC│0├───┘│││
x 40 0 ──┤0│ │1├────┘││
x 41 0 ──┤1│ │2├─────┘│
│ │ │3├──────┘
└─┴──┴─┘
Условное обозначение мультиплексора:
┌──┬────┬──┐
───┤D1│ MS │ │
───┤D2│ │ │
───┤D3│ │ │
───┤D4│ │Q ├───
├──┤ │ │
───┤A1│ │ │
───┤A2│ │ │
└──┴────┴──┘
_ 2ПРОЦЕССОРЫ И МИКРОПРОЦЕССОРЫ
ОСНОВНЫЕ ПРИНЦИПЫ ПОСТРОЕНИЯ
УСТРОЙСТВ ОБРАБОТКИ ЦИФРОВОЙ ИНФОРМАЦИИ
2Принцип академика В.М. Глушкова 0 гласит, что в любом устрой-
стве обработки цифровой информации можно выделить операционный и
- 3 -
управляющий блоки. Такой подход упрощает проектирование, а также
облегчает понимание процесса функционирования вычислительного
устройства.
Операционный блок состоит из регистров, сумматоров и других
узлов, производящих прием из внешней среды и хранение кодов, их
преобразование и выдачу результатов работы во внешнюю среду, а
также выдачу в управляющий блок и внешнюю среду оповещающих сиг-
налов.
Процесс функционирования во времени устройства обработки
состоит из последовательности тактовых интервалов, в которых опе-
рационный блок производит элементарные преобразования кодов (пе-
редачу кода из одного регистра в другой, взятие обратного кода,
сдвиг и т.д.).
Элементарная функциональная операция, выполняемая за один
тактовый интервал и приводимая в действие одним управляющим сиг-
налом называется микрооперацией.
Управляющий блок вырабатывает распределенную во времени
последовательность управляющих сигналов, порождающих в операцион-
ном блоке нужную последовательность микроопераций.
Последовательность управляющих сигналов (микрокоманд) опеде-
ляется кодом операции, поступающим извне, состоянием операндов и
промежуточными результатами преобразований.
Существует два основных типа управляющих автоматов:
1) Управляющий автомат с жесткой логикой.
Для каждой операции, задаваемой кодом операции команды, строится
набор комбинационных схем, которые в нужных тактах возбуждают
соответствующие управляющие сигналы.
2) Управляющий автомат с хранимой в памяти логикой.
Каждой выполняемой в операционном устройстве операции ставится в
соответствие совокупность хранимых в памяти слов - микрокоманд,
содержащих информацию о микрооперациях, подлежащих выполнению в
течение одного машинного такта, и указание, какая микрокоманда
должна выполняться следующей.
Последовательность микрокоманд, обеспечивающая выполнение
некоторой операции (например, умножения), называется микропрог-
раммой данной операции.
Функционирование вычислительного устройства может быть опи-
сано совокупностью реализуемых в нем микропрограмм. Это в ряде
случаев удобный, хотя и не единственно возможный способ описания
цифровых устройств.
ПРИНЦИПЫ ОРГАНИЗАЦИИ АРИФМЕТИКО-ЛОГИЧЕСКИХ УСТРОЙСТВ
2Арифметико-логические устройства (АЛУ) 0 служат для выполнения
арифметических и логических преобразований над словами, называе-
мыми в этом случае операндами. АЛУ служит основной частью опера-
ционного блока ЭВМ.
- 4 -
Выполняемые АЛУ операции можно разделить на следующие груп-
пы:
- операции двоичной арифметики для чисел с фиксированной
запятой;
- операции двоичной арифметики для чисел с плавающей запя-
той;
- операции десятичной арифметики;
- операции индексной арифметики;
- операции специальной арифметики;
- операции над логическими кодами;
- операции над алфавитно-цифровыми полями.
Современные ЭВМ общего назначения обычно реализуют операции
всех приведенных выше групп, а малые и микроЭВМ часто не имеют
аппаратуры арифметики чисел с плавающей запятой, десятичной ариф-
метики и операций над алфавитно-цифровыми полями. В этом случае
недостающие операции реализуются специальными программами.
К арифметическим операциям относятся сложение, вычитание,
взятие модулей ("короткие операции"), и умножение и деление
("длинные операции").
Группу логических операций составляют операции дизъюнкция
(логическое ИЛИ) и конъюнкция (логическое И) над многоразрядными
двоичными словами, а также операция сравнения кодов на равенство.
Специальные арифметические операции включают в себя нормали-
зацию, арифметический сдвиг (сдвигаются только цифровые разряды,
а знаковый остается на месте), логический сдвиг (знаковый разряд
сдвигается вместе с цифровыми).
1Классификация АЛУ
По способу действия над операндами АЛУ делятся на после-
довательные и параллельные. В последовательных АЛУ операнды
представляются в последовательном коде, а операции производятся
последовательно во времени над их отдельными разрядами. В настоя-
щее время АЛУ этого типа нигде не применяются. В параллельных АЛУ
операнды представляются параллельным кодом и операции совершаются
параллельно во времени над всеми разрядами операндов.
По способу представления чисел различают АЛУ:
1) для чисел с фиксированной запятой;
2) для чисел с плавающей запятой;
3) для десятичных чисел.
По характеру использования элементов и узлов АЛУ делятся на
блочные и многофункциональные. В блочном АЛУ операции над числами
с фиксированной и плавающей запятой, десятичными числами и алфа-
витно-цифровыми полями выполняются в отдельных блоках, при этом
повышается скорость работы, так как блоки могут параллельно
выполнять соответствующие операции, но значительно возрастают
- 5 -
затраты оборудования. В многофункциональных АЛУ операции для всех
форм представления чисел выполняются одними и теми же схемами,
которые коммутируются нужным образом в зависимости от требуемого
режима работы.
СТРУКТУРА И ФОРМАТ КОМАНД. КОДИРОВАНИЕ КОМАНД.
Все возможные преобразования дискретной информации могут
быть сведены к четырем основным видам:
1) передача информации в пространстиве;
2) хранение информации;
3) логические операции;
4) арифметические операции.
ЭВМ, являющаяся универсальным преобразователем дискретной
информации, выполняет все указанные виды преобразований.
Обработка информации в ЭВМ осуществляется автоматически
путем программного управления. Программа представляет собой алго-
ритм обработки информации, записанный в виде последовательности
команд, которые должны быть выполнены машиной для получения реше-
ния задачи.
Команда представляет собой код, определяющий операцию вычис-
лительной машины и данные, участвующие в операции. Команда
содержит также в явной или неявной форме информацию об адресе, по
которому помещается результат операции, и об адресе следующей
команды.
Процесс выполнения программы состоит из отдельных машинных
операций. В данном случае под операцией понимается преобразование
информации, выполняемое машиной под воздействием одной команды.
Содержанием машинной операции могут быть запоминание в памяти,
передача, арифметическое или логическое преобразование машинных
слов, а также некоторые вспомогательные процедуры.
По характеру выполняемых операций различают следующие основ-
ные группы команд:
1) команды арифметических операций для чисел с фиксированной и
плавающей запятой;
2) команды десятичной арифметики;
3) команды логических операций;
4) команды передачи кодов;
5) команды ввода-вывода;
6) команды передачи управления;
7) команды задания режима работы машины.
В команде, как правило, содержатся не сами операнды, а
информация об адресах ячеек памяти или регистрах, в которых они
находятся.
Код команды можно представить состоящим из нескольких частей
или полей, имеющих определенное функциональное назначение при
кодировании командной информации. Команда в общем случае состоит
из операционной и адресной частей. В свою очередь, эти части
- 6 -
могут состоять из нескольких полей.
Операционная часть содержит код операции, который задает вид
операции. Адресная часть команды содержит информацию об адресах
операндов и результата операции, а в некоторых случаях информацию
об адресе следующей команды.
Структура команды определяется составом, назначением и рас-
положением полей в команде. Форматом команды называют ее струк-
туру с разметкой номеров разрядов (бит), определяющих границы
отдельных полей команды, или с указанием числа бит в определенных
полях.
ПЕРВЫЙ СЕМЕСТР
ЛЕКЦИЯ N 15
СПОСОБЫ АДРЕСАЦИИ
Адресный код - это информация об адресе операнда, содержаща-
яся в команде.
Исполнительный адрес - это номер ячейки памяти, к которой
производится фактическое обращение.
В современных ЭВМ адресный код, как правило, не совпадает с
исполнительным адресом.
Выбор способов адресации, формирования исполнительного адре-
са и преобразования адресов является одним из важнейших вопросов
разработки ЭВМ. Рассмотрим способы адресации, используемые в
современных ЭВМ:
1) 2Подразумеваемый операнд 0.
В команде может не содержаться явных указаний об операнде; в этом
случае операнд подразумевается и фактически задается кодом опера-
ции команды.
2) 2Подразумеваемый адрес 0.
В команде может не содержаться явных указаний об адресе участвую-
щего в операции операнда или адресе, по которому должен быть раз-
мещен результат операции, но этот адрес подразумевается.
3) 2Непосредственная адресация 0.
В команде содержится не адрес операнда, а непосредственно сам
операнд. При непосредственной адресации не требуется обращения к
памяти для выборки операнда и ячейки памяти для его хранения. Это
способствует уменьшению времени выполнения программы и занимаемо-
го ею объема памяти. Непосредственная адресация удобна для хране-
ния различного рода констант.
4) 2Прямая адресация 0.
В адресной части команды может быть непосредственно указан испол-
нительный адрес.
5) 2Относительная (базовая) адресация 0.
При этом способе адресации исполнительный адрес определяется как
сумма адресного кода команды и базового адреса, как правило хра-
нящегося в специальном регистре - регистре базы.
Относительная адресация позволяет при меньшей длине адресно-
го кода команды обеспечить доступ к любой ячейке памяти. Для
этого число разрядов в базовом регистре выбирают таким, чтобы
можно было адресовать любую ячейку оперативной памяти, а адресный
код команды используют для представления лишь сравнительно корот-
кого "смещения". Смещение определяет положение операнда относи-
тельно начала массива, задаваемого базовым адресом.
6) 2Укороченная адресация 0.
Для уменьшения длины кода команды часто применяется так
называемая укороченная адресация. Суть ее сводится к тому, что в
команде задаются только младшие разряды адресов, а старшие разря-
ды при этом подразумеваются нулевыми. Такая адресация позволяет
использовать только небольшую часть фиксированных ячеек в начале
всей адресуемой области памяти, и поэтому применяется лишь сов-
местно с другими способами адресации.
2Регистровая адресация 0 является частным случаем укороченной,
когда в качестве фиксированных ячеек с короткими адресами исполь-
зуются регистры (ячейки сверхоперативной или местной памяти) про-
цессора. Например, если таких регистров 16, то для адреса доста-
точно четырех двоичных разрядов. Регистровая адресация наряду с
сокращением длины адресов операндов позволяет увеличить скорость
выполнения операций, так как уменьшается число обрашений к опера-
тивной памяти.
7) 2Косвенная адресация 0.
Адресный код команды в этом случае указывает адрес ячейки памяти,
в которой находится адрес операнда или команды. Косвенная адреса-
ция широко используется в малых и микроЭВМ, имеющих короткое ма-
шинное слово, для преодоления ограничений короткого формата ко-
манды (совместно используются регистровая и косвенная адресация).
8) 2Адресация слов переменной длины 0.
Эффективность вычислительных систем, предназначенных для
обработки данных, повышается, если имеется возможность выполнять
операции со словами переменной длины. В этом случае в машине
может быть предусмотрена адресация слов переменной длины, которая
обычно реализуется путем указания в команде местоположения в
памяти начала слова и его длины.
9) 2Стековая адресация 0.
Стековая память, реализующая безадресное задание операндов,
особенно широко используется в микропроцессорах и миниЭВМ.
Стек представляет собой группу последовательно пронумерован-
ных регистров или ячеек памяти, снабженных указателем стека, в
котором автоматически при записи и считывании устанавливается
номер (адрес) последней занятой ячейки стека (вершины стека). При
операции записи заносимое в стек слово помещается в следующую по
порядку свободную ячейку стека, а при считывании из стека извле-
кается последнее поступившее в него слово.
10) 2Автоинкрементная и автодекрементная адресации 0.
Поскольку регистровая косвенная адресация требует предвари-
тельной загрузки регистра косвенным адресом из оперативной памя-
ти, что связано с потерей времени, такой тип адресации особенно
эффективен при обработке массива данных, если имеется механизм
автоматического приращения или уменьшения содержимого регистра
при каждом обращении к нему. Такой механизм называется соот-
ветственно автоинкрементной и автодекрементной адресацией. В этом
случае достаточно один раз загрузить в регистр адрес первого об-
рабатываемого элемента массива, а затем при каждом обращении к
регистру в нем будет формироваться адрес следующего элемента
массива.
При автоинкрементной адресации сначала содержимое регистра
используется как адрес операнда, а затем получает приращение,
равное числу байт в элементе массива. При автодекрементной адре-
сации сначала содержимое указанного в команде регистра уменьшает-
ся на число байт в элементе массива, а затем используется как
адрес операнда.
Автоинкрементная и автодекрементная адресации могут рассмат-
риваться как упращенный вариант индексации - весьма важного
механизма преобразования адресных частей команд и организации
вычислительных циклов, поэтому их часто называют автоиндексацией.
11) 2Индексация 0.
Для реализуемых на ЭВМ методов решения математических задач
и обработки данных характерна цикличность вычислительных про-
цессов, когда одни и те же процедуры выполняются над различными
операндами, упорядоченно расположенными в памяти. Поскольку опе-
ранды, обрабатываемые при повторениях цикла, имеют разные адреса,
без использования индексации требовалось бы для каждого повторе-
ния составлять свою последовательность команд, отличающихся ад-
ресными частями.
Программирование циклов существенно упрощается, если после
каждого выполнения цикла обеспечено автоматическое изменение в
соответствующих командах их адресных частей согласно расположению
в памяти обрабатываемых операндов. Такой процесс называется моди-
фикацией команд, и основан на возможности выполнения над кодами
команд арифметических и логических операций.
Управление вычислительным циклом должно обеспечивать повто-
рение цикла нужное число раз, а затем выход из него.
Автоматическая модификация команд и управление вычислитель-
ными циклами в современных ЭВМ обеспечиваются механизмом индекса-
ции. Это понятие включает в себя специальный способ кодирования
команд, командные и аппаратурные средства задания и выполнения
модификации команд и управления вычислительными циклами. Упомяну-
тые средства часто называют индексной арифметикой.
Для выполнения индексации в машину вводятся так называемые
индексные регистры. Исполнительный адрес при индексации формиру-
ется путем сложения адресного кода команды (смещения) с содержи-
мым индексного регистра (индексом), а при наличии базирования - и
с базовым адресом.
Для управления индексацией используются команды, задающие
операции над содержимым индексных регистров - команды индексной
арифметики. Можно отметить основные виды индексных операций:
- засылка в соответствующий индексный регистр начального
значения индекса;
- изменение индекса;
- проверка окончания циклических вычислений.
ПЕРВЫЙ СЕМЕСТР
ЛЕКЦИЯ N 16-17
_ 2МИКРОПРОЦЕССОР INTEL 8086
Структуру команд и методы адресации мы далее будем рас-
сматривать на примере широко распространенного микропроцессора
Intel 8086. Рассмотрим аппаратную модель этого микропроцессора.
АППАРАТНАЯ МОДЕЛЬ ПРОЦЕССОРА 8086
Выполнение программы в ЭВМ представляет собой циклическую
последовательность приведенных ниже действий, образующих цикл
команды:
1) выборка команды из памяти и формирование адреса следующей
по порядку команды;
2) считывание операнда из памяти, если это требуется по смы-
слу команды;
3) собственно выполнение команды;
4) запись результата в память, если это указано в команде, и
переход к новому циклу команды.
Обычно в микропроцессоре эти действия выполняются последова-
тельно во времени. В процессоре 8086 основные этапы сохранены, но
они распределены внутри процессора по двум сравнительно независи-
мым устройствам. Операционное устройство выполняет команды, а
устройство шинного интерфейса выбирает команды, считывает операн-
ды и записывает результаты. Оба устройства могут работать парал-
лельно и в большинстве случаев обеспечивают значительное совмеще-
ние выборки и выполнения команд. В результате этого время выборки
команды как-бы "исчезает" из цикла команды, так как операционное
устройство выполняет команды, уже выбранные шинным интерфейсом.
Операционное устройство содержит группу общих регистров,
арифметико-логическое устройство (АЛУ), основу которого составля-
ет комбинированный 16-разрядный сумматор с последовательно-парал-
лельным переносом, регистр флажков и несколько регистров для
временного хранения операндов и результата операции. Оно выполня-
ет команды, обменивается данными и адресами с шинным интерфейсом,
оперирует общими регистрами и флажками. В его составе имеется
блок микропрограммного управления, который дешифрует команды и
формирует необходимые управляющие сигналы. Операционное устрой-
ство изолированно от внешней шины, за исключением нескольких
внешних сигналов.
Шинный интерфейс выполняет для операционного устройства все
операции обмена. Данные передаются между процессором и памятью
или портами ввода-вывода по запросам операционного устройства.
Когда операционное устройство занято выполнением команды, шинный
интерфейс самостоятельно инициирует опережающую выборку из памяти
очередных команд. Команды хранятся во внутренней регистровой
- 2 -
памяти, называемой очередью (буфером) команд. Очередь команд
выполняет по существу функции регистра команды процессора. Длина
очереди составляет 6 байт. Очередь команд работает по принципу
FIFO ("первым пришел, первым вышел"), который сохраняет на выходе
порядок поступления команд.
Шинный интерфейс инициирует выборку из памяти следующего
командного слова, когда в очереди оказываются два свободных
(пустых) байта.
В большинстве случаев очередь команд содержит минимум один
байт потока команд, и операционное устройство не ожидает выборки
команды. Конечно, очередь обеспечивает положительный эффект при
естественном порядке выполнения команд. Когда операционное уст-
ройство выполняет команду передачи управления, шинный интерфейс
сбрасывает очередь, выбирает команду по новому адресу, передает
ее в операционное устройство, а затем начинает заполнение очереди
из следующихячеек. Эти действия выполняются при условных и
безусловных переходах, вызовах подпрограмм, возвратах из подпрог-
рамм и при обработке прерываний. Шинный интерфейс приостанавлива-
ет выборку команд, когда операционное устройство запрашивает
операцию считывания или записи в память или порт ввода-вывода.
В состав шинного интерфейса входят несколько регистров и
сумматор, которые формируют 20-разрядный физический адрес памяти
из двух 16-разрядных логических адресов: сегмента (базы) и смеще-
ния.
При готовности операционного устройства выполнять команду
оно считывает из очереди байт, а затем выполняет предписанную ко-
мандой операцию. При многобайтных командах из очереди считываются
и другие байты команды. Когда операционное устройство готово счи-
тать командный байт, а очередь команд пуста, оно ожидает выборки
командного слова из памяти программ, которую производит шинный
интерфейс. Если команда требует обращения к памяти или порту вво-
да-вывода, операционное устройство запрашивает шинный интерфейс
на выполнение необходимого цикла шины. Когда шинный интерфейс не
занят выборкой команды, он удовлетворяет запрос немедленно;
в противном случае операционное устройство ожидает завершения те-
кущего цикла шины.
ПРОГРАММНАЯ МОДЕЛЬ ПРОЦЕССОРА 8086
Программная модель процессора - это функциональная модель,
используемая программистом при разработке программ в кодах ЭВМ
или на языке ассемблера. В такой модели игнорируются многие аппа-
ратные особенности в работе процессора.
В процессоре 8086 имеется несколько быстрых элементов памя-
ти, которые называются регистрами. Каждый из регистров имеет
уникальную природу и предоставляет определенные возможности,
которые другими регистрами или ячейками памяти не поддерживаются.
- 3 -
Регистры разбиваются на четыре категории: регистры общего
назначения, регистр флагов, указатель команд и сегментные регист-
ры. Все регистры 16-разрядные.
Формат регистров общего назначения:
15 0
┌───────────────────────┬───────────────────────┐
AX │ AH │ AL │
└───────────────────────┴───────────────────────┘
┌───────────────────────┬───────────────────────┐
BX │ BH │ BL │
└───────────────────────┴───────────────────────┘
┌───────────────────────┬───────────────────────┐
CX │ CH │ CL │
└───────────────────────┴───────────────────────┘
┌───────────────────────┬───────────────────────┐
DX │ DH │ DL │
└───────────────────────┴───────────────────────┘
┌───────────────────────────────────────────────┐
SI │ │
└───────────────────────────────────────────────┘
┌───────────────────────────────────────────────┐
DI │ │
└───────────────────────────────────────────────┘
┌───────────────────────────────────────────────┐
BP │ │
└───────────────────────────────────────────────┘
┌───────────────────────────────────────────────┐
SP │ │
└───────────────────────────────────────────────┘
Формат регистра флагов:
15 0
┌──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┐
FLAGS │**│**│**│**│OF│DF│IF│TF│SF│ZF│**│AF│**│PF│**│CF│
└──┴──┴──┴──┴──┴──┴──┴──┴──┴──┴──┴──┴──┴──┴──┴──┘
Указатель команд:
15 0
┌───────────────────────────────────────────────┐
IP │ │
└───────────────────────────────────────────────┘
.
- 4 -
Формат сегментных регистров:
15 0
┌───────────────────────────────────────────────┐
CS │ │
└───────────────────────────────────────────────┘
┌───────────────────────────────────────────────┐
DS │ │
└───────────────────────────────────────────────┘
┌───────────────────────────────────────────────┐
ES │ │
└───────────────────────────────────────────────┘
┌───────────────────────────────────────────────┐
SS │ │
└───────────────────────────────────────────────┘
РЕГИСТР ФЛАГОВ
Этот 16-разрядный регистр содержит всю необходимую информа-
цию о состоянии процессора 8086 и результатах выполнения послед-
ней команды.
15 11 10 9 8 7 6 4 2 0
┌──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┐
FLAGS │**│**│**│**│OF│DF│IF│TF│SF│ZF│**│AF│**│PF│**│CF│
└──┴──┴──┴──┴──┴──┴──┴──┴──┴──┴──┴──┴──┴──┴──┴──┘
Битовые флаги:
OF - флаг переполнения;
DF - флаг направления;
IF - флаг прерывания;
TF - флаг трассировки;
SF - флаг знака;
ZF - флаг нуля;
AF - флаг дополнительного переноса;
PF - флаг четности;
CF - флаг переноса;
** - бит не используется, состояние не определено.
Флаг переполнения OF сигнализирует о потере старшего бита
результата сложения или вычитания. Имеется специальная команда
прерывания при переполнении, которая генерирует программное пре-
рывание.
Флаг направления DF определяет порядок сканирования цепочек
байт или слов в соответствующих командах: от меньших адресов к
большим (DF = 0) или наоборот (DF = 1).
- 5 -
Флаг прерывания IF определяет реакцию процессора на запросы
внешних прерываний по входу INT. Если IF = 0, запросы прерываний
игнорируются (говорят также, что прерывания запрещены или замас-
кированы), а если IF = 1, процессор распознает запросы на преры-
вания и реагирует на них соответствующим образом. Состояние
флага IF не влияет на восприятие внешних немаскируемых прерываний
по входу NMI, а также внутренних (программных) прерываний.
Установка в состояние 1 флага трассировки TF переводит
процессор в одношаговый (покомандный) режим работы, который при-
меняется при отладке программ. В этом режиме процессор автомати-
чески генерирует внутреннее прерывание после выполнения каждой
команды с переходом к соответствующей подпрограмме обработки,
которая может, например, демонстрировать содержимое регистров
процессора на зкране дисплея.
Флаг знака SF повторяет значение старшего бита результата,
который при использовании дополнительного кода соответствует зна-
ку числа.
Флаг нуля ZF сигнализирует о получении нулевого результата
операции.
Флаг вспомогательного переноса AF фиксирует перенос (заем)
из младшей тетрады в старшую 8- или 16-битного результата.
Он необходим только для команд десятичной арифметики.
Флаг четности (паритета) PF фиксирует наличие четного числа
единиц в младших 8 разрядах результата операции. Этот флаг пред-
назначен для контроля правильности передачи данных.
Флаг CF фиксирует значение переноса (заема), возникающего
при сложении или вычитании байт или слов, а также значение выдви-
гаемого бита при сдвиге операнда.
Регистр флагов не считывается и не модифицируется непосред-
ственно. Вместо этого в системе команд микропроцессора предусмот-
рены специальные команды, с помощью которых программист может
задать необходимое ему состояние любого из флагов (кроме TF).
Содержимое регистра флагов используется микропроцессором при
выполнении команд условного перехода, циклических сдвигов, опера-
ций с цепочками байт или слов.
РЕГИСТРЫ ОБЩЕГО НАЗНАЧЕНИЯ
Восемь регистров общего назначения процессора 8086 (каждый
разрядностью 16 бит) используются в операциях большинства инст-
рукций в качестве источника или приемника при перемещении данных
и вычислениях, указателей на ячейки памяти и счетчиков. Каждый
регистр общего назначения может использоваться для хранения
16-битового значения, в арифметических и логических операциях,
может выполняться обмен между регистром и памятью (запись из ре-
гистра в память и наоборот).
- 6 -
Кроме этих общих свойств, каждый регистр общего назначения
имеет свои особенности. Поэтому рассмотрим далее каждый из них
отдельно.
Регистр AX называют также накопителем (аккумулятором). Этот
регистр всегда используется в операциях умножения или деления и
является также одним из тех регистров, который можно использовать
для наиболее эффективных операций (арифметических, логических или
операций перемещения данных).
Младшие 8 битов регистра AX называются также регистром AL, а
старшие 8 битов - регистром AH. Это может оказаться удобным при
работе с данными размером в байт. Таким образом, регистр AX можно
использовать, как два отдельных регистра.
Регистр BX может использоваться для ссылки на ячейку памяти
(указатель), т.е. 16-битовое значение, записанное в BX, может
использоваться в качестве части адреса ячейки памяти, к которой
производится обращение. По умолчанию, когда BX используется в
качестве указателя на ячейку памяти, он ссылается на нее относи-
тельно сегментного регистра DS.
Как и регистры AX, CX и DX, регистр BX может интерпретиро-
ваться, как два восьмибитовых регистра - BH и BL.
Специализация регистра CX - использование в качестве счетчи-
ка при выполнении циклов.
Уменьшение значения счетчика и цикл - это часто используемый
элемент программы, поэтому в процессоре 8086 используется специ-
альная команда для того, чтобы циклы выполнялись быстрее и были
более компактными. Эта команда называется LOOP. Инструкция LOOP
вычитает 1 из CX и выполняет переход, если содержимое регистра CX
не равно 0.
Регистр CX можно интерпретировать, как два 8-разрядных
регистра - CH и CL.
Регистр DX - это единственный регистр, которые может исполь-
зоваться в качестве указателя адреса ввода-вывода в командах
IN и OUT. Фактически, кроме использования регистра DX нет другого
способа адресоваться к портам ввода-вывода с 256 по 65535.
Другие уникальные качества регистра DX относятся к операциям
деления и умножения. Когда вы делите 32-битовое делимое на
16-битовый делитель, старшие 16 битов делимого должны быть поме-
щены в регистр DX (младшие 16 битов делимого должны быть помещены
в регистр AX). После выполнения деления остаток также сохраняется
в регистре DX (частное от деления будет записано в AX). Аналогич-
но, когда вы перемножаете два 16-битовых сомножителя, старшие 16
битов произведения сохраняются в DX (младшие 16 битов записывают-
ся в регистр AX).
Регистр DX можно интерпретировать, как два 8-разрядных
- 7 -
регистра - DH и DL.
Как и регистр BX, регистр SI может использоваться, как ука-
затель на ячейку памяти. Особенно полезно использовать регистр SI
для ссылки на память в строковых командах процессора 8086,
которые не только изменяют содержимое по адресу памяти, на кото-
рый указывает SI, но к SI также добавляется или вычитается 1. Это
может оказаться очень эффективным при организации доступа к
последовательным ячейкам памяти (например, к строке текста).
Кроме того, можно сделать так, что строковые команды будут
автоматически определенное число раз повторять свои действия, так
что отдельная команда может выполнить сотни, а иногда и тысячи
действий.
Регистр DI очень похож на регистр SI в том плане, что его
можно использовать в качестве указателя ячейки памяти. При
использовании его в строковых командах регистр DI несколько отли-
чается от регистра SI. В то время как SI всегда используется в
строковых командах, как указатель на исходную ячейку памяти
(источник), DI всегда служит указателем на целевую ячейку памяти
(приемник). Кроме того, в строковых командах регистр SI обычно
адресуется к памяти относительно сегментного регистра DS, в то
время как DI всегда адресуется к памяти относительно сегментного
регистра ES. Когда SI и DI используются в качестве указателей на
ячейки памяти в других командах (не строковых), то они всегда
адресуются к памяти относительно регистра DS.
Как и регистры BX, SI и DI, регистр BP также может использо-
ваться в качестве указателя на ячейку памяти, но здесь есть неко-
торые отличия. Регистры BX, SI и DI обычно ссылаются на память
относительно сегментного регистра DS (или, в случае использования
в строковых командах регистра DI, относительно сегментного регис-
тра ES), а регистр BP адресуется к памяти относительно регистра
SS (сегментный регистр стека). Регистр BP создан для обеспечения
работы с параметрами процедур, локальными переменными и других
случаев, когда требуется адресация к памяти с использованием
стека.
Регистр SP называется также указателем стека. Это "наименее
общий" из регистров общего назначения, поскольку он практически
всегда используется для специальной цели - обеспечения стека.
Стек - это область памяти, в которой можно сохранять значения и
из которой они могут затем извлекаться по дисциплине "послед-
ний-пришел-первый-ушел" (LIFO). То есть последнее сохраненное в
стеке значение будет первым значением, которое вы получите при
чтении из стека.
Регистр SP в каждый момент времени указывает на вершину сте-
ка. Вершина стека - это то место, в котором в стеке сохраняется
следующее помещенное туда значение. Действие, состоящее в занесе-
- 8 -
нии значений в стек, называют также "заталкиванием" (pushing) в
стек (для этого используется команда PUSH). Аналогично, дейст-
вие, состоящее в извлечении (выборке) значений из стека, называют
также "выталкиванием" (popping) из стека (для этого используется
команда POP).
Хотя процессор 8086 и позволяет записывать значения в SP или
складывать и вычитать хранящиеся в регистре SP значения (как это
можно делать с обычными регистрами общего назначения), вам не
следует к этому прибегать, если вы в точности не знаете, что де-
лаете. Если вы изменяете SP, то изменяется расположение вершины
стека, что быстро может привести к неприятностям, так как занесе-
ние данных в стек и извлечение их из него не является единствен-
ным способом использования стека. Стек используется всякий раз,
когда вы вызываете или возвращаетесь из подпрограммы (процедуры
или функции). Кроме того, стек используют некоторые системные
программы (такие, как драйвер клавиатуры или системный таймер),
когда они прерывают процессор 8086, чтобы выполнить свои функции.
Все это означает, что стек может в любой момент потребоваться.
Если вы измените SP, то правильное значение стека может оказаться
недоступным, когда он потребуется системным программам. Можно
свободно выполнять операции занесения в стек и извлечения из
него, вызовы и возвраты управления, но не изменяйте значения
регистра SP непосредственно. Любой из других семи регистров обще-
го назначения можно спокойно изменять в любой момент.
УКАЗАТЕЛЬ КОМАНД
Указатель команд (регистр IP) всегда содержит смещение в
памяти, по которому хранится следующая выполняемая команда. Когда
выполняется одна команда, указатель команд перемещается таким
образом, чтобы указывать на адрес памяти, по которому хранится
следующая команда. Обычно следующей выполняемой командой является
команда, хранимая по следующему адресу памяти, но некоторые
команды, такие, как вызовы или переходы, могут привести к тому,
что в указатель команд будет загружено новое значение. Таким
образом, будет выполнен переход на другой участок программы.
Значение счетчика команд нельзя прочитать или записать
непосредственно. Загрузить в указатель команд новое значение
может только специальная команда перехода.
Указатель команд сам по себе не определяет адрес, по которо-
му находится следующая выполняемая команда. Картину здесь опять
усложняет сегментная организация памяти процессора 8086. Для
извлечения команды предусмотрен регистр CS, где хранится базовый
адрес, при этом указатель команд задает смещение относительно
этого базового адреса.
- 9 -
СЕГМЕНТНЫЕ РЕГИСТРЫ
Теперь мы подошли к наиболее необычному аспекту процессора
8086 - сегментации памяти. Основной предпосылкой сегментации яв-
ляется следующее: процессор 8086 может адресоваться к 1 мегабайту
памяти. Для адресации ко всем ячейкам адресного пространства в 1
мегабайт необходимы 20-разрядные сегментные регистры. Однако про-
цессор 8086 использует только 16-разрядные указатели на ячейки
памяти. Как же тогда согласовать 16-разрядные указатели процес-
сора 8086 и 20-разрядные адреса?
Ответ состоит в том, что процессор 8086 использует двухсту-
пенчатую схему адресации. Да, используются 16-разрядные указате-
ли, но эта форма представляет собой только часть полной схемы
адресации. Каждый 16-разрядный указатель памяти или смещение
комбинируется с содержимым 16-разрядного сегментного регистра для
формирования 20-разрядного адреса памяти.
Сегменты и смещения комбинируются следующим образом: значе-
ние сегмента сдвигается влево на 4 (то есть умножается на 16), а
затем складывается со смещением. Фактически, для доступа к памяти
процессор всегда использует пару "сегмент:смещение". Все команды
и режимы адресации процессора 8086 по умолчанию работают относи-
тельно того или иного сегментного регистра, хотя в некоторых
командах можно явно указать, что нужно использовать желаемый
сегментный регистр.
Вам редко потребуется загружать значение непосредственно в
сегментный регистр. Вместо этого вы будете загружать в сегментные
регистры имена сегментов, которые в ходе ассемблирования, компо-
новки и выполнения превращаются в числа. Это необходимо, посколь-
ку нет способа сказать заранее, где в памяти будет находиться
данный сегмент: это зависит от версии DOS, числа и размера рези-
дентных в памяти программ, а также потребности в памяти остальной
части программы. Использование имен сегментов позволяет ассембле-
ру и операционной системе DOS выполнять подобные вычисления.
Использование сегментов процессора 8086 приводит к некоторым
интересным моментам. Один из них состоит в том, что только блок
памяти размером в 64К в любой момент может адресоваться через
сегментный регистр, так как 64К - это максимальный объем памяти,
к которой можно адресоваться с помощью 16-битового смещения. Это
может оказаться неприятным при работе с большим (более 64К) объ-
емом памяти, так как и значение сегментного регистра, и смещение,
придется часто изменять.
Адресация к большим блокам памяти в процессоре 8086 может
представлять еще большую трудность, поскольку, в отличие от
регистров общего назначения, сегментные регистры не могут исполь-
зоваться в качестве источников или приемников в арифметических и
логических команд. Фактически, единственная операция, которую
можно выполнять с сегментными регистрами, состоит в копировании
значений между сегментными регистрами и другими общими регистрами
- 10 -
или памятью.
Вторая особенность использования сегментов состоит в том,
что каждая ячейка памяти адресуется через многие возможные соче-
тания "сегмент:смещение". Например, адрес памяти 100h адресуется
с помощью следующих значений "сегмент:смещение": 0:100h, 1:F0h,
2:E0h и т.д., так как при вычислении всех этих пар "сегмент:сме-
щение" получается значение адреса 100h.
Аналогично регистрам общего назначения каждый сегментный
регистр играет свою, конкретную роль. Регистр CS указывает на код
программы, DS указывает на данные, SS - на стек. Сегментный
регистр ES - это дополнительный сегмент, который может использо-
ваться так, как это необходимо. Рассмотрим сегментные регистры
более подробно.
Регистр CS указывает на начало блока памяти объемом 64К, или
сегмент кода, в котором находится следующая выполняемая команда.
Следующая команда, которую нужно выполнить, находится по смеще-
нию, определяемому в сегменте кода регистром IP, то есть на нее
указывает адрес (в форме "сегмент:смещение") CS:IP. Процессор
8086 никогда не может извлечь команду из сегмента, отличного от
того, который определяется регистром CS.
Регистр CS можно изменять с помощью многих команд, включая
отдельные команды перехода, вызовы и возвраты управления. Ни при
каких обстоятельствах регистр CS нельзя загрузить непосредствен-
но. Никакие другие режимы адресации или указатели памяти, отлич-
ные от IP, не могут нормально работать относительно регистра CS.
Регистр DS указывает на начало сегмента данных, которые
представляет собой блок памяти объемом 64К, в котором находится
большинство размещенных в памяти операндов. Обычно для ссылки на
адреса памяти используются смещения, предполагающие использование
регистров BX, SI или DI. В основном сегмент данных представляет
собой то, о чем говорит его название: как правило это сегмент, в
котором находится текущий набор данных.
Регистр ES указывает на начало блока памяти объемом 64К,
который называется дополнительным сегментом. Как и подразумевает
его название, дополнительный сегмент не служит для какой-то
конкретной цели, но доступен тогда, когда в нем возникает необхо-
димость. Иногда сегмент ES используется для выделения дополни-
тельного блока памяти объемом 64К для данных. Однако доступ к
памяти в дополнительном сегменте менее эффективен, чем доступ к
памяти в сегменте данных.
Особенно полезен дополнительный сегмент, когда используются
строковые команды. Все строковые команды, которые выполняют
запись в память, используют в качестве адреса, по которому нужно
выполнить запись, пару регистров ES:DI. Это означает, что регистр
- 11 -
ES особенно полезен при использовании его в качестве целевого
сегмента при копировании блоков, сравнении строк, просмотре
памяти и очистке блоков памяти.
ПЕРВЫЙ СЕМЕСТР
ЛЕКЦИЯ N 18-19
РАБОТА МИКРОПРОЦЕССОРА 8086
С ПАМЯТЬЮ И РЕГИСТРАМИ УСТРОЙСТВ ВВОДА-ВЫВОДА
ОРГАНИЗАЦИЯ ПАМЯТИ
Микропроцессор 8086 обеспечивает адресацию памяти емкостью
1 Мбайт. Адресное пространство памяти представляет собой одномер-
ный массив байт, каждый из которых имеет 20-битный физический
адрес.
Минимальной адресуемой единицей памяти является байт. Любые
два смежных байта в памяти образуют 16-битное слово. 16-битовое
слово всегда заносится в память так, что старший байт находится в
ячейке с большим номером. Адресом слова считается адрес его млад-
шего байта.
Четыре смежных байта памяти образуют 32-битное слово (двой-
ное слово), именуемое указателем и представляющее собой полный
адрес памяти "сегмент:смещение". Старшее слово при этом задает
базовый адрес (начало сегмента), а младшее - смещение. Такие ука-
затели применяются для адресации данных и команд, находящихся вне
текущих сегментов.
Команды, байты и слова данных можно свободно размещать по
любому адресу. Однако в некоторых случаях целесообразно размещать
слова в памяти по четным адресам, так как процессор может переда-
вать такие слова за один цикл шины (слова с нечетными адресами
передаются за два цикла шины).
Слово с четным адресом называется выравненным на границе
слова. Особенно важно иметь выровненные слова для операций со
стеком, так как в них участвуют только слова. Следовательно,
указатель стека SP всегда необходимо инициализировать на четный
адрес. Отметим, что выравнивание команд незначительно увеличивает
производительность процессора, так как устройство шинного интер-
фейса выбирает их в очередь команд с опережением.
Сегментация
Программы используют пространство памяти в 1 Мбайт в виде
сегментов. Сегмент представляет собой логическую единицу памяти
размером 64 Кбайт. Он состоит из смежных ячеек памяти и является
независимой и отдельно адресуемой единицей памяти. Каждому сег-
менту программой назначается базовый (начальный) адрес, являю-
щийся адресом его первого байта в адресном пространстве памяти.
Все сегменты начинаются на 16-байтных границах памяти, называемых
границами параграфов.
Других ограничений на размещение сегментов в памяти нет.
Сегменты могут быть соседними (смежными), неперекрывающимися
(непересесекающимися), частично или полностью перекрывающимися.
- 2 -
Физическая ячейка памяти может принадлежать одному или нескольким
сегментам.
Зарезервированные области памяти
Две области адресного пространства памяти зарезервированы
для выполнения особых функций, связанных с обработкой прерываний
и системным сбросом. Этими областями являются первые 128 байт
(физические адреса 00000-
адреса FFFF0-FFFFF). Данные области использовать для других целей
нельзя.
ВВОД-ВЫВОД
Процессор 8086 имеет большое адресное пространство ввода-
вывода, изолированное от пространства памяти, и специальные
команды, которые передают данные между регистрами процессора и
портами в пространстве ввода-вывода. Допускается также организа-
ция ввода-вывода, отображенного на память, чтобы использовать для
ввода-вывода всю систему команд и допустимые режимы адресации
памяти. Для быстрых передач блоков данных применяются контроллеры
прямого доступа к памяти и специализированные процессоры ввода-
вывода.
Адресное пространство ввода-вывода содержит до 64К 8-битовых
портов или до 32К 16-битовых портов. Команды IN (ввод) и OUT
(вывод) передают данные между аккумуляторами AL (байты) или AX
(слова) и адресуемыми портами.
Восемь ячеек F8-FF в пространстве ввода-вывода зарезервиро-
ваны для системных целей, и использовать их в прикладных програм-
мах не рекомендуется.
ОРГАНИЗАЦИЯ ПАМЯТИ ЭВМ ТИПА IBM PC
Память ЭВМ IBM PC организована следующим образом:
Первые 640 Кбайт адресного пространства с адресами от 00000 до
9FFFF выделены под оперативную память, а остальные 384 Кбайт c
адресами от A0000 до FFFFF используются для размещения ПЗУ и
отображаемого на память ввода-вывода.
В начале области ОЗУ размещена область векторов прерываний:
256 векторов, занимающих по 4 байта памяти. После них расположены
области данных и программ операционной системы. Оставшуюся часть
ОЗУ занимают программы пользователя.
Адреса в области ПЗУ и отображаемого ввода-вывода распреде-
лены следующим образом:
A0000-AFFFF - отображенная на память область ввода вывода
дисплея в графическом режиме;
B0000-B7FFF - отображенная на память область ввода вывода
дисплея в текстовом монохромном режиме;
- 3 -
B8000-BFFFF - отображенная на память область ввода вывода
дисплея в цветном текстовом режиме;
C0000-EFFFF - область ПЗУ жесткого диска, видеоадаптера и
других устройств;
F0000-FFFFF - область ПЗУ программ тестирования ЭВМ при
запуске, начальной загрузки операционной системы и базовой систе-
мы ввода-вывода.
В ЭВМ IBM PC используются порты с адресами 0000-03FF, причем
адреса 0000-00FF используются системной платой, а остальная
область выделена для устройств пользователей.
РЕЖИМЫ АДРЕСАЦИИ МИКРОПРОЦЕССОРА INTEL 8086
Команда разделяется на группы бит (поля), причем поле кода
операции (КОП) показывает, что должен делать процессор, а осталь-
ные поля, называемые операндами, идентифицируют требуемую команде
информацию. Операнд может содержать данное, часть адреса данного,
косвенный указатель данного или другую информацию, относящуюся к
обрабатываемым командой данным.
Общий формат команды:
┌────────────┬────────────┬────────────┬────────────┐
│Код операции│ Операнд │ . . . │ Операнд │
└────────────┴────────────┴────────────┴────────────┘
Команды могут содержать несколько операндов, но чем больше
операндов и чем они длиннее, тем больше места занимает команда в
памяти и тем больше времени для ее считывания требуется процессо-
ру. Чтобы сократить длину команды, в большинстве команд использу-
ются один или два операнда, причем в двухоперандной команде одним
из операндов является регистр.
Способ определения операнда называется режимом адресации.
Рассмотрим наиболее типичные режимы адресации микропроцессора
8086. Они разделяются на два класса - режимы адресации данных и
режимы адресации переходов.
РЕЖИМЫ АДРЕСАЦИИ ДАННЫХ
Различают следующие режимы адресации данных:
1) Непосредственный - данное длиной 8 или 16 бит является
частью команды.
Операнд:
┌──────────┐
│ Данное │
└──────────┘
- 4 -
2) Прямой - 16-битный эффективный адрес данного является частью
команды.
Операнд: Память:
┌──────────┐ ┌──────────┐
│ EA ├──────>│ Данное │
└──────────┘ └──────────┘
3) Регистровый - данное содержится в определяемом командой
регистре. 16-битный операнд может находиться в регистрах AX, BX,
CX, DX, SI, DI, SP или BP, а 8-битный - в регистрах AL, AH, BL,
BH, CL, CH, DL или DH.
Операнд: Регистр:
┌──────────┐ ┌──────────┐
│ Регистр ├──────>│ Данное │
└──────────┘ └──────────┘
4) Регистровый косвенный - эффективный адрес данного находится
в базовом регистре BX или одном из индексных регистров.
┌ ┐
│(BX)│
EA = │(SI)│
│(DI)│
└ ┘
Операнд: Регистр: Память:
┌──────────┐ ┌──────────┐ ┌──────────┐
│ Регистр ├──────>│ EA ├──────>│ Данное │
└──────────┘ └──────────┘ └──────────┘
5) Регистровый относительный - эффективный адрес равен сумме
8- или 16-битного смещения и содержимого базового или индексного
регистров.
┌ ┐
│(BX)│ ┌ ┐
EA = │(BP)│ + │ 8-битное смещение │
│(SI)│ │ 16-битное смещение │
│(DI)│ └ ┘
└ ┘
Операнд 1: Регистр: Операнд 2: Память:
┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐
│ Регистр ├──>│ Адрес │ + │ Смещение │ ══> │ Данное │
└──────────┘ └──────────┘ └──────────┘ └──────────┘
- 5 -
6) Базовый индексный - эффективный адрес равен сумме содержимо-
го базового и индексного регистров.
┌ ┐ ┌ ┐
EA = │(BX)│ + │(SI)│
│(BP)│ │(DI)│
└ ┘ └ ┘
Операнд: Регистр:
┌───────┬─────────┐ ┌──────────┐
│Базовый│Индексный├─────>│ Индекс ├───┐
│регистр│регистр │ └──────────┘ │ Память:
└───┬───┴─────────┘ ┌─┴─┐ EA ┌──────────┐
│ │ + ├──────>│ Данное │
│ Регистр: └─┬─┘ └──────────┘
│ ┌──────────┐ │
└───────────────────>│ Базовый ├───┘
│ адрес │
└──────────┘
7) Относительный базовый индексный - эффективный адрес равен
сумме 8- или 16-битного смещения и базово-индексного адреса.
┌ ┐ ┌ ┐ ┌ ┐
EA = │(BX)│ + │(SI)│ + │ 8-битное смещение │
│(BP)│ │(DI)│ │ 16-битное смещение │
└ ┘ └ ┘ └ ┘
Операнд 1: Операнд 2:
┌───────┬─────────┐ ┌──────────┐
│Базовый│Индексный│ │ Смещение ├──────┐
│регистр│регистр │ │ │ │
└───┬───┴────┬────┘ └──────────┘ │
│ │ Регистр: │ Память:
│ │ ┌──────────┐ ┌─┴─┐ EA ┌──────────┐
│ └───────>│ Индекс ├───>│ + ├──────>│ Данное │
│ └──────────┘ └─┬─┘ └──────────┘
│ Регистр: │
│ ┌──────────┐ │
└────────────────>│ Базовый ├──────┘
│ адрес │
└──────────┘
Допустим, что регистр BX содержит число 0158 в 16-ричном
коде, регистр DI - число 10A5, смещение равно 1B57, сегментный
регистр данных DS содержит число 2100.
Тогда, если в качестве сегментного регистра применяется DS,
- 6 -
различные режимы адресации дают следующие эффективные и физичес-
кие адреса:
1) Прямой:
Эффективный адрес EA = 1B57,
Физический адрес = 1B57 + 21000 = 22B57.
2) Регистровый косвенный (с участием регистра BX):
Эффективный адрес EA = 0158,
Физический адрес = 0158 + 21000 = 21158.
3) Регистровый относительный (с участием регистра BX):
Эффективный адрес EA = 0158 + 1B57 = 1CAF,
Физический адрес = 01CAF + 21000 = 22CAF.
4) Базовый индексный (с участием регистров BX и DI):
Эффективный адрес EA = 0158 + 10A5 = 11FD,
Физический адрес = 011FD + 21000 = 221FD.
5) Относительный базовый индексный (с участием регистров BX
и DI):
Эффективный адрес EA = 0158 + 10A5 + 1B57 = 2D54,
Физический адрес = 02D54 + 21000 = 23D54.
РЕЖИМЫ АДРЕСАЦИИ ПЕРЕХОДОВ
Различают следующие режимы адресации переходов:
1) Внутрисегментный прямой - эффективный адрес перехода равен
сумме 8- или 16-битного смещения и текущего содержимого IP. Когда
смещение имеет длину 8 бит, этот режим называется коротким пере-
ходом. Этот режим допустим в условных и безусловных переходах, но
в команде условного перехода смещение может иметь длину только
8 бит.
Операнд: IP IP
┌──────────┐ ┌──────────┐ EA ┌──────────┐
│ Смещение │ + │ │ ════> │ │
└──────────┘ └──────────┘ └──────────┘
2) Внутрисегментный косвенный - эффективный адрес перехода есть
содержимое регистра или ячейки памяти, которые указываются в
любом режиме (кроме непосредственного) адресации данных. Содержи-
мое IP заменяется эффективным адресом перехода. Данный режим
допустим только в командах безусловного перехода.
3) Межсегментный прямой - заменяет содержимое IP первым операн-
дом команды, а содержимое CS - вторым операндом. Назначение
данного режима адресации - обеспечить переход из одного сегмента
кода в другой.
.
- 7 -
Операнд 1: IP Операнд 2: CS
┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐
│ Смещение ├───>│ │ │ Сегмент ├───>│ │
└──────────┘ └──────────┘ └──────────┘ └──────────┘
4) Межсегментный косвенный - заменяет содержимое регистров IP
и CS содержимым двух смежных слов из памяти, которые определяются
в любом режиме адресации данных, кроме непосредственного и регис-
трового.
Межсегментный переход может быть только безусловным.
Допустим, что регистр BX содержит число 1256 в 16-ричном
коде, регистр SI -
число
Тогда при прямой адресации эффективный адрес перехода равен
20A1 + (DS)*0010.
При регистровой косвенной адресации (с участием регистра BX)
эффективный адрес перехода 1256 + 20A1 + (DS)*0010.
При базовой индексной адресации (с участием регистров BX и
SI) эффективный адрес перехода 1256 +
ФОРМАТЫ КОМАНД МИКРОПРОЦЕССОРА INTEL 8086
Рассмотрим типичные форматы команд микропроцессора 8086.
Длина команд варьируется от 1 до 6 байт. Длина смещений и
непосредственных данных может быть 8 или 16 бит в зависимости от
кода команды.
Один или два байта в начале кода команды занимают код опера-
ции и указание режима адресации.
После них могут находиться:
- ни одного дополнительного байта;
- двухбайтный эффективный адрес EA (только для прямой адреса-
ции);
- одно- или двухбайтное смещение;
- одно- или двухбайтный непосредственный операнд;
- одно- или двухбайтное смещение с последующим одно- или двух-
байтным непосредственным операндом;
- двухбайтное смещение и двухбайтный сегментный адрес (только
для прямой межсегментной адресации).
Применение одной из перечисленных возможностей определяется
кодом операции и режимом адресации. Если длина смещения или
непосредственного операнда составляет 2 байта, первым всегда сле-
дует младший байт.
Обычно код операции занимает первый байт команды, но в
некоторых командах в первом байте также указывается регистр,
а в некоторых других командах три бита кода операции находятся во
втором байте.
- 8 -
Далее используются следующие условные обозначения:
REG - регистр,
MOD - режим,
R/M - регистр или память,
DISP - смещение,
DATA - непосредственные данные,
LO - младший байт,
HI - старший байт.
Пример однобайтной команды с неявными операндами:
┌───────────┐
│ КОП │
└───────────┘
Пример однобайтной команды с регистровым режимом адресации:
┌─────────┬─────┐
│ КОП │ REG │
└─┴─┴─┴─┴─┴─┴─┴─┘
Операция регистр-регистр:
┌─────────┐┌───┬─────┬─────┐
│ КОП ││1 1│ REG │ R/M │
└─────────┘└─┴─┴─┴─┴─┴─┴─┴─┘
Операция регистр-память без смещения:
┌─────────┐┌───┬─────┬─────┐
│ КОП ││MOD│ REG │ R/M │
└─────────┘└─┴─┴─┴─┴─┴─┴─┴─┘
Операция регистр-память со смещением:
┌─────────┐┌───┬─────┬─────┐┌─────────┐┌─────────┐
│ КОП ││MOD│ REG │ R/M ││ DISP-LO ││ DISP-HI │
└─────────┘└─┴─┴─┴─┴─┴─┴─┴─┘└─────────┘└─────────┘
Непосредственный операнд в регистр:
┌─────────┐┌───┬─────┬─────┐┌─────────┐┌─────────┐
│ КОП ││MOD│ КОП │ R/M ││ DATA-LO ││ DATA-HI │
└─────────┘└─┴─┴─┴─┴─┴─┴─┴─┘└─────────┘└─────────┘
Непосредственный операнд в память с 16-битным смещением:
┌─────────┐┌───┬─────┬─────┐┌───────┐┌───────┐┌───────┐┌───────┐
│ КОП ││MOD│ КОП │ R/M ││DISP-LO││DISP-HI││DATA-LO││DATA-HI│
└─────────┘└─┴─┴─┴─┴─┴─┴─┴─┘└───────┘└───────┘└───────┘└───────┘
В большинстве кодов операций имеются следующие однобитные
индикаторы:
Бит W. Если команда может оперировать и байтом, и словом, то
в коде операции имеется бит W.
Бит D. Содержится в двухоперандных командах (за исключением
команд с непосредственным операндом и цепочечных команд). Одним
из операндов должен быть регистр, определяемый полем REG. В таких
командах бит D показывает, чем является регистр: операндом-источ-
ником (D=0) или операндом-получателем (D=1).
Бит S. 8-битное число в дополнительном коде можно расширить
- 9 -
до 16-битного в дополнительном коде, если сделать все биты стар-
шего байта равными старшему биту младшего байта. Такая операция
называется расширением знака. Бит S появляется вместе с битом W в
командах сложения, вычитания и сравнения с непосредственным опе-
рандом и расшифровывается следующим образом:
- 8-битная операция - S=0 и W=0;
- 16-битная операция с 16-битным непосредственным операндом -
S=0, а W=1;
- 16-битная операция с 8-битным непосредственным операндом,
который расширяется со знаком до 16 бит - S=1 и W=1.
При работе с небольшими числами последний вариант допускает
использование однобайтного непосредственного операнда.
Бит V. Применяется в командах сдвигов для определения числа
сдвигов.
Бит Z. Используется в команде REP.
Сегментный регистр определяется двумя битами, а любой другой
регистр - тремя.
Таблица адресов регистров:
┌────────┬───────────┐ ┌────────┬────────────┐
│ Адрес │ Регистры │ │ Адрес │ Сегментный │
│регистра├─────┬─────┤ │регистра│ регистр │
│ │ W=1 │ W=0 │ ├────────┼────────────┤
├────────┼─────┼─────┤ │ 00 │ ES │
│ 000 │ AX │ AL │ │ 01 │ CS │
│ 001 │ CX │ CL │ │ 10 │ SS │
│ 010 │ DX │ DL │ │ 11 │ DS │
│ 011 │ BX │ BL │ └────────┴────────────┘
│ 100 │ SP │ AH │
│ 101 │ BP │ CH │
│ 110 │ SI │ DH │
│ 111 │ DI │ BH │
└────────┴─────┴─────┘
Если на код операции и режим адресации отводится два байта,
то второй байт имеет одну из следующих форм:
┌───┬─────┬─────┐ ┌───┬─────┬─────┐
│MOD│ КОП │ R/M │ или │MOD│ REG │ R/M │
└─┴─┴─┴─┴─┴─┴─┴─┘ └─┴─┴─┴─┴─┴─┴─┴─┘
Первая из них предназначена для однооперандных команд или
для двухоперандных команд с неявным заданием одного из операндов.
Вторая форма характерна для двухоперандных команд, причем поле
REG определяет регистр, который в зависимости от значения бита D
является операндом-источником или операндом-получателем.
.
- 10 -
Операнд, указываемый полями MOD и R/M, определяется в соот-
ветствии со следующей таблицей:
┌──────────────────┬────────────────────────────────────────────┐
│ │ MOD │
│ ├─────────┬────────────┬─────────────┬───────┤
│ R/M │ │ │ │ 11 │
│ │ 00 │ 01 │ 10 ├───┬───┤
│ │ │ │ │W=0│W=1│
├──────────────────┼─────────┼────────────┼─────────────┼───┼───┤
│ │ │ │ │ │ │
│ 000 │(BX)+(SI)│(BX)+(SI)+D8│(BX)+(SI)+D16│ AL│ AX│
│Сегментный регистр│ DS │ DS │ DS │ │ │
│ │ │ │ │ │ │
│ 001 │(BX)+(DI)│(BX)+(DI)+D8│(BX)+(DI)+D16│ CL│ CX│
│Сегментный регистр│ DS │ DS │ DS │ │ │
│ │ │ │ │ │ │
│ 010 │(BP)+(SI)│(BP)+(SI)+D8│(BP)+(SI)+D16│ DL│ DX│
│Сегментный регистр│ SS │ SS │ SS │ │ │
│ │ │ │ │ │ │
│ 011 │(BP)+(DI)│(BP)+(DI)+D8│(BP)+(DI)+D16│ BL│ BX│
│Сегментный регистр│ SS │ SS │ SS │ │ │
│ │ │ │ │ │ │
│ 100 │ (SI) │ (SI)+D8 │ (SI)+D16 │ AH│ SP│
│Сегментный регистр│ DS │ DS │ DS │ │ │
│ │ │ │ │ │ │
│ 101 │ (DI) │ (DI)+D8 │ (DI)+D16 │ CH│ BP│
│Сегментный регистр│ DS │ DS │ DS │ │ │
│ │ │ │ │ │ │
│ 110 │ D16 │ (BP)+D8 │ (BP)+D16 │ DH│ SI│
│Сегментный регистр│ DS │ SS │ SS │ │ │
│ │ │ │ │ │ │
│ 111 │ (BX) │ (BX)+D8 │ (BX)+D16 │ BH│ DI│
│Сегментный регистр│ DS │ DS │ DS │ │ │
└──────────────────┴─────────┴────────────┴─────────────┴───┴───┘
D8 - восьмибитное смещение, D16 - шестнадцатибитное смещение.
Если MOD не равно 11, эффективный адрес вычисляется согласно
таблице. Отметим, что MOD = 00 означает отсутствие смещения, за
исключением случая R/M = 110, который обозначает прямую адреса-
цию. Комбинация MOD = 01 означает, что третий байт команды содер-
жит 8-битное смещение, которое до вычисления эффективного адреса
автоматически расширяется со знаком до 16 бит. Если MOD = 10, то
третий и четвертый байты команды содержат 16-битное смещение.
Наконец, в случае MOD = 11 операндом является регистр, адрес
которого определяется полем R/M.
В таблице также показаны сегментные регистры, используемые в
каждой из комбинаций полей MOD и R/M. Эффективный адрес операнда
в памяти определяется полями MOD и R/M, но 20-битный физический
- 11 -
адрес равен сумме эффективного адреса и содержимого сегментного
регистра, умноженного на 16. В режимах адресации с привлечением
регистра BP с эффективным адресом суммируется содержимое сегмент-
ного регистра SS, а в остальных режимах адресации участвует
регистр DS.
Чтобы изменить используемые в соответствии с таблицей сег-
ментные регистры, предусмотрена специальная однобайтная команда,
назывемая префиксом переопределения (замены) сегмента. Она имеет
следующий формат:
┌─────┬───┬─────┐
│0 0 1│REG│1 1 0│
└─┴─┴─┴─┴─┴─┴─┴─┘
Если команде предшествует префикс переопределения сегмента,
при обращении к данным в процессе ее выполнения участвует сег-
ментный регистр REG. Регистр DS можно заменить на CS, SS или ES,
а регистр SS при участии регистра BP - на DS, CS или ES.
Замену нельзя производить в следующих специальных случаях:
- при вычислении адреса следующей выполняемой команды в качестве
сегментного регистра всегда применяется CS;
- при участии в адресации регистра SP сегментным регистром всег-
да служит SS;
- в цепочечных командах в качестве сегментного регистра операн-
да-получателя всегда используется ES.
ВРЕМЯ ВЫПОЛНЕНИЯ КОМАНД
Затраты времени на выполнение одной команды можно опреде-
лить, умножая число тактов синхронизации, необходимых для выпол-
нения команды, на период синхронизации. Это время можно выразить
в виде суммы базового времени выполнения (которое зависит от
команды и режима адресации) и времени вычисления эффективного
адреса, если привлекается операнд из памяти. Базовое время
выполнения предполагает, что выполняемая команда уже выбрана и
находится в очереди команд. В противном случае требуется учесть
дополнительные такты синхронизации, необходимые для выборки ко-
манды.
Базовое время выполнения некоторых типичных команд микропро-
цессора 8086/8088:
.
- 12 -
─────────────────────────────────┬────────────────┬─────────
КОМАНДА │ ЧИСЛО │ ЧИСЛО
│ ТАКТОВ │ ПЕРЕДАЧ
─────────────────────────────────┼────────────────┼─────────
│ │
ADD или SUB │ │
(cложить или вычесть) │ │
регистр - регистр │ 3 │ 0
память - регистр │ 9 + EA │ 1
регистр - память │ 16 + EA │ 2
непосредственный - регистр │ 4 │ 0
непосредственный - память │ 17 + EA │ 2
│ │
MOV │ │
(передать) │ │
аккумулятор - память │ 10 │ 1
память - аккумулятор │ 10 │ 1
регистр - регистр │ 2 │ 0
память - регистр │ 8 + EA │ 1
регистр - память │ 9 + EA │ 1
непосредственный - регистр │ 4 │ 0
непосредственный - память │ 10 + EA │ 1
регистр - сегментный регистр │ 2 │ 0
память - сегментный регистр │ 8 + EA │ 1
сегментный регистр - регистр │ 2 │ 0
сегментный регистр - память │ 9 + EA │ 1
│ │
MUL │ │
(умножить без знака) │ │
множитель - 8 бит, регистр │ 70 - 77 │ 0
множитель - 16 бит, регистр │ 118 - 133 │ 0
множитель - 8 бит, память │ (76 - 83) + EA │ 1
множитель - 16 бит, память │(124 - 139) + EA│ 1
│ │
IMUL │ │
(умножить со знаком) │ │
множитель - 8 бит, регистр │ 80 - 98 │ 0
множитель - 16 бит, регистр │ 128 - 154 │ 0
множитель - 8 бит, память │ (86 - 104) + EA│ 1
множитель - 16 бит, память │(134 - 160) + EA│ 1
│ │
DIV │ │
(разделить без знака) │ │
делитель - 8 бит, регистр │ 80 - 90 │ 0
делитель - 16 бит, регистр │ 144 - 162 │ 0
делитель - 8 бит, память │ (86 - 96) + EA │ 1
делитель - 16 бит, память │(150 - 168) + EA│ 1
│ │
- 13 -
IDIV │ │
(разделить со знаком) │ │
делитель - 8 бит, регистр │ 101 - 112 │ 0
делитель - 16 бит, регистр │ 165 - 184 │ 0
делитель - 8 бит, память │(107 - 118) + EA│ 1
делитель - 16 бит, память │(171 - 190) + EA│ 1
│ │
Команды сдвигов и │ │
циклических сдвигов │ │
регистр, на 1 бит │ 2 │ 0
регистр, на переменное число бит │ 2 + 4/бит │ 0
память, на 1 бит │ 15 + EA │ 2
память, на переменное число бит │ 20 + EA + 4/бит│ 2
│ │
JMP │ │
(безусловный переход) │ │
короткий │ 15 │ 0
внутрисегментный прямой │ 15 │ 0
межсегментный прямой │ 15 │ 0
внутрисегментный косвенный в ре- │ │
гистровом режиме │ 11 │ 0
внутрисегментный косвенный │ 18 + EA │ 1
межсегментный косвенный │ 24 + EA │ 2
│ │
Команды условного перехода │ │
JCXZ │6 (нет перехода)│ 0
│ 18 (переход) │
Другие команды условного перехода│4 (нет перехода)│ 0
│ 16 (переход) │
─────────────────────────────────┴────────────────┴─────────
Третий столбец таблицы показывает число обращений к памяти,
необходимых для выполнения команд. Чтобы определить время выпол-
нения команды, в которой осуществляется обращение к полному слову
памяти, следует учесть выравнивание операнда. Если слово имеет
нечетный адрес, микропроцессор 8086 считывает его за два цикла
шины, длящихся по 4 такта синхронизации. В микропроцессоре 8088
на передачу каждого слова необходимо прибавить 4 такта синхрони-
зации, так как в цикле шины он может передать только один байт
.
- 14 -
Время вычисления эффективного адреса зависит от режима адре-
сации:
──────────────────────────────────┬────────────
ЭФФЕКТИВНЫЙ АДРЕС │ЧИСЛО ТАКТОВ
──────────────────────────────────┼────────────
│
Прямой │ 6
│
Регистровый косвенный │ 5
│
Регистровый относительный │ 9
│
Базовый индексный │
(BP) + (DI) или (BX) + (SI) │ 7
(BP) + (SI) или (BX) + (DI) │ 8
│
Относительный базовый индексный │
(BP)+(DI)+DISP или (BX)+(SI)+DISP │ 11
(BP)+(SI)+DISP или (BX)+(DI)+DISP │ 12
──────────────────────────────────┴────────────
Отметим, что некоторые команды имеют несколько отличающихся
базовых времен выполнения в зависимости от режимов адресации.
Быстрее всего выполняются операции регистр-регистр. Операция па-
мять-регистр выполняется быстрее, чем операция регистр-память.
Базовое время выполнения команд умножения, деления и сдвига
зависит также от данных.
ПЕРВЫЙ СЕМЕСТР
ЛЕКЦИЯ N 20-21
2ЯЗЫК АССЕМБЛЕРА МИКРОПРОЦЕССОРА 8086
════════════════════════════════════════
Язык ассемблера представляет собой машинный язык в символи-
ческой форме, которая более понятна и удобна человеку.
Язык ассемблера микропроцессора Intel 8086 является довольно
сложным, что в первую очередь объясняется сегментной организацией
памяти и одновременной адресацией четырех сегментов. В языке
имеется более 100 базовых символических команд, в соответствии с
которыми ассемблер генерирует более 3800 машинных команд. Кроме
того, в распоряжении программиста имеется более 20 директив,
предназначенных для распределения памяти, инициализации перемен-
ных, условного ассемблирования и т.д.
Исходная программа на языке ассемблера представляет собой
последовательность операторов. Операторы обычно занимают одну
строку. Ассемблер воспринимает операторы в свободном формате,
т.е. элементам операторов не назначены фиксированные столбцы и
между ними может быть любое число пробелов там, где это необходи-
мо.
Операторы в исходной программе классифицируются как команд-
ные операторы, операторы распределения данных и директивы ассемб-
лера.
Командные операторы определяют генерируемые ассемблером ма-
шинные команды; они содержат мнемонику и, при необходимости, один
или два операнда. Каждый командный оператор порождает одну машин-
ную команду, формат которой зависит от способа задания операндов.
Операторы распределения данных резервируют ячейки памяти для
данных программы.
Директивы ассемблера содержат специальные указания для
ассемблирующей программы и сами по себе не порождают никаких
машинных кодов.
Формат командных операторов
Командные операторы записываются в следующем формате:
{Метка:} {Префикс} Мнемоника {Операнд1}{,Операнд2} {;Комментарий}
где фигурные скобки обозначают необязательные поля.
Рассмотрим назначение отдельных полей данного формата:
1) Метка представляет собой определяемое пользователем имя,
заканчивающееся двоеточием. Значением метки является текущее
значение счетчика ячеек (адресов) в текущем сегменте кода, т.е.
адрес отмеченной команды. Метки как операнды используются только
в командах передачи управления, и при этом двоеточие в конце
ссылки на метку не ставится.
- 2 -
2) Префикс заставляет ассемблер сформировать один из префиксных
байт - блокировки LOCK или повторения REP, который непосредствен-
но предшествует команде.
3) Мнемоника кода операции представляет собой заранее опреде-
ленное и неизменяемое имя, которое идентифицирует тип генерируе-
мой машинной команды.
4) Операнды задают адреса данных или сами данные, необходимые в
данной команде.
5) Комментарий предназначен только для документирования прог-
раммы. Он всегда начинается с точки с запятой.
Формат директив ассемблера
и операторов распределения данных
Директивы ассемблера и операторы распределения данных имеют
несколько иной формат:
{Имя} Директива {Операнды} {;Комментарий}
Рассмотрим назначение отдельных полей данного формата:
1) Имя директивы, в отличие от метки, никогда не заканчивается
двоеточием. Некоторые директивы требуют обязательного наличия
метки.
2) Директива является одним из ключевых неизменяемых слов
ассемблера и определяет его действия в процессе ассемблирования.
Директивы используются программистом для распределения памяти,
обеспечения связи между программными модулями и работы с символи-
ческими именами.
3) Операнды конкретизируют действия, выполняемые по данной
директиве.
4) Поле комментария аналогично такому же полю в командных опе-
раторах.
2ЭЛЕМЕНТЫ ОПЕРАТОРОВ
Дадим определения основных терминов, которые будут использо-
ваны в дальнейшем.
Ключевые (зарезервированные) слова представляют собой имена,
имеющие для ассемблера строго определенный смысл. Их нельзя
использовать в качестве идентификаторов.
Идентификатор как общий термин для меток и имен переменных -
это определяемая программистом последовательность символов. Пер-
вым символом в последовательности должна быть буква или один из
символов @, подчеркивание или знак вопроса. В качестве последую-
щих символов можно также использовать цифры. Максимальная длина
идентификатора 31 символ.
Ассемблер процессора 8086 является жестко типизированным
языком. Это означает, что операнды команд (регистры, переменные,
- 3 -
метки, константы) имеют связанный с ними атрибут типа, который
сообщает ассемблеру некоторую информацию об операнде. Атрибут
типа обычно подразумевается по умолчанию, но при необходимости
может быть задан явно.
Регистры
8-разрядным регистрам AL, AH, BL, BH, CL, CH, DL, DH при-
писан тип BYTE, а 16-разрядным регистрам AX, BX, CX, DX, BP, SP,
SI, DI и сегментным регистрам CS, DS, SS, ES приписан тип WORD.
Разряды регистра флажков представляют собой однобитные ре-
гисты, для установки и сброса каждого из которых используются
отдельные машинные команды.
Переменные
При программировании может возникнуть необходимость много-
кратного обращения к данным. Вместо того, чтобы оперировать
громоздкими численными значениями адресов, удобно определять и
применять символические имена, соответствующие адресам указанных
элементов.
Переменная - это единица программных данных, имеющая симво-
лическое имя.
Большинство ассемблерных программ начинается с определения
данных, которыми они будут оперировать. Распределение ячеек памя-
ти и присвоение им идентификаторов осуществляется с помощью
директив DB (Define Byte - определить байт), DW (Define Word -
определить слово), DD (Define Doubleword - определить двойное
слово), DQ (Define Quadword - определить 4 слова) или DT (Define
Tenbyte - определить 10 байтов).
Операторы распределения данных имеют следующий формат:
Имя DB нач.значение, {нач.значение}, ...
Имя DW нач.значение, {нач.значение}, ...
Имя DD нач.значение, {нач.значение}, ...
Имя DQ нач.значение, {нач.значение}, ...
Имя DT нач.значение, {нач.значение}, ...
Таким образом, каждая директива может инициировать одну или
несколько переменных соответствующего типа.
Для задания начальных значений могут использоваться числовые
константы и символьные цепочки. Если не нужно задавать начальное
значение переменной, то вместо константы ставится вопросительный
знак.
Например, оператор
alpha DW 0Ah
резервирует слово памяти, присваивает ему идентификатор alpha и
заносит в него код 000A;
string DB 'Привет'
резервирует 6 байт памяти и заносит в них строку символов и
- 4 -
присваивает этой строке идентификатор string.
Чтобы точно определить тип переменной, на которую произво-
дится ссылка, ассемблер использует операторы BYTE PTR, WORD PTR и
DWORD PTR (указатель на байт, слово и двойное слово соответствен-
но).
Для инициализации массивов применяется конструкция DUP,
которая в общем случае имеет вид:
n DUP (нач. значение, {нач. значение}, ...)
где параметр n задает число повторений элементов, находящихся в
круглых скобках.
Например, оператор
Addr DD 20 DUP (?)
резервирует место для 20 полных адресов и присваивает этому
массиву идентификатор Addr.
Метки
Метка представляет собой символическое имя для адреса ячейки
памяти и предназначена для использования в качестве операнда в
командах управления.
Числовые константы
Константа - это численное значение, вычисляемое во время
ассемблирования по заданному выражению.
Численные константы допускается представлять в системах
счисления с основаниями 2, 8, 10 и 16. За младшей цифрой должен
находиться однобуквенный дескриптор системы счисления: B - двоич-
ная, O или Q - восьмеричная, D (необязательно) - десятичная,
H-шестнадцатиричная. Шестнадцатиричная константа должна быть до-
полнена слева незначащим нулем.
Символьные константы
Символьная константа - это любой символ в коде ASCII.
Символьная строка может содержать до 255 символов и должна быть
заключена в одиночные кавычки.
2СЕГМЕНТЫ И ПРОЦЕДУРЫ
Программы, написанные на языке ассемблера процессора 8086,
могут быть разделены на один или несколько сегментов. Каждый
логический сегмент имеет уникальное имя и однозначно отображается
в сегментах памяти при загрузке программы для ее выполнения. Для
определения начальной и конечной ячеек логического сегмента в
макроассемблере предусмотрены директивы SEGMENT (начало сегмента)
и ENDS (конец сегмента).
Обычно часть программы, содержащая коды машинных команд,
- 5 -
объединяется в кодовый сегмент. Переменные, константы, таблицы и
другие данные объединяются в сегмент данных. Для хранения проме-
жуточных данных и при вызове подпрограмм используется сегмент
стека. Иногда для хранения данных может использоваться четвертый,
дополнительный сегмент.
Директива ASSUME указывает ассемблеру, к какому сегментному
регистру относится тот или иной логический сегмент. Если вся
программа размещается в одном сегменте памяти, то эта директива
указывает, что все сегментные регистры адресуют один и тот же
сегмент.
В зависимости от используемой модели памяти в программе
могут использоваться один или несколько сегментов кода и один или
несколько сегментов данных. Стековый сегмент как правило один.
2СТЕМА КОМАНД МИКРОПРОЦЕССОРА 8086
═════════════════════════════════════
Систему команд процессора 8086 образуют 113 базовых команд,
многие из которых допускают использование разнообразных режимов
адресации.
По функциональному назначению выделяют спедующие группы ко-
манд:
- команды передачи данных;
- команды арифметических операций;
- команды логических операций и сдвигов;
- команды передачи управления;
- цепочечные команды;
- команды управления микропроцессором.
_ 2КОМАНДЫ ПЕРЕДАЧИ ДАННЫХ
Команды передачи данных разделяют на 4 подгруппы:
- общие команды передачи данных;
- стековые команды;
- команды ввода-вывода;
- команды передачи цепочек байт или слов.
Команды передачи данных не модифицируют состояния флажков.
Исключение составляют команды POPF и SAHF, прямо воздействующие
на регистр флажков.
Далее будут использоваться следующие обозначения:
dst - получатель,
src - источник,
mem - адрес памяти (смещение), заданный любым методом адресации,
reg - регистр общего назначения,
sreg - сегментный регистр,
aс - регистр-аккумулятор (AL или AX),
data - непосредственные данные.
- 6 -
2ОБЩИЕ КОМАНДЫ ПЕРЕДАЧИ ДАННЫХ
В эту подгруппу входят команды, осуществляющие передачу
регистр-регистр, регистр-память и память-регистр. Наиболее мощной
среди них является команда MOV.
Команда MOV
Эта команда имеет следующее обобщенное представление:
MOV dst, src
т.е. первым указывается операнд-получатель, а вторым - операнд-
источник. Одним из операндов обязательно должен быть регистр.
Команда осуществляет передачу:
регистр - регистр,
регистр - память,
память - регистр,
непосредственные данные - регистр,
непосредственные данные - память,
регистр - сегментный регистр,
память - сегментный регистр,
сегментный регистр - регистр,
сегментный регистр - память.
Допустимые форматы команды:
MOV mem/reg1, mem/reg2
MOV mem/reg, data
MOV sreg, mem/reg
MOV mem/reg, sreg
Команда обмена XCHG
Команда обмена XCHG позволяет обменивать содержимое любого
общего регистра и ячейки памяти, а также любой пары общих регист-
ров.
Формат команды:
XCHG reg, mem/reg
Команда XLAT
Команда преобразования XLAT применяется для быстрого преоб-
разования символов из одного кода в другой. Она заменяет содержи-
мое аккумулятора AL на байт из 256-байтовой таблицы, начальный
адрес которой находится в регистре BX, а восьмибитовое смещение -
в регистре AL. В качестве сегментного используется регистр DS.
Формат команды:
XLAT
- 7 -
Команды LEA, LDS и LES
Команды LEA, LDS и LES предназначены для загрузки эффектив-
ного адреса.
Команда LEA извлекает из памяти 16-битовый адрес и помещает
его в один из общих регистров. Практически эта команда дублирует
один из вариантов команды MOV, но выполняется быстрее.
Команда LDS извлекает из памяти 32-битовый адрес и помещает
первое считанное из памяти слово в заданный общий регистр, а вто-
рое - в сегментный регистр DS.
Команда LES извлекает из памяти 32-битовый адрес и помещает
первое считанное из памяти слово в заданный общий регистр, а вто-
рое - в сегментный регистр ES.
Обычно в команде LDS указывается регистр SI, а в команде LES
регистр DI.
Формат команд:
LEA reg, mem
LDS reg, mem
LES reg, mem
Команды LAHF и SAHF
Команда LAHF передает младший байт регистра флажков в
регистр AH, а команда SAHF реализует обратную передачу - содержи-
мое регистра AH передается в младший байт регистра флажков (стар-
ший байт не изменяется).
Формат команд:
LAHF
SAHF
2СТЕКОВЫЕ КОМАНДЫ
Каждая команда занесения данных в стек PUSH имеет соот-
ветствующую ей команду извлечения из стека POP. Для адресации
вершины стека используется стековый указатель SP. Все стековые
команды манипулируют только словами и сопровождаются автоматичес-
кой модификацией указателя стека: при включении в стек произво-
дится декремент, а при извлечении из стека - инкремент SP.
До выполнения стековых команд регистры SP и SS должны быть
инициализированы.
Команда PUSH включает в стек содержимое адресуемого регистра
или ячейки памяти, а команда POP извлекает содержимое вершины
стека и передает его в регистр или ячейку памяти.
Команды POSHF и POPF предназначены для временного запомина-
ния в стеке и последующего восстановления из стека содержимого
регистра флагов. С их помощью можно изменять состояние флага
трассировки TF, так как команд прямого воздействия на этот флаг
нет.
- 8 -
Формат команд:
PUSH mem/reg POP mem/reg
PUSH sreg POP sreg
PUSHF POPF
2КОМАНДЫ ВВОДА-ВЫВОДА
Команда ввода IN и команда вывода OUT допускают работу как с
байтами, так и со словами. Команда IN загружает данные из задан-
ного порта в аккумулятор, а команда OUT выполняет передачу из
аккумулятора в порт. Для портов ввода-вывода в диапазоне 00-FF
можно использовать прямую укороченную адресацию, а остальные
порты в диапазоне 100-FFFF можно адресовать только косвенно через
регистр DX.
Формат команд:
IN ac,port OUT port,ac (прямая укороченная адресация)
IN ac,DX OUT DX,ac (косвенная адресация)
_ 2КОМАНДЫ АРИФМЕТИЧЕСКИХ ОПЕРАЦИЙ
Процессор 8086 имеет широкий набор команд, реализующих
арифметические операции, что позволяет применять его в сложных
системах обработки данных.
Арифметические операции выполняются над целыми числами четы-
рех типов: беззнаковыми двоичными, знаковыми двоичными, упакован-
ными десятичными и неупакованными десятичными. Длина чисел может
быть 8 или 16 бит.
Диапазоны чисел:
беззнаковое 8-битное: 0 - 255,
беззнаковое 16-битное: 0 - 65535,
знаковое 8-битное: -128 - +127,
знаковое 16-битное: -32768 - +32767.
Команды арифметических операций влияют на состояние флажков
OF, SF, ZF, AF, PF и CF.
Одни и те же команды сложения и вычитания могут использо-
ваться для операций как над беззнаковыми, так и знаковыми числа-
ми. Контроль над типами чисел должен выполнять сам программист.
2КОМАНДЫ СЛОЖЕНИЯ
Команда ADD
Команда ADD позволяет производить сложение 8- или 16-битовых
двоичных чисел в режиме регистр-регистр, регистр-память и память-
регистр, причем адресация памяти осуществляется в любом допусти-
мом режиме. Общее представление команды имеет вид
ADD dst, src
- 9 -
т.е. первый операнд складывается со вторым и результат операции
замещает первый операнд.
Формат команды:
ADD mem/reg1,mem/reg2
ADD mem/reg,data
Команда ADC
Команда ADC выполняет сложение с переносом: в отличие от
команды ADD в операции сложения участвует флажок CF, значение
которого прибавляется к младшему биту результата сложения операн-
дов.
Формат команды:
ADC mem/reg1,mem/reg2
ADC mem/reg,data
Команда INC
Команда INC позволяет увеличить на 1 содержимое любого обще-
го регистра или ячейки памяти.
Формат команды:
INC mem/reg
КОМАНДЫ ВЫЧИТАНИЯ
Команда SUB позволяет производить вычитание 8- или 16-битных
двоичных чисел. Общее представление команды имеет вид
SUB dst, src
т.е. второй операнд вычитается из первого и результат операции
замещает первый операнд.
Формат команды:
SUB mem/reg1,mem/reg2
SUB mem/reg,data
Команда SBB
Команда SBB выполняет вычитание с переносом: в отличие от
команды SUB в операции вычитания участвует флажок CF, значение
которого вычитается из младшего бита результата вычитания операн-
дов.
Формат команды:
SBB mem/reg1,mem/reg2
SBB mem/reg,data
Команда DEC
Команда DEC позволяет уменьшить на 1 содержимое любого обще-
го регистра или ячейки памяти.
- 10 -
Формат команды:
DEC mem/reg
Команда NEG
Команда NEG изменяет знак числа, находящегося в регистре или
ячейке памяти, на противоположный.
Формат команды:
NEG mem/reg
2КОМАНДА СРАВНЕНИЯ
Команда сравнения CMP выполняет вычитание второго операнда
из первого, но нигде не запоминает результат операции и влияет
только на состояние флажков.
Формат команды:
CMP mem/reg1,mem/reg2
CMP mem/reg,data
2КОМАНДЫ УМНОЖЕНИЯ
Микропроцессор 8086 имеет две команды умножения: для беззна-
ковых и для знаковых двоичных чисел. Умножение десятичных чисел
требует использования специальных команд коррекции, которые будут
рассматриваться позднее.
Команда MUL
Команда умножения беззнаковых целых чисел MUL выполняет
умножение адресуемого операнда на содержимое аккумулятора. Общее
представление команды имеет вид
MUL src
При операции над байтами функции аккумулятора выполняет
регистр AL, а 16-битный результат операции помещается в регистр
AX. При операции над словами функции аккумулятора выполняет
регистр AX, а произведение длиной 32 бита формируется в регистрах
DX (старшее слово) и AX (младшее слово).
Формат команды:
MUL reg
MUL mem
Команда IMUL
Команда IMUL аналогична команде MUL, но сомножители и произ-
ведение интерпретируются как знаковые двоичные числа в дополни-
тельном коде.
Формат команды:
IMUL reg
- 11 -
IMUL mem
2КОМАНДЫ ДЕЛЕНИЯ
Микропроцессор 8086 имеет две команды деления: для беззнако-
вых и для знаковых двоичных чисел. Деление десятичных чисел также
требует использования специальных команд коррекции.
Команда DIV
Команда деления беззнаковых чисел DIV производит деление
содержимого аккумулятора и его расширения на содержимое адресуе-
мого операнда.
При делении 16-битного делимого на 8-битный делитель делимое
помещают в регистр AX. В результате выполнения операции частное
формируется в регистре AL, а остаток - в AH.
При делении 32-битного делимого на 16-битный делитель стар-
шая часть делимого помещается в регистр DX, а младшая - в AX.
В результате выполнения операции частное формируется в регистре
AX, а остаток - в DX.
При делении на 0 автоматически происходит прерывание и пере-
ход к специальной программе обработки.
Формат команды:
DIV reg
DIV mem
Команда IDIV
Команда IDIV аналогична команде DIV, но делимое, делитель и
частное интерпретируются как знаковые двоичные числа в дополни-
тельном коде.
Формат команды:
IDIV reg
IDIV mem
Команды преобразования
Команда преобразования байта в слово CBW расширяет знак
содержимого регистра AL в регистр AH. Команда преобразования сло-
ва в двойное слово CWD передает знак содержимого регистра AX во
все биты регистра DX.
Команды преобразования не влияют на состояния флагов.
Форматы команд:
CBW
CWD
2КОМАНДЫ ДЕСЯТИЧНОЙ АРИФМЕТИКИ
- 12 -
Микропроцессор 8086 допускает два представления десятичных
чисел: упакованный формат (BCD-формат) и неупакованный (ASCII-
формат). В формате BCD байт содержит две десятичные цифры
(по одной в каждой тетраде). В ASCII-формате байт содержит одну
десятичную цифру в коде ASCII. В обоих форматах многоразрядные
десятичные числа представляются последовательностями байт.
Команды десятичной арифметики оперируют только с байтами,
причем основным рабочим регистром во всех десятичных операциях
является регистр AL.
Операции с числами в форматах BCD и ASCII выполняются в два
этапа: сначала над 8-битными операндами выполняются обычные
операции двоичной арифметики, а затем осуществляется коррекция
результата. Команды коррекции являются безадресными, так как
работают с содержимым аккумулятора AL.
Команды для формата BCD
Команда десятичной коррекции для сложения DAA выполняет кор-
рекцию суммы, полученной в результате выполнения команд ADD и ADC
и должна следовать непосредственно за ними.
Команда десятичной коррекции для вычитания DAS выполняет
коррекцию разности, полученной в результате выполнения команд SUB
и SBB и должна следовать непосредственно за ними.
Форматы команд:
DAA
DAS
Команды для формата ASCII
Команда десятичной коррекции для сложения AAA выполняет кор-
рекцию суммы, полученной в результате выполнения команд ADD и ADC
и должна следовать непосредственно за ними.
Команда десятичной коррекции для вычитания AAS выполняет
коррекцию разности, полученной в результате выполнения команд SUB
и SBB и должна следовать непосредственно за ними.
Команда десятичной коррекции для умножения AAM выполняет кор-
рекцию произведения, полученного в результате выполнения команды
MUL и должна следовать непосредственно за ней. Старший разряд
результата помещается в регистр AH, младший - в AL.
Команда десятичной коррекции для деления AAD отличается тем,
что должна выполняться перед командой деления DIV.
Форматы команд:
AAA
AAS
AAM
AAD
- 13 -
_ 2КОМАНДЫ ЛОГИЧЕСКИХ ОПЕРАЦИЙ И КОМАНДЫ СДВИГОВ
2КОМАНДЫ ЛОГИЧЕСКИХ ОПЕРАЦИЙ
Логические операции представлены командами NOT (инверсия),
AND (конъюнкция), OR (дизъюнкция), XOR (исключающее ИЛИ) и коман-
дой TEST, которая выполняет конъюнкцию операндов, но не изменяет
их значений. Все логические операции являются поразрядными, т.е.
выполняются независимо для всех бит операндов.
Бинарные команды AND, OR, XOR и TEST воздействуют на флажки
OF, SF, ZF, PF и CF. Унарная операция NOT не влияет на состояние
флажков.
Форматы команд:
AND mem/reg1,mem/reg2
AND mem/reg,data
OR mem/reg1,mem/reg2
OR mem/reg,data
XOR mem/reg1,mem/reg2
XOR mem/reg,data
TEST mem/reg1,mem/reg2
TEST mem/reg,data
NOT mem/reg
2КОМАНДЫ СДВИГОВ
Команды сдвигов подразделяются на команды простых сдвигов и
команды циклических сдвигов. Циклические сдвиги влияют только на
флаги OF и CF, а обычные изменяют пять флажков: OF, SF, ZF, PF и
CF. Команды сдвигов могут работать как с байтами, так и со слова-
ми.
Команды ROL и ROR реализуют простой циклический сдвиг влево
и вправо соответственно, помещая значение из выдвигаемого бита в
освобождающийся бит.
Команды RCL и RCR называются командами циклического сдвига
влево и вправо через перенос, так как флажок CF расширяет сдвига-
емый операнд на один бит. Таким образом, значение из CF загружа-
ется в освобождающийся бит, а выдвигаемый бит помещается в CF.
Команды SHL и SHR реализуют логический сдвиг влево и вправо
соответственно. Для логического сдвига характерно, что в освобож-
дающийся бит загружается нуль, а выдвигаемый бит теряется.
Команды SAL и SAR предназначены для арифметического сдвига
влево и вправо. Арифметический сдвиг вправо отличается от логи-
ческого сдвига тем, что знаковый бит не сдвигается, а дублируется
в соседнем правом бите, сохраняя тем самым знак числа. Арифмети-
ческий сдвиг влево эквивалентен логическому, поэтому мнемоники
SAL и SHL обозначают одну и ту же машинную команду. Команды
арифметического сдвига по существу реализуют умножение и деление
чисел без знака на степень числа 2.
- 14 -
Поле операнда команд сдвига имеет вид mem/reg,count. Опреанд
count определяет число сдвигов и может быть указан как констан-
та 1 или как регистр CL. В первом случае выполняется сдвиг на
один бит, а во втором число сдвигов определяется содержимым
регистра CL, которое воспринимается как беззнаковое число.
Формат команды:
ROL mem/reg,1 ROL mem/reg,CL
ROR mem/reg,1 ROR mem/reg,CL
RCL mem/reg,1 RCL mem/reg,CL
RCR mem/reg,1 RCR mem/reg,CL
SHL mem/reg,1 SHL mem/reg,CL
SHR mem/reg,1 SHR mem/reg,CL
SAL mem/reg,1 SAL mem/reg,CL
SAR mem/reg,1 SAR mem/reg,CL
_ 2КОМАНДЫ ПЕРЕДАЧИ УПРАВЛЕНИЯ
Сегментная организация программной памяти определяет две
основные разновидности команд передачи управления. Передача
управления в пределах текущего сегмента кода называется внутри-
сегментной - при этом модифицируется только регистр IP и адрес
перехода может быть представлен одним словом. Такая передача
управления называется ближней (тип NEAR), а ее вариант с сокра-
щеннным диапазоном адресов переходов - короткой. Передача управ-
ления за пределы текущего сегмента кода называется межсегментной
или дальней (тип FAR) - при этом необходимо модифицировать содер-
жимое регистров IP и CS и адрес перехода представляется двумя
словами (сегмент:смещение).
Команды передачи управления процессора 8086 подразделяются
на команды безусловных переходов, условных переходов, вызовов,
возвратов, управления циклами и команды прерываний.
Команды передачи управления не изменяет состояние регистра
флагов (за исключением команды IRET).
2КОМАНДЫ БЕЗУСЛОВНЫХ ПЕРЕХОДОВ
Команды безусловного перехода имеют общую мнемонику JMP.
Команда короткого безусловного перехода содержит во втором байте
смещение, которое интерпретируется как знаковое целое. Диапазон
значений байта смещения составляет -128 - +127. Если смещение
положительное, осуществляется переход вперед, а если отрицатель-
ное - переход назад.
Команда ближнего безусловного перехода может либо непосред-
ственно содержать 16-битное смещение, либо косвенный адрес
16-битного смещения. Диапазон смещения составляет -32768 - +32767
байт относительно адреса команды, находящейся после команды JMP.
Команда дальнего безусловного перехода реализует прямой и
- 15 -
косвенный межсегментнные переходы.
Форматы команд:
JMP dispL - короткий переход
JMP disp - ближний прямой переход
JMP mem/reg - ближний косвенный переход
JMP addr - дальний прямой переход
JMP mem - дальний косвенный переход
2КОМАНДЫ УСЛОВНЫХ ПЕРЕХОДОВ
В системе команд процессора 8086 имеется 19 двухбайтных
команд условных переходов. При выполнении этих команд анализиру-
ется некоторое условие, закодированное текущими состояниями фла-
гов, и если оно выполняется, то осуществляется переход, а если
нет, то выполняется следующая по побядку команда.
Все условные переходы являются короткими. Некоторые команды
для удобства программирования могут иметь несколько различных
мнемонических обозначения.
Мнемонические обозначения команд:
1) Команды для работы с беззнаковыми числами:
JA/JNBE - переход, если больше;
JAE/JNB/JNC - переход, если больше или равно;
JB/JNAE/JC - переход, если меньше;
JBE/JNA - переход, если меньше или равно.
2) Команды для работы со знаковыми числами:
JG/JNLE - переход, если больше;
JGE/JNL - переход, если больше или равно;
JL/JNGE - переход, если меньше;
JLE/JNG - переход, если меньше или равно;
JNS - переход, если больше нуля;
JS - переход, если меньше нуля.
3) Команды, общие для знаковых и беззнаковых чисел:
JE/JZ - переход, если равно / переход, если ноль;
JNE/JNZ - переход, если не равно / переход, если не ноль;
JNO - переход, если нет переполнения;
JO - переход, по переполнению.
4) Прочие команды:
JCXZ - переход, если содержимое регистра CX равно нулю;
JNP/JPO - переход при отсутствии четности;
JP/JPE - переход по четности.
Форматы команд такие же, как у короткого безусловного пере-
хода.
2КОМАНДЫ ВЫЗОВОВА ПОДПРОГРАММ
Команда вызова подпрограммы CALL передает управление с авто-
матическим сохранением адреса возврата в стеке. В поле операнда
этой команды находится метка первой команды вызываемой подпрог-
- 16 -
раммы.
При переходе к подпрограмме необходимо временно запомнить
адрес команды, находящейся после команды CALL. Этот адрес называ-
ется адресом возврата. После того, как подпрограмма закончит свои
действия, завершающая ее команда возврата RET передает управление
по запомненному адресу возврата. Адрес возврата запоминается в
стеке.
Вызовы могут быть внутрисегментными (тип NEAR) или межсег-
ментными (тип FAR). В первом случае вызываемая подпрограмма
находится в текущем сегменте кода, а во втором - в произвольном.
Команды внутрисегментного перехода производят декремент SP
на 2, включают в стек содержимое IP, а затем прибавляют к IP
16-битное смещение, которое интерпретируется как знаковое целое.
Команды межсегментного перехода производят декремент SP
на 2, включают в стек содержимое CS, снова производят декремент
SP на 2, включают в стек содержимое IP, затем в IP загружается
значение смещения, а в CS - сегментный адрес.
Формат команды:
CALL disp - непосредственный ближний вызов;
CALL mem/reg - косвенный ближний вызов;
CALL addr - непосредственный дальний вызов;
CALL mem - косвенный дальний вызов.
2КОМАНДЫ ВОЗВРАТА ИЗ ПОДПРОГРАММ
Каждая подпрограмма должна содержать минимум одну команду
возврата RET, которая возвращает управление вызывающей программе.
Такая передача управления осуществляется путем извлечения из
стека адреса возврата, включенного в него командой вызова под-
программы.
Команды внутрисегментного и межсегментного возврата имеют
одну и ту же мнемонику RET. Тип команды, соответствующей этой
мнемонике, определяется ассемблером автоматически.
Формат команды:
RET - однобайтный вариант,
RET data - трехбайтный вариант.
Однобайтная команда RET с кодом операции C3 реализует внут-
рисегментный возврат. Она передает слово из вершины стека в IP и
увеличивает SP на 2.
Однобайтная команда RET с кодом операции CB осуществляет
межсегментный возврат. Она передает слово из вершины стека в IP,
увеличивает SP на 2. передает слово из вершины стека в CS и снова
увеличивает SP на 2.
Трехбайтные варианты команд возврата осуществляют те же
действия, что и однобайтные, а затем прибавляют содержащиеся в
них данные к указателю стека. Эти команды предназначены для упро-
щения возврата из тех подпрограмм, параметры которых передаются в
стеке. Прибавление к SP данных из RET эквивалентно удалению пара-
- 17 -
метров из стека.
2КОМАНДЫ УПРАВЛЕНИЯ ЦИКЛАМИ
Три команды управления циклами применяются для организации
программных циклов. В них предусматривается использование регист-
ра CX в качестве счетчика цикла.
В поле операнда команд управления циклами находится метка
первой команды цикла (8-битовое смещение). Диапазон переходов
этих команд составляет -128 - +127 байт от следующей команды.
Команда LOOP производит декремент регистра CX и, если содер-
жимое CX не равно нулю, происходит переход к началу цикла.
В противном случае выполняется следующая по порядку команда.
Мнемоники LOOPE/LOOPZ определяют одну и ту же машинную
команду, которая производит декремент регистра CX, а затем пере-
дает управление в начало цикла, если содержимое CX не равно нулю
и ZF=1. В противном случае выполняется следующая по порядку
команда.
Мнемоники LOOPNE/LOOPNZ также определяют одну и ту же машин-
ную команду, которая производит декремент регистра CX, а затем
передает управление в начало цикла, если содержимое CX не равно
нулю и ZF=0. В противном случае выполняется следующая по порядку
команда.
2КОМАНДЫ ПРЕРЫВАНИЙ
В процессоре 8086 имеются 3 команды, относящиеся к прерыва-
ниям.
Команда программного прерывания INT вызывает программу обра-
ботки, определяемую типом прерывания.
Формат команды:
INT type - вызов прерывания с номером type (от 0 до 255),
INT - вызов прерывания контрольного останова (номер 3).
Команда INT выполняется следующим образом:
1) декремент указателя стека на 2;
2) включение в стек содержимого регистра флажков;
3) сброс флажков IF и TF;
4) декремент указателя стека на 2;
5) включение в стек содержимого регистра CS;
6) определение адреса вектора прерывания ADDRESS путем умноже-
ния кода типа прерывания на 4;
7) загрузка в регистр CS слова памяти, расположенного по адресу
ADDRESS+2;
8) декремент указателя стека на 2;
9) включение в стек содержимого IP;
10) загрузка в регистр IP слова памяти, расположенного по адресу
ADDRESS.
В результате этих действий осуществляется межсегментный кос-
- 18 -
венный вызов подпрограммы обработки прерывания.
Команда прерывания при переполнении INTO генерирует прог-
раммное прерывание только в том случае, если установлен флаг
переполнения. Она вызывает прерывание с номером 4.
Формат команды:
INTO
Команда возврата из прерывания IRET предназначена для выхода
из подпрограммы обработки прерываний, инициированной аппаратно
или программно.
Команда IRET выполняется следующим образом:
1) слово из вершины стека передается в IP;
2) производится инкремент SP на 2;
3) слово из вершины стека передается в CS;
4) производится инкремент SP на 2;
5) слово из вершины стека передается в регистр флагов;
6) производится инкремент SP на 2.
Формат команды:
IRET
_ 2ЦЕПОЧЕЧНЫЕ КОМАНДЫ
Под цепочкой понимается последовательность любых контекстно
связанных байт или слов, находящихся в смежных ячейках памяти.
В системе команд процессора 8086 имеется 5 команд, предназ-
наченных для обработки одного элемента цепочки. Цепочечной
команде может предшествовать специальный однобайтный префикс
повторения REP, который вызывает повторение действия команды над
следующими элементами цепочки. Повторение расчитано на максималь-
ную длину цепочек 64 Кбайт и выполняется значительно быстрее
цикла LOOP.
Цепочечные команды могут иметь операнд-источник, операнд-
получатель или и то и другое одновременно. Подразумевается, что
цепочка-источник по умолчанию находится в текущем сегменте дан-
ных, но допускается префикс замены сегмента. Цепочка-получатель
может находиться только в текущем дополнительном сегменте. При
этом содержимое регистра SI всегда считается смещением текущего
элемента цепочки-источника, а содержимое регистра DI - смещением
текущего элемента цепочки-получателя.
Необходимые в команде индексные и сегментные регистры должны
быть инициализированы до ее выполнения.
При выполнении цепочечной команды содержимое регистров SI и
DI автоматически изменяется, чтобы адресовать следующие элементы
цепочек. Флаг направления DF определяет автоинкремент (DF=0) или
автодекремент индексных регистров.
Если команде предшествует префикс повторения, то после
каждого ее выполнения производится декремент регистра-счетчика
CX, поэтому его необходимо предварительно инициализировать на
- 19 -
требуемое число повторений. Когда содержимое CX достигает нуля,
управление передается следующей команде.
Префикс повторения
Префикс повторения имеет 5 мнемокодов: REP, REPE, REPZ,
REPNE, REPNZ.
Префикс REP используется с командами MOVS и STOS и вызывает
повторение операции до тех пор, пока содержимое CX не равно 0.
Префиксы REPE и REPZ соответствуют тому же коду команды, что
и мнемоника REP, но используются совместно с командами CMPS и
SCAS. Они вызывают повторение операции до тех пор, пока ZF=1 и
содержимое CX не равно 0.
Префиксы REPNE и REPNZ соответствуют одному коду команды,
и используются совместно с командами CMPS и SCAS. Они вызывают
повторение операции до тех пор, пока ZF=0 и содержимое CX не рав-
но 0.
Команда MOVS
Команда MOVS передает байт или слово из цепочки, адресуемой
регистром SI, в цепочку, адресуемую регистром DI. Команда переда-
чи цепочки байт MOVSB после пердачи байта увеличивает содержимое
регистров SI и DI на 1, а команда передачи цепочки слов MOVSW
после передачи слова увеличивает их содержимое на 2.
Формат команды:
MOWSB
MOVSW
Команда CMPS
Команда сравнения цепочек CMPS производит вычитание байта
или слово цепочки, адресуемой регистром DI, из байта или слова
цепочки, адресуемой регистром SI. В зависимости от результата
вычитания устанавливаются флаги, но сами операнды не изменяются.
Команда сравнения цепочек байт CMPSB после каждой операции срав-
нения увеличивает содержимое регистров SI и DI на 1, а команда
сравнения цепочек слов CMPSW - на 2.
Формат команды:
CMPSB
CMPSW
Команда SCAS
Команда сканирования цепочки SCAS вычитает элементы цепочки,
адресуемой регистром DI, из содержимого аккумулятора AL (при
работе с байтами) или AX (при работе со словами). В зависимости
от результата вычитания устанавливаются флаги, но сами операнды
- 20 -
не изменяются. Команда сканирования цепочки байт SCASB после каж-
дой операции сканирования увеличивает содержимое регистра DI
на 1, а команда сканирования цепочки слов SCASW - на 2.
Формат команды:
SCASB
SCASW
Команда LODS
Команда загрузки цепочки в аккумулятор LODS загружает эле-
менты цепочки, адресуемой регистром SI, в аккумулятор AL или AX.
Команда загрузки цепочки байт LODSB после выполнения каждой опе-
рации увеличивает содержимое регистра SI на 1, а команда загрузки
цепочки слов LODSW - на 2.
Формат команды:
LODSB
LODSW
Команда STOS
Команда запоминания содержимого аккумулятора в цепочке STOS
передает содержимое аккумулятора в элемент цепочки, адресуемый
регистром DI. Команда запоманания цепочки байт STOSB после выпол-
нения каждой операции увеличивает содержимое регистра DI на 1, а
команда запоминания цепочки слов STOSW - на 2.
Формат команды:
STOSB
STOSW
_КОМАНДЫ УПРАВЛЕНИЯ МИКРОПРОЦЕССОРОМ
Команды данной группы обеспечивают программное управление
различными функциями процессора. Они делятся на две подгруппы:
команды установки флагов и команды синхронизации.
2КОМАНДЫ УСТАНОВКИ СОСТОЯНИЯ ФЛАГОВ
Команды этой группы предназначены для управления состоянием
отдельных флагов.
Команды CLC, CMC и STC выполняют соответственно сброс,
инвертирование и установку в состояние 1 флага CF. Они часто
используются совместно с командами сдвига через перенос RCR и
RCL.
Форматы команд:
CLC
CMC
STC
Команды CLD и STD осуществляют сброс и установку флага нап-
- 21 -
равления DF. Состояние этого флага определяет автодекремент или
автоинкремент индексных регистров SI и DI в цепочечных командах.
Форматы команд:
CLD
STD
Команды CLI и STI осуществляют сброс и установку флага пре-
рываний IF. После выполнения команды CLI маскируемые аппаратные
прерывания будут запрещены.
Форматы команд:
CLI
STI
2КОМАНДЫ СИНХРОНИЗАЦИИ
Команда останова HLT переводит процессор в состояние остано-
ва. Из этого состояния процессор может быть выведен или сигналом
сброса, или аппаратным прерыванием.
Команда ожидания WAIT переводит процессор в состояние ожида-
ния, в котором он периодически через пять тактов проверяет нали-
чие сигнала TEST и при его появлении переходит к выполнению сле-
дующей команды.
Команда LOCK, именуемая также префиксом блокировки, блокиру-
ет доступ других подсистем к шине процессора. Префикс LOCK может
находиться перед любой командой.
Команда ESC предназначена для передачи команд и данных мате-
матическому сопроцессору.
Команда NOP не производит никаких действий и применяется в
основном в программных циклах задержки.