Вычислительные машины и системы

Сдавался/использовался1998г., МГИЭМ, преп. Кулаков В.Г.
Загрузить архив:
Файл: 1061-004.zip (85kb [zip], Скачиваний: 82) скачать

                         ПЕРВЫЙ СЕМЕСТР

                           ЛЕКЦИЯ N 1

                   2ОСНОВЫ МАШИННОЙ АРИФМЕТИКИ

           2Системы счисления и способы перевода чисел

                   2из одной системы в другую.

     Системой счисления называют систему приемов и правил, позво-

ляющих устанавливать взаимно-однозначное соответствие между любым

числом иегопредставлением в виде совокупности конечного числа

символов. Множество символов, используемых для такого представле-

ния, называют цифрами.

     В зависимости от способа изображения чиселспомощью  цифр

системы счисления делятся на 1позиционные0 и 1непозиционные0.

     В 1непозиционных0 системах любое число определяется какнеко-

торая функция от численных значений совокупности цифр,представ-

ляющих это число.  Цифры в непозиционных системах счисления соот-

ветствуют некоторым  фиксированнымчислам.Пример непозиционной

системы - римская система счисления. В вычислительной технике не-

позиционные системы не применяются.

    Систему счисления называют 1позиционной0,если одна ита  же

цифра может  принимать различные численные значения в зависимости

от номера разряда этой цифры в совокупности цифр,представляющих

заданное число. Пример такой системы - арабская десятичная систе-

ма счисления.

     В позиционнойсистемесчисления любое число записывается в

видепоследовательностицифр:

          A = 7+0 a4m-10 a4m-20 ... a4k0 ... a400 , a4-10 ... a4-l0         (I)

     Позиции, пронумерованныеиндексами k (-l < k < m-1) называ-

ются разрядами числа. Сумма m+l соответствует количеству разрядов

числа (m - число разрядов целой части числа, l - дробной части).

     Каждая цифра a4k0 в записываемой последовательности может при-

нимать одно из N возможных значений.Количество  различныхцифр

(N),  используемыхдляизображения  чисел в позиционной системе

счисления,  называется основанием системы счисления.  Основание N

указывает,во сколько раз единица k+1 -го разряда больше единицы

k -го разряда,  ацифра a4k0 соответствует количеству единиц k -го

разряда, содержащихся в числе.

     Таким образом, число может быть представлено в виде суммы:

(A)4N0 = 7+0(a4m-10N5m-10 + a4m-20N5m-20 +...+ a400 + a4-10N5-10 +...+ a4-l0N5-l0) (II)

     Основание позиционной системы счисления определяет ее назва-

ние. В вычислительной технике применяются двоичная, восьмеричная,

десятичная и шестнадцатеричная системы.В дальнейшем, чтобы явно

указать используемую  систему счисления,будем заключать число в

скобки и в индексе указывать основание системы счисления.


                              - 2 -

     В двоичнойсистеме счисления используются только две цифры:

0 и 1.Любое двоичное число может быть представлено в  следующей

форме:

(A)420 = 7+0(a4m-1025m-10 + a4m-2025m-20 + ... + a400 + a4-1025-10 + ... + a4-l025-l0)

     Например, двоичное число

(10101,101)420 = 1*2540+0*2530+1*2520+0*2+1+1*25-10+0*25-20+1*25-30 = (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)480 = 7*8520 + 7*8 + 5 = (509)410

     Для осуществленияавтоматического перевода десятичных чисел

в двоичную систему счисления необходимо вначале каким-тообразом

ввести их в машину, Для этой цели обычно используется двоично-де-

сятичная запись чисел или представление этих чисел в кодах ASCII.

     При двоично-десятичной записи каждая цифра десятичного числа

заменяется четырехзначным двоичным числом (тетрадой):

          (983,65)4100 = (1001 1000 0011, 0110 0101)42-10

     При записи чисел в кодах ASCII цифрамот 0 до 9поставлены

в соответствие  восьмиразрядныедвоичныекоды  от00110000до

00111001.

     ЭВМ, предназначенные для обработки экономической информации,

например IBM AT,  позволяют производить арифметические операции в

десятичной системе счисления над числами,представленными в дво-

ично-десятичных кодах и кодах ASCII.

     Шестнадцатеричная и восьмеричная системы счисления использу-

ются только программистами и операторами ЭВМ, так как представле-

ние чисел в этих системах более компактное, чем в двоичной, и пе-

ревод из этих систем в двоичную и обратно выполняется очень прос-

то (основания этих систем представляют собой целую степеньчисла

2).

     Для перевода восьмеричного числа в двоичное достаточно  каж-

дый восьмеричный разряд представить тремя двоичными (триадой),а

для перевода шестнадцатиричного числа - четырьмя (тетрадой):

               (376,51)480 = (011 111 110, 101 001)42

                (1AF8)4160 = (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 Для исключения возможности переполнения приходится масшта-

бировать величины, участвующие в вычислениях.

     Диапазон представления правильных двоичных дробей:

                  25-(n-1)0 7,0 │(A)│7 ,0 1 - 25-(n-1)0 .

.

                              - 2 -

     Числа, которые по абсолютной величине меньше единицы младше-

го разряда разрядной сетки, называются 2машинным нулем0.

     Диапазон представления целыхдвоичныхчисел  сознакомв

n-разрядной сетке:

                     0 7,0 │(A)│7 ,0 25n-10 - 1 .

     Использование представлениячиселс  фиксированной запятой

позволяет упростить схемы машины,повысить ее быстродействие, но

представляет определенные трудности при программировании.В нас-

тоящее время представление чисел с фиксированной запятойисполь-

зуется как основное только в микроконтроллерах.

     В универсальных ЭВМ основным является представление чиселс

плавающей запятой.  Представление числа с плавающей запятой в об-

щем случае имеет вид:

                         A = 7+0m * N5+p0 ,

     где N - основание системы счисления,

         p - целое число, называемое порядком числа A,

         m - мантисса числа A (│m│<1).

     Так как в ЭВМ применяется двоичная система счисления, то

                         A = 7+0m * 25+p0 ,.

     причем порядок и мантисса представлены в двоичной форме.

     Двоичное число называется нормализованным, если его мантисса

удовлетворяет неравенству

                        1/2 7,0 │ m │7 0< 1 .

     Неравенство показывает, что двоичное число является нормали-

зованным, если в старшем разряде мантиссы стоитединица.  Напри-

мер, число0,110100*1051000 - нормализованное,а 0,001101*1051100 -

ненормализованное.

     Ситуация, когда в процессе вычислений получено число с │m│7.01

называется переполнением разрядной сетки.

     Нормализованное представление  чиселпозволяетсохранить в

разрядной сетке большее количество значащих цифр и,следователь-

но, повышает точность вычислений. Однако современные ЭВМ позволя-

ют, при необходимости,  выполнять операции также и над ненормали-

зованными числами.

.

                              - 3 -

    Диапазон представления нормализованных двоичных чисел,взя-

тых по абсолютному значению, удовлетворяет неравенству:

          25-1 0*5 025-(2k-1)7 ,0 │(A)│ 7,0 (15 0-5 025-l0)5 0*5 0252k-10 ,

     где l - число разрядов мантиссы;

         k - число разрядов порядка;

         25-10 - наименьшее значение нормализованной мантиссы;

         1-25-l0 - наибольшее значение нормализованной мантиссы.

     Широкий диапазон представлениячиселс  плавающейзапятой

удобен для научных и инженерных расчетов.Для повышения точности

вычислений во многих ЭВМ предусмотрена возможностьиспользования

формата двойной длины, однако при этом происходит увеличение зат-

рат памяти на хранение данных и замедляются вычисления.

            2Представление отрицательных чисел в ЭВМ.

     Для кодированиязнакадвоичного числа используется старший

("знаковый") разряд (ноль соответствует плюсу, единица - минусу).

     Такая формапредставлениячисла  называется2прямым кодом0.

Формула для образования прямого кода правильной дроби имеет вид:

                           7(

                           720   A, если A7.00,

                   [A]4пр0 =7 *

                           720 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(

                           720 50 A, если A7.00,

                  [A]4пр0 =7 *

                           720105n-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 - 105-(n-1)0 + A.

Например, при n = 8, для A = -0,1100001

[A]4доп0 = 10 + (-0,1100001) = 1,0011111

[A]4обр0 = 10-105-70+(-0,1100001) = 1,1111111-0,1100001 = 1,0011110.

   Формула для образования дополнительного кода4 0целого числа:

                        [A]4доп0 = 105n0 + A.

      Формула для образования обратного кода4 0целого числа:

                      [A]4обр0 = 105n0 - 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 к младшему разряду;

     - для образования обратного кода отрицательного числа  необ-

ходимо в знаковом разряде поставить единицу,а все цифровые раз-

ряды инвертировать.

     Примечание: приданных преобразованиях нужно учитывать раз-

мер разрядной сетки.

     Прямой кодможно получить из дополнительного и обратного по

тем же правилам,  которые служат для нахождения дополнительного и

обратного кодов.

     Замена вычитания двоичных чисел A41 0-4 0A420 сложением с дополне-

ниями [A410]4пр 0+4 0[-A420]4доп0  или [A410]4пр 0+4 0[-A420]4обр0 позволяет опериро-

вать со знаковыми разрядами так же,как и с цифровыми.При этом

перенос из старшего знакового разряда,если он возникает, учиты-

вается по разному для обратного и дополнительного кодов:

     - при использовании дополнительного кода единица переноса из


                              - 5 -

знакового разряда отбрасывается;

     - прииспользовании обратного кода единица переноса из зна-

кового разряда прибавляется к младшему разряду суммы (осуществля-

ется так называемый циклический перенос).

     Пример: складываем числа A410=0,10010001 и A420=-0,01100110

При использовании обратного кода получим:

   [A410]4пр 0 =  0,10010001

             +

   [A420]4обр0 =  1,10011001

───────────

             10,00101010

             └─────── +1

             ───────────

   Результат: 0,00101011

При использовании дополнительного кода получим:

   [A410]4пр 0 =  0,10010001

             +

   [A420]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 разрядов,то к истинному значению

порядка прибавляют  смещение,равное(25k-10 - 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) WordInteger (целое слово) - 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

                        ┌───────┬───────┐

                        │   D410│   D400│

                        └───────┴───────┘

     4) Packed Binary Coded Decimal-упакованное  18-разрядное

десятичное  целоечисло со знаком (поддерживается математическим

сопроцессором)


                              - 5 -

79                                                          0

┌─┬────┬─────────────────────────────────────────────────────┐

│S│X │D4170D4160                   ...                    D410 D400│

└─┴────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘

            1Форматы представления вещественных чисел

     1) Single Format (обычный формат) 1 0или 1 0Short Real (короткое

вещественное)  -короткоевещественное нормализованное число со

знаком, 8-разрядным смещенным порядкоми  24-разрядной мантиссой

(так как старший бит мантиссы нормализованного числа всегда равен

1, то он не хранится в памяти,и размер  поля,выделенногодля

хранения мантиссы, составляет только 23 разряда).

31 30           23 22                                          0

┌─┬───────────────┬─────────────────────────────────────────────┐

│S│       E       │                     M                       │

└─┴─────────────┴─┴─────────────┴───────────────┴───────────────┘

     2) DoubleFormat(двойной формат) или 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 - высокий.Потенциальный сигнал характеризуется

амплитудами низкого (U400) и высокого (U410)уровнейнапряжения,  а

также временами нарастания и спада сигнала, которые именуются пе-

редним (t4п0) и задним (t4з0) фронтами соответственно.

     При 2импульсном0способе 0 и 1 соответствуют импульсы различ-

ной полярности,  либо 0 соответствует отсутствие,  а 1 -наличие

импульса. Импульсный  сигналхарактеризуется амплитудой импульса

U4m0, шириной (продолжительностью импульса по основанию) t4и0,и пе-

редним t4п0  и задним t4з0 фронтами импульса.В идеальном случае им-

пульсные сигналы должны появляться в тактовые моменты. В действи-

тельности имеет  местозапаздываниеимпульсного сигнала относи-

тельно тактового момента на время7 t0.

     При2 динамическом0способе представления информации двум воз-

можным значениям переменной соответствует наличие либо отсутствие

серии импульсов.

     В электронных схемах и устройствах,входящих в составЭВМ,

применяется потенциальный способ представления информации,а для

передачи информации между ЭВМ,а также при работес  магнитными

носителями  информации применяются импульсный и динамический спо-

собы.

                 2Математические модели схем ЭВМ

     Наиболее общей моделью любой схемы,узла или устройства ЭВМ

является многополюсный черный ящик с 2l0 входами и 2m0выходами.На

входы модели поступают,  а на выходах появляются сигналы, кванто-

ванные по двум уровням.

.

                              - 2 -

                          ┌──────────┐

                  x410 ─────┤          ├───── y41

                  x420 ─────┤          ├───── y42

                      .   │Черный  │   .

                      .   │   ящик   │   .

                      .   │          │   .

                  x4l0 ─────┤          ├───── y4m

                          └──────────┘

     где x4i0 (i = 1, 2, ..., l) - входные сигналы,

         y4j0 (j = 1, 2, ..., m) - выходные сигналы.

     Множество значений,которые может принимать переменнаяx4i0,

называют2 алфавитом0 переменной x4i0. В современных ЭВМ алфавит вход-

ных и выходных сигналов состоит из двух букв: 0 и 1.

     На входымодели поступают в каждый тактовый момент упорядо-

ченные наборы букв, называемые2 словами0. Множество всех допустимых

наборов слов называется 2входным алфавитом0 X данной схемы.Анало-

гично множество всех допустимых комбинаций,образуемых выходными

сигналами, называется 2выходным алфавитом0 Y.

     Математические модели отражают зависимость между входными  и

выходными переменными схемы посредством системы уравнений:

y4j0(t) = f{x410(t),x420(t)...,x4l0(t), q410(t),q420(t),,...,q4s0(t)}   (I)

где j = 1,2,...,m,  а переменные q410,q420,...,q4s0 отражают внутренние

состояния схемы.

     Если переменные y4i0 не зависят от внутреннего состояниясхе-

мы, то одинаковым наборам входных переменных соответствует один и

тот же набор выходных переменных. Такие схемы называются 2комбина-

2ционными0.

     При этом система уравнений может быть записана в виде:

  y4j0(t) = f{x410(t),x420(t)...,x4l0(t)},где j = 1,2,...,m.     (II)

     Функции такого вида могут приниматьтолькоконечное  число

значений,изависят  от аргументов,также принимающих конечное

число значений. Такие функции называются2 переключательными0.

     В дальнейшеммыбудем рассматривать переключательные функ-

ции, которые могут принимать только два значения - 0 и 1, и аргу-

менты которых также могут принимать только одно из этих двух зна-

чений. Такие переключательные функции получилиназвание2булевых

2функций0.

     Если выходныепеременные y4i0(t) зависят не только от входных

переменных, но и от внутреннего состояния схемы,то для  полного

ее описания необходимо указать еще одну систему уравнений:


                              - 3 -

q4n0(t+1) = 7f0{x410(t),x420(t)...,x4l0(t), q410(t),q420(t),,...,q4s0(t)},(III)

где n = 1,2,...,s.

     Эта система отражает зависимость внутреннего состояния схемы

в (t+1) такте от ее состояния и входных сигналов в такте t.

     Схемы, описываемые уравнениями I иIII,получили  название

2цифровых автоматов0.

     Для задания цифрового автомата должны быть указаны:

     1) входной алфавит слов X;

     2) выходной алфавит слов Y;

     3) алфавит внутренних состояний Q;

     4) начальное состояние автомата q400;

     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(

     720 q(t+1) = A{q(t),x(t)},

     7*

     720 y(t) = B{q(t),x(t)}

     79

     называется 2автоматом Мили0.

     Автомат, выходнойсигнал которого y(t) в тактовый момент t

зависит только от состояния автомата q(t) и не зависит от входно-

го сигнала, называется2 автоматом Мура0 и описывается системой:

     7(

     720 q(t+1) = A{q(t),x(t)},

     7*

     720 y(t) = B{q(t)}.

     79


                         ПЕРВЫЙ СЕМЕСТР

                           ЛЕКЦИЯ N 5

            2ТЕОРЕТИЧЕСКИЕ ОСНОВЫ ПОСТРОЕНИЯ УЗЛОВ ЭВМ

     Если для двух любых состояний q4i0 и q4j0 автомата имеется вход-

ной сигнал,  переводящий автомат из состояния q4i0 в q4j0,тотакой

автомат называется автоматом с 2полной системой переходов0. Автомат

Мура имеет 2полную систему выходов0, если выходные сигналы различны

для всех его состояний.

     При построении схем ЭВМ в качестве элементов памяти  исполь-

зуются элементарные автоматы.2Элементарный автомат0 - это автомат

Мура с двумя внутренними состояниями,двумя различными выходными

сигналами и несколькими входами, обладающий полными системами пе-

реходов и выходов.

                     2ТЕОРИЯ БУЛЕВЫХ ФУНКЦИЙ

     Булевыми функциями называют переключательные функции,  кото-

рые так же,  какиих аргументы, принимают только два значения:

0 и 1.

     Булевы функции могут быть заданы в виде формулилитаблиц.

Формулы позволяют  представлятьфункции в более компактном виде,

чем таблицы,так как таблица для функции отnаргументов будет

содержать 25n0строк (или столбцов, в зависимости от формы табли-

цы). С другой стороны,  таблицы дают наглядное представление  для

простых функций.

     Приведем вкачествепримера  наиболеечасто встречающиеся

функции от одной и двух переменных:

     1) Переменная x:

                            f(x) = x

     2) Инверсия переменной x (функция НЕ):

                                   4_

                            f(x) = x

     3) Константа нуля:

                            f(x) = 0

     4) Константа единицы:

                            f(x) = 1

.

                              - 2 -

     5) Дизъюнкция (функция ИЛИ):

                       f(x410,x420) = x410 V x42

     Может встречаться другое обозначение: f(x410,x420) = x410 | x420.

Таблица истинности (соответствия) для этой функции имеет вид:

                      ┌─────┬─────┬─────────┐

                      │x410 │x420 │ x410 V x420 │

                      ├─────┼─────┼─────────┤

                      │0│  0│    0    │

                      │  0│1  │    1    │

                      │1│  0│    1    │

                      │1│  1│    1    │

                      └─────┴─────┴─────────┘

     6) Конъюнкция (функция И):

                       f(x410,x420) = x410 5.0 x42

     Может встречаться другое обозначение: f(x410,x420) = x410 & x420.

         Таблица истинности для этой функции имеет вид:

                      ┌─────┬─────┬─────────┐

                      │x410 │x420 │ x410 5.0 x420 │

                      ├─────┼─────┼─────────┤

                      │0│  0│    0    │

                      │0│  1│    0    │

                      │1│  0│    0    │

                      │1│  1│    1    │

                      └─────┴─────┴─────────┘

     7) Функция ИЛИ-НЕ:

                                  4_______

                       f(x410,x420) = x410 V x42

         Таблица истинности для этой функции имеет вид:

                      ┌─────┬─────┬─────────┐

          │x410 │x420 │ x410 V x420 │

                      ├─────┼─────┼─────────┤

                      │0│  0│    1    │

                      │0│  1│    0    │

                      │1│  0│    0    │

                      │1│  1│    0    │

                      └─────┴─────┴─────────┘

.

                              - 3 -

     8) Функция И-НЕ:

                                  4_______

                       f(x410,x420) = x410 5.0 x42

         Таблица истинности для этой функции имеет вид:

                      ┌─────┬─────┬─────────┐

                      │x410 │x420 │ x410 V x420 │

                      ├─────┼─────┼─────────┤

                      │0│  0│    0    │

                      │  0│1  │    1    │

                      │1│  0│    1    │

                      │1│  1│    1    │

                      └─────┴─────┴─────────┘

     9) Функция ИСКЛЮЧАЮЩЕЕ ИЛИ (сумма по модулю 2):

                       f(x410,x420) = mod2(x410,x420)

         Таблица истинности для этой функции имеет вид:

                   ┌─────┬─────┬─────────────┐

                   │x410 │x420 │ 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 17 )

                       780(1)

     x = 1, если x 7-0 07 0

     1 V 1 = 17 )

               780 (2)

     05 .0 0 = 07 0


                              - 4 -

     0 V 0 = 07 )

               780 (3)

     1 5.0 1 = 17 0

     0 V 1 = 1 V 0 = 17 )

                       780 (4)

     05 .0 1 = 15 . 00 = 07 0

     4_

     0 = 17 )

     4_0     780 (5)

     1 = 07 0

     Аксиома (1) утверждает, что в алгебре логики рассматриваются

только двоичные  переменные,аксиомы (2)-(4) определяют операции

конъюнкции и дизъюнкции, а аксиома 5 - операцию отрицания.

     Если в аксиомах (2)-(5), заданных парами утверждений, произ-

вести взаимную замену операций дизъюнкции и конъюнкции,атакже

элементов 0и1,  тоиз одного утверждения пары будет получено

другое. Это свойство называется принципом двойственности.

                     2Теоремы алгебры логики

     С помощью аксиом алгебры логики можно доказать целый ряд те-

орем и тождеств. Одним из эффективных методов доказательства тео-

рем является2 метод перебора0 всех значений переменных: если теоре-

ма истинна,  топриподстановке любых значений переменных в обе

части выражения, формулирующего утверждение теоремы, должно полу-

читься тождество.

     Методом перебора можно убедиться в справедливости  следующих

теорем:

идемпотентные законы

                           x V x = x7 )

                                     78

                           x 5.0 x = x7 0

коммутативные законы

                         x V y = y V x7 )

                                       78

                         x 5.0 y = y 5.0 x7 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 z7 )

                                              78

                  x V y 5.0 z = (x V y)5.0(x V z)7 0

законы отрицания4               _

                           x V x = 17 )

                               4_0     78

                           x 5.0 x = 07 0

                           0 V x = x7 )

                                     78

                           1 5.0 x = x7 0

                           1 V x = 17 )

                                     78

                           0 5.0 x = 07 0

законы двойственности (теоремы де Моргана)

                         4_____   _   _

                         x V y = x 5. 0y7 )

                         4_____0   4_0   4_0 78

                         x 5.0 y = x V y7 0

закон двойного отрицания4 04 _____

                            7(0 4_7 )

                            720 x7 20 = x

                            79   0

законы поглощения

                         x V x 5.0 y = x7 )

                                       78

                         x5.0(x V y) = x7 0

операции склеивания4                _

                       x 5.0 y V x 5.0 y = x7 0 7)

                                   4_0      78

                      (x V y)5.0(x V y) =7 0x 70

операции обобщенного склеивания

                        4_                 _

                  x5.0y V x5.0z V y5.0z = x5.0y V x5.0z 5       7)

                    4_0                       54_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 y7 )

                          4_0              78

                       x5.0(x V y) = x7 5.0 y 70


                         ПЕРВЫЙ СЕМЕСТР

                           ЛЕКЦИЯ N 6

         2МЕТОДЫ УПРОЩЕНИЯ (МИНИМИЗАЦИИ) БУЛЕВЫХ ФУНКЦИЙ

     Сложные булевы функции могут быть построены из  болеепрос-

тых.

     2Элементарными функциями0 называются функции, образованные пу-

тем использования однотипных логических операций: только операции

И, только операции ИЛИ и т.д.

     Для представления сложных логических функций можно использо-

вать не все элементарные функции,а только ту или иную часть их,

называемую системой. Система элементарных функций f410, ..., f4k0 на-

зывается функционально полной,если любую сложную булеву функцию

можно записать в виде формулы через функции f410, ..., f4k0.

     Так, любую функцию можно представить с помощью одних  только

операций И-НЕ или только операций ИЛИ-НЕ.

     В цифровых устройствах часто применяется в качестве  базовой

система из трех функций: И, ИЛИ и НЕ.

     Используя законы алгебры логики,можно упрощать сложные ло-

гические выражения. Упрощение заключается в уменьшении количества

букв и количества отрицаний в выражении,что позволяет упростить

схему устройства  сжесткойлогикой  или программу устройства с

программируемой логикой.  Такое упрощение позволяет уменьшить се-

бестоимость и увеличить быстродействие устройства.

     Рассмотрим функцию

                               4_________

                               7(    4_7)4   _

                  f(a,b.c) = a5.720b V a5.0c720 V a5.0b

                               79       0

     Используя законы алгебры логики,можно привести эту функцию

квиду:

                 4_0 50 4_   0 4 _      0  4_    __   _     04_   _

f(a,b.c)  =  a5.0(b5.0(a5 0V5 0c)) V a5.0b=ab V abc V ab  =ab V ab

       4применяем           0       4    0     4       применяем

   4законы де Моргана              04 закон поглощения

     Одной итой  желогической функции может быть поставлено в

соответствие неограниченноеколичество  различныхэквивалентных

формул. Наиболее удобными для практического использования являют-

ся так называемые 2нормальные формы0 представления сложных логичес-

ких функций.

     2Элементарной конъюнкцией0 Q называется логическоепроизведе-

ние переменных  иих отрицаний,причем каждая переменная должна

встречаться в произведении только один раз.

.

                              - 2 -

                                            4_   _

     Пример элементарной конъюнкции:Q = x410x420x430x440x460.

     Аналогично 2элементарной дизъюнкцией0 В называетсялогическая

сумма переменных и их отрицаний,причем каждая переменная должна

встречаться в сумме только один раз.

                                               4_

     Пример элементарной дизъюнкции:D = x410 V x430 V x440.

     Формула, эквивалентная заданной и представляющая собой логи-

ческую сумму  элементарныхконъюнкций,называется 2дизъюнктивной

2нормальной формой0 (ДНФ) заданной формулы.Дизъюнктивная нормаль-

ная форма существует для любой логической функции.

     Аналогично считается,что логическая функциязадана  своей

2конъюнктивной0 2нормальной формой0 (КНФ), если она выражена посредс-

твом логического произведения элементарных дизъюнкций.КНФ также

существует для любой логической функции.

     Например, для функции     4_________

                               7(    4_7)4   _

                  f(a,b.c) = a5.720b V a5.0c720 V a5.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│m400 = a5.0b   │M400 = a V b│

           │     │     │       4_0     │       4_0      │

           │0  │1│  m410 = a5.0b   │M410 = a V b│

           │     │     │         4_0   │           4_0│

           │1  │0│  m420 = a5.0b   │M420 = a V b│

           │     │     │       4   0   │              │

           │1  │1│  m430 = a5.0b   │M430 = a V b│

           └─────┴─────┴─────────────┴──────────────┘

     Минтермы и макстермы можно геометрически представить на кар-

тах (диаграммах) Вейча.  Так, для двух переменных карта Вейча бу-

дет представлять  собойквадрат,причем левая половина квадрата

определяется переменной a, а верхняя половина квадрата - перемен-

ной b.Это означает,что левая4_0 половина квадрата соответствует

значению переменной a, правая - a, верхняя половина соответствует

          4_

b, нижняя b.

     Карта Вейча для двух переменных:

                                   4_

                             2a     a

                          ┌─────┬─────┐

                          │     │ 4_0   │

                        2b 0│ a5.0b │ a5.0b │

                          │     │     │

                          ├─────┼─────┤

                        4_0 │   4_0 │ 4_0 4_0 │

                        2b 0│ a5.0b │ a5.0b │

                          │   │     │

                          └─────┴─────┘

.

                              - 4 -

     Карта Вейча для5 0трех переменных:

                                          4_

                          2a               a

                   5┌──────┴──────┐ ┌──────┴──────┐

                  ┌───────┬───────┬───────┬───────┐

                  │     4_0 │       │ 4_0     │ 4_0   4_0 │

                2b 0│ a5.0b5.0c │ a5.0b5.0c │ a5.0b5.0c │ a5.0b5.0c │

                  │      │       │       │       │

                  ├───────┼───────┼───────┼───────┤

                4_0 │   4_0 4_0 │   4_0   │ 4_0 4_0   │ 4_0 4_0 4_0 │

                2b 0│ a5.0b5.0c │ a5.0b5.0c │ a5.0b5.0c │ a5.0b5.0c │

                 │       │       │       │       │

                  └───────┴───────┴───────┴───────┘

                      4_0    5└──────┬──────┘4    _

                      2c0           2c           c

                2Свойства минтермов и макстермов:

     1) Минтерм является инверсией некоторого макстерма и  наобо-

рот:4                      _

                          m4i0 = M

                                25n0-1-i

                          4_

                          M4i0 = m

                              25n0-1-i

             4_

     Пример: m410 =4 0M420 (заштрихованная площадь соответствуетмакс-

терму, незаштрихованная - минтерму).

                            1┌┬┬┬0┬1──0─┐

                            1├┼┼┼┤   │

                            1├┼┼┼0└1┬┬┬0┤

                            1├┼┼┼┼┼┼┼┤

                            1└┴┴┴┴┴┴┴┘

     2) Логическая сумма всех минтермов для любого заданного чис-

ла переменных равна 1.

                           25n0-1

                             V m4i0 = 1.

                            i=0

     3) Логическое произведение всех макстермов для любого задан-

ного числа переменных равно 0.

                           25n0-1

                             7L0 M4i0 = 0.

                            i=0


                              - 5 -

     4) Два неодинаковых минтерма или макстерма имеют хотя бы од-

ну переменную,  входящуюв один из них в прямой,а в другой - в

инверсной форме, следовательно

      m4i5.0m4j0 = 0, если i 7-0 j;

      M4i0 V M4j0 = 1, если i 7-0 j.

     2Основная теоремаалгебры логики0:любую булеву функцию от n

переменных можно выразить логическойсуммой  минтермов,которая

называется2 совершенной нормальной дизъюнктивной формой0, или логи-

ческим произведением макстермов,которое называется2совершенной

2нормальной конъюнктивной формой0.

     Логические функции отражают не только принцип работы некото-

рых частей ЭВМ,но и их состав, если каждой элементарной функции

соответствует реальный физический элемент. Любая сложная логичес-

кая функция может быть реализована некоторой частью ЭВМ, если эта

часть построена с помощью такого набора элементов, который реали-

зует все функции одной из функционально полных систем.Такой на-

бор называется функционально полным набором логических элементов

     Поскольку каждая функция может быть представлена в виде раз-

личных логических уравнений, каждая функция может быть реализова-

на при помощи различных  логическихсхем.Очевидно,  чтоболее

простому логическому уравнению соответствует более простая схема.

Упрощение (минимизация) функции сводится к получению ее минималь-

ной дизъюнктивной или конъюнктивной нормальной формы,т.е. такой

формы, при которой функция содержит наименьшее число переменных и

знаков логических операций.

     Существует несколько методов минимизации.Вдальнейшем  мы

рассмотрим метод непосредственных преобразований и метод диаграмм

Вейча.


                         ПЕРВЫЙ СЕМЕСТР

                           ЛЕКЦИЯ N 7

               2МЕТОДЫ МИНИМИЗАЦИИ БУЛЕВЫХ ФУНКЦИЙ

              2Метод непосредственных преобразований

     Суть данного метода заключается в том,что минимизацияис-

ходной логической функции производится путем применения к отдель-

ным членам или группам членов формулы, выражающей данную логичес-

кую функцию,  основныхзаконовалгебры логики с целью получения

минимальной формы функции, т.е. такой, которая не содержит лишних

переменных или членов.

     Лишними переменными или членами являются те, которые не вли-

яют на значение преобразуемой формулы.

     Пример:

                4_                5      4_

     x415.0x425.0x430 V x415.0x425.0x430 = x425.0x435.0(x415 0V5 0x410) = x425.0x435.01 = x425.0x43

т.е. в исходной формуле лишней являлась двоичная переменная x410.

     Примечание: произведеннаяоперация называется "склеиванием"

членов формулы.

     Действия, отвечающие методу непосредственных преобразований,

обычно проводятся в следующем порядке:

     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_04 _ _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_    _    _     _   _

     = b9c0(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 c4             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_

              x410x420x430...x4n0 V x410x420x430...x4n0 = x420x430...x4n

     Нахождение простыхимпликант  производитсяна картах путем

группировки минтермов, отмеченных единицей.

     Рассмотрим правила группировки на диаграмме для четырех  пе-

ременных, учитывая,  чтоихлегко обобщить на случай для любого


                              - 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 │ 210 │ 210 │   │

                        └───┴───┴───┴───┘

                            └───┬───┘

                                c

4_   _   0 4_

                     f(a,b,c) = ac V ab V bc

                            a

                        ┌───┴───┐

                        ┌───┬───┬───┬───┐

                      b │ _1. │   │ 210 │ _1. │

                        ├───┼───┼───┼───┤

                        │ 1 │ 1 │ 210 │   │

                        └───┴───┴───┴───┘

                            └───┬───┘

                                c

                                 4_   _   04_

                     f(a,b,c) = bc V ac V ab

.

                              - 2 -

                       2ЭЛЕМЕНТЫ И УЗЛЫ ЭВМ

                       ═══════════════════

                       2ЛОГИЧЕСКИЕ ЭЛЕМЕНТЫ

     Системой элементов ЭВМ называется функционально полный набор

логических элементов,  использующий одинаковый способ представле-

ния информации и одинаковый тип межэлементных связей.

     Система элементов чаще всего избыточнапосвоему  составу,

что позволяет  строитьсхемыс более простой топологией межэле-

ментных связей и более экономные по количеству используемыхэле-

ментов.

               Классификация логических элементов:

     1) Поспособу представления информации и типу межэлементных

связей различают элементы  импульсного,потенциального,импуль-

сно-потенциального и динамического типа.

     Примечание: в современных ЭВМприменяютсяпотенциальные  и

динамические элементы.

     2) По функциональному назначению элементы принято  разделять

на 2типовые и элементы специального назначения0. К 2типовым0 относят-

ся логические,  запоминающие и формирующие  элементы.Логические

элементы предназначены для преобразования информации,запоминаю-

щие - для ее хранения,  а формирующие элементы - для восстановле-

ния  стандартизированных значений физических параметров сигналов,

изменяющихся во время прохождения сигналов поэлектрическим  це-

пям. К элементам2 специального назначения0 относятся усилители сла-

бых сигналов,  генераторы токов и напряжений специальной формыи

другие элементы,  не изменяющие информационного содержания сигна-

лов.

     3) В зависимости от используемых физических явлений логичес-

кие элементы подразделяются на полупроводниковые, магнитополупро-

водниковые, электромагнитные и др.

          2Основные характеристики логических элементов

                Общие технические характеристики:

     - температурный диапазон,

     - надежность,

     - стоимость.

                  Специфические характеристики:

     - функциональные возможности элемента,

     - нагрузочная способность,

     - быстродействие,


                              - 3 -

     - помехоустойчивость,

     - потребляемая мощность.

     Функциональные возможности логического элемента характеризу-

ются выполняемой им операциейи  коэффициентамиразветвленияи

объединения, т.е. факторами, влияющими на структуры более сложных

схем, построенных с применением данного элемента.

     При этомпод  2коэффициентом  разветвления02n0 понимают число

входов последующих ячеек,  которые могутуправлятьсяот  выхода

данной ячейки,а под 2коэффициентом объединения0 2m0 - число входов,

которое может иметь ячейка. Величины m и n ограничиваются услови-

ями сохранения нормального электрического режима ячейки.

     2Нагрузочная способность0 в общем случаеопределяется  током,

который может  бытьотдан ячейкой во внешние цепи (нагрузку).В

случае однородных нагрузок, создаваемых входами идентичных ячеек,

нагрузочная способность оценивается коэффициентом разветвления n.

    2Быстродействие0 логического элемента определяетсяскоростями

его перехода из состояния "0" в состояние "1" и обратно. Переход-

ные процессы изменения состояния элемента состоят из двух этапов:

задержки и  формированияфронта или спада сигнала.Длительность

задержек и фронтов зависит отдинамических  свойствлогического

элемента.

     Однако для оценки быстродействия часто используют обобщенную

характеристику -2  среднее время задержки0.В этом случае моментом

поступления сигнала на ячейку считают моментдостижения  входным

сигналом некоторого определенного уровня (например,0,5 от уста-

новившегося значения). Моментом появления сигнала на выходе также

считают момент достижения выходным сигналом этого уровня.

     Так как длительности переходных процессов  привключениии

выключении транзистора в общем случае не равны, то проводят обоб-

щение и говорят о среднем времени задержки сигнала на ячейку.

     Время задержки при формировании спада

                                      t4сп

                        t5'4з5 0= t4з.сп 0+4 0─── ,

                                       2

а время задержки при формировании фронта

                                      t4фр

                        t5"4з5 0= t4з.фр 0+4 0─── .

                                       2

     Среднее время задержки на один каскад схемы

                                t5'4з0 + t5"4з

                        t4з.ср0 = ─────────5.

                                    2


                              - 4 -

    Одна из  важнейших характеристик элемента - его 2помехоустой-

2чивость0. Различают статическую и динамическую помехоустойчивость.

При определении  статической помехоустойчивости помеха рассматри-

вается как длительно действующий уровень потенциала,а при опре-

делении динамической  помехоустойчивости - как импульс определен-

ной длительности.  Устойчивость элемента к воздействию длительной

помехи меньше,чем к воздействию кратковременной помехи при оди-

наковых амплитудах. Устойчивость к воздействию динамической поме-

хи тем ниже, чем выше быстродействие элемента.

     С увеличениемстепениинтеграции элементов ЭВМ все большую

роль начинает играть такой параметр,как2 рассеиваемаямощность0.

Следует отметить, что закрытому состоянию соответствует один уро-

вень рассеивания мощности (P4з0), а открытому - другой (P4о0). Обычно

предполагают,что схемаполовинувремени  находится в открытом

состоянии, а половину - в закрытом,и определяют среднюю рассеи-

ваемую мощность следующим образом:

                              P4з0 + P4о

                          P4ср0 = ─────── .

                                   2

     Рассеиваемая мощность может зависеть как от нагрузки,  так и

от схем, включенных на входе.

  1Классификация логических элементов по типу радиокомпонентов,

           1на которых реализуются логические функции2.

     Можно выделитьследующиенаиболее  частоупотребляемые на

данный момент типы логических элементов:

     - транзисторно-транзисторная логика с диодами Шотки (ТТЛШ);

     - КМОП-логика (логика на базе комплементарных полевых  тран-

зисторов со структурой металл-окисел-полупроводник);

     - КМДП-логика (логика на базе комплементарных полевых  тран-

зисторов со структурой металл-диэлектрик-полупроводник);

     - интегральная инжекционная логика (ИИЛ, И520Л, I520L).

     Следует отметитьтакже некоторые типы элементов,которые в

данный момент уже не применяются в новыхразработках  вследствие

низкого быстродействия или большой рассеиваемой мощности.

     - резисторно-транзисторная логика (РТЛ, RTL);

     - резисторно - конденсаторнаятранзисторнаялогика  (РКТЛ,

RCTL);

     - диодно-транзисторная логика (ДТЛ, DTL);

     - транзисторно-транзисторная логика (ТТЛ, TTL);

     - транзисторная логика с эмиттерными связями (ЭСЛ, TECL).

     - транзисторная логика с непосредственными связями (DCTL).

     - МОП-логика;

     - МДП-логика (MDS).


                         ПЕРВЫЙ СЕМЕСТР

                           ЛЕКЦИЯ N 9

                       2ЭЛЕМЕНТЫ И УЗЛЫ ЭВМ

                       ═══════════════════

                       2ЛОГИЧЕСКИЕ ЭЛЕМЕНТЫ

     Электронную схему, выполняющую какие либо операции над одним

машинным словом,  называют 2узлом0 ЭВМ. Многие узлы ЭВМ строятся на

базе логических элементов.

     Общие требования к проектируемому устройству:

     - устройство должно полностью соответствовать своему функци-

ональному назначению, т.е. выполнять заданные в ТЗ функции;

     - быстродействие,энергопотребление,надежность,  устойчи-

вость к вредному воздействию окружающей среды (температура, влаж-

ность,  давление,вибрация,удары,  статическоеэлектричество,

внешние магнитные поля, электромагнитные помехи и пр.) должны со-

ответствовать заданным в ТЗ параметрам;

     - устройство должно быть максимально простым,чтобы обеспе-

чить высокое быстродействие и надежность, а также низкую себесто-

имость.

     Если устройствопроектируетсяна базе нескольких различных

наборов логических элементов,особенно в случае различной техно-

логии изготовления  (ТТЛ и ТТЛШ,ТТЛ и КМОП,ТТЛ и ЭСЛ и т.п.),

необходимо тщательно проверить этинаборы  насовместимостьво

всем рабочем  диапазонетемператури на отсутствие состязаний в

спроектированной схеме.

     Требуется проверить:

     - соответствие по номинальному напряжению питания;

     - соответствиеповходным и выходным характеристикам логи-

ческих элементов, особенно по уровням 0 и 1;

     - соответствие элементов по быстродействию;

     - соответствие по переходным процессам.

          1Основные характеристики логических элементов

     2Амплитудная передаточная характеристика0 U4вых 0=4 0f(U4вх0)  опре-

деляет формирующие  свойства логического элемента,  его помехоус-

тойчивость, амплитуду и уровни стандартного сигнала. Вид характе-

ристики зависит от типа логического элемента (ЭСЛ,ТТЛ и т.д.) и

может изменяться в определенных пределах в зависимости от разбро-

са параметров схем, изменений напряжения питания, нагрузки и тем-

пературы окружающей среды.

     2Входная характеристика0 I4вх0 = f(U4вх0) и 2выходная характеристи-

2ка0 U4вых0 = f(I4вых0) позволяют  определитьнагрузочнуюспособность

элемента,режим его работы и способ согласования переходных про-


                              - 2 -

цессов в линиях связи.

     2Импульсная (динамическая)  помехоустойчивость0- это зависи-

мость допустимой амплитуды импульсной помехи отее  длительности

U4пом0 = f(t4пом0).

                            2ТРИГГЕРЫ

     Практически все устройства ЭВМ совмещают функции переработки

и хранения информации.  Неотъемлемая часть таких устройств - эле-

мент памяти. В арифметических и логических устройствах для хране-

ния информации чаще всего используют элемент с двумяустойчивыми

состояниями - 2триггер0.

     Структуру триггера можнопредставитьв  видезапоминающей

ячейки и схему управления:

                  ┌─ ── ── ── ── ── ── ── ── ┐

                    ┌───────┐4S0┌────────┐

            E410 ───┴─┤ Схема ├─────┤ Запоми-├─┴─── Q

C─────┤ управ-│4R0│ нающая │4    _

            E420 ───┬─┤ ления ├─────┤ ячейка ├─┬─── Q

                    └───────┘     └────────┘

                  └─ ── ── ── ── ── ── ── ── ┘

  4_0  2Запоминающая ячейка0 - это схема,которая имеет два выхода Q

и Q4,0  сигналы на которых всегда противоположны (если на одном0,

то надругом1),  идвавхода - вход установки S (set) и вход

сброса R (reset).

     2Переключающий0 сигнал  повходу S устанавливает запоминающую

ячейку в состояние "1", а по входу R - в состояние "0". В зависи-

мости от типа элементов,  из которых построена запоминающая ячей-

ка, переключающим сигналом может являться либо "0", либо "1". За-

поминающую ячейку называют также2 асинхронным RS-триггером0.

     2Схема управления0 преобразует информацию, поступающую на вхо-

ды E410 и E420 в сигналы,которые подаются на установочные входы за-

поминающей ячейки.  В некоторых схемах выходные сигналы триггерра

поступают на  входсхемыуправления - на рисунке эти соединения

показаны пунктиром.

     Как правило,триггеры,применяемые в потенциальной системе

элементов, имеют еще один вход - вход для синхронизирующих сигна-

лов 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                 ____

     720 Q(t+1) = S(t) V R(t)5.0Q(t)

     7*

     720 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│7T0├──

                             │ │   │

                             │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 -

     Синхронный триггер можетиметьдополнительныеасинхронные

входы R4а0 и S4а0:

                4_

                S4а0 ──────────────┐

                               4_0 │  ┌───┐

                         ┌───┐ S └──┤&  │

                S  ──────┤&  7@0──────┤   7@0───┬── Q

                         │   │   ┌──┤   │   │

                      ┌──┤   │   │└───┘   │

                      │  └───┘   └─────────┐│

                C  ───┤                    ││

                      │  ┌───┐   ┌─────────┼┘

                      └──┤&  │ 4_0 │  ┌───┐  │

                         │   │ R └──┤&  ││4     _

                R  ──────┤   7@0──────┤   7@0──┴──── Q

                         └───┘   ┌──┤   │

                4_0                │└───┘

                R4а0 ──────────────┘

     Графическое обозначение синхронного однотактного RS-триггера

с асинхронными входами:

                       4_0    ┌─┬───┐

                       S4а0 ──7@0S│T├── Q

                            ├─┤   │

                          ──┤S│   │

                          ──┤C│   │

                          ──┤R│   │

                       4_0    ├─┤   │4   _

                       R4а0 ──7@0R│   7@0── Q

                            └─┴───┘

                 1Синхронные0 1двухтактные триггеры

     Синхронные двухступенчатые (двухтактные) триггеры  построены

по принципу  "master-slave"  (ведущий-ведомый).Триггерная схема

состоит из двух частей-триггеров,одновременный прием информации

в которые  запрещен.Для построения первой и второй ступеней ис-

пользуют однотактные синхронные триггеры.Информация  передается

во вторую ступень только после ее приема в первую ступень и окон-

чания синхроимпульса,  разрешающего записьинформациив  первую

ступень. Такая  последовательностьприема информации достигается

включением инвертора в цепь синхронизации для второй ступени.

.

                              - 3 -

     Все двухтактные триггеры имеют следующую общую структуру:

                  ┌─ ── ── ── ── ── ── ── ── ─┐

                       ┌──┬────┐     ┌─┬────┐

            E410 ───┴────┤E410│T   ├─────┤S│T   ├─┴─── Q

C  ──────┬─┤C │    │┌──┤C│    │4      _

            E420 ───┬──┼─┤E420│    ├──┼──┤R│    ├─┬─── Q

                     │ └──┴────┘│  └─┴────┘

                  └─ ┼─ ── ── ── ─┼ ── ── ── ─┘

                     │    ┌──┐    │

                     └────┤510 7@0────┘

                          └──┘

     Наиболее широкоеприменениев  устройствахвычислительной

техники находят двухтактные триггеры типов RS, T, D и JK.

     Рассмотрим в качестве приера схему двухтактного RS-триггера:

             ┌───┐     ┌───┐   Q'    ┌───┐     ┌───┐

     S ──────┤&  7@0─────┤&7@0──┬──────┤&7@0─────┤&  7@0──┬─── Q

          ┌──┤  410│  ┌──┤  440│  │   ┌──┤  460│  ┌──┤  480││

          │  └───┘  │  └───┘  │   │└───┘│  └───┘  │

          │         └────────┐│   │         └────────┐│

     C ───┤                  ││   │                  ││

          │         ┌────────┼┘   │         ┌────────┼┘

          │  ┌───┐  │  ┌───┐ │ 4_0│  ┌───┐  │┌───┐ │

          ├──┤&  │  └──┤&  │ │4 0Q' ├──┤&│  └──┤&  │ │4     _

     R ───┼──┤  427@0─────┤457@0─┴────┼──┤  477@0─────┤497@0─┴────4 0Q

          │  └───┘     └───┘   4_0│└───┘     └───┘

          │       ┌───┐        C  │

          └─────┬─┤&  7@0───────────┘

                └─┤  430│

                  └───┘

     Рассмотрим идеализированную временную диаграмму работы двух-

тактного 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

                  │ │  └─┴────┘│  └─┴────┘ │

                  │ └────────────┼───────────┘

                  │      ┌──┐   │

                  └───────┤510 7@0───┘

                          └──┘

        Графическое изображение асинхронного T-триггера:

                            ┌─┬────┐

                            │ │TT├──

                          ──┤T│    │

                            │ │    7@0──

                            └─┴────┘

.

                              - 2 -

                  Схема синхронного T-триггера:

          ┌─────────────────────────────────┐

          │  ┌───┐                          │

          └──┤&  │     ┌───┐         ┌───┐│  ┌───┐

        ┌────┤   7@0─────┤&7@0──┬──────┤&  7@0──┼──┤&7@0──┬─── Q

        │ ┌──┤  410│  ┌──┤440││   ┌──┤  460│  ├──┤  480││

        │ │  └───┘  │  └───┘  │   │└───┘│  └───┘  │

        │ │         └────────┐│   │         └────────┐│

    T ──┼─┤                  ││   │                  ││

        │ │         ┌────────┼┘   │         ┌────────┼┘

        │ │  ┌───┐  │  ┌───┐ │    │  ┌───┐  │  ┌───┐ │

        │ └──┤&  │  └──┤& │ │4 0   ├──┤&│  ├──┤&  │ │4     _

        ├────┤   7@0─────┤457@0─┴────┼──┤  477@0──┼──┤497@0─┴────4 0Q

        │ ┌──┤  420│     └───┘      │  └───┘  │  └───┘

        │ │  └───┘                │         │

        │ └───────────────────────┼─────────┘

        │         ┌───┐           │

    C ──┴───────┬─┤&  7@0───────────┘

                └─┤  430│

                  └───┘

         Графическое изображение синхронного 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

         ┌───┤  410││ ┌──┤  440│  │   ┌──┤  460│┌──┤480││

         │   └───┘  │ │  └───┘  │   │└───┘│  └───┘  │

         │          │ └────────┐│   │         └────────┐│

    C ───┤ ┌────────┘          ││   │                  ││

       │ │          ┌────────┼┘   │         ┌────────┼┘

         │ │ ┌───┐    │  ┌───┐ │    │  ┌───┐  │  ┌───┐ │

         │ └─┤&│    └──┤&│ │4 0   ├──┤&│  └──┤&  │ │4     _

         ├───┤  427@0───────┤457@0─┴────┼──┤  477@0─────┤497@0─┴────4 0Q

         │   └───┘       └───┘      │  └───┘     └───┘

         │         ┌───┐│

         └───────┬─┤&  7@0────────────┘

                 └─┤  430│

                   └───┘

             Временная диаграмма работы D-триггера:

                            T

    C               ├───────────────┤

    │       ┌───────┐       ┌───────┐       ┌───────┐

    ├───────┘       └───────┘       └───────┘       └─────

    └───────┼───────┼───────┼───────┼───────┼───────┼────── t

    D

  │                  ┌─────────────────┐

    ├──────────────────┘                 └────────────────

    └───────┼───────┼───────┼───────┼───────┼───────┼────── t

                                     27t              037t

    Q                               ├──┤├───┤

    │                               │  ┌────────────────┐

    ├──────────────────────────────────┘                └──

    └───────┼───────┼───────┼───────┼───────┼───────┼────── t

.

                              - 4 -

             D-триггер с цепями сброса и установки:

                            ┌─┬────┐

                          ──7@0S│TT  ├──

                            ├─┤    │

                          ──┤D│    │

                          ──┤C│    │

                            ├─┤    │

                          ──7@0R│    7@0──

                            └─┴────┘

                           1JK-триггеры

     JK-триггер имеет обычно не менее 5 входов: входы асинхронный

установки Sи сброса R,вход тактовых импульсов C и управляющие

входы J и K.

     При подаче 2единиц0 на входыJи  KJK-триггер работает как

триггер со счетным входом:при поступлении каждогоимпульса  на

вход 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

         ┌───┤  410│  ┌──┤  440│  │   ┌──┤  460│  ├──┤  480││

         │   └───┘  │  └───┘  │   │└───┘│  └───┘  │

         │          └────────┐│   │         └────────┐│

         │                   ││   │                  ││

         │          ┌────────┼┘   │         ┌────────┼┘

         │   ┌───┐  │  ┌───┐ │    │  ┌───┐  │  ┌───┐ │

         ├───┤&  │  └──┤&  │ │4 0   ├──┤&  │  ├──┤&  │ │4     _

    K ───┼───┤   7@0─────┤457@0─┴────┼──┤  477@0──┼──┤497@0─┴────4 0Q

         │┌──┤  420│     └───┘      │  └───┘  │└───┘

         ││  └───┘                │         │

         │└───────────────────────┼─────────┘

         │        ┌───┐           │

    C ───┴──────┬─┤&  7@0───────────┘

                └─┤  430│

                  └───┘

.

                              - 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 -

     Рассмотрим в качествепримераструктуру  четырехразрядного

запоминающего регистра, работающего в парафазном коде:

                             ┌─┬───┐

                     D41 0─────┤S│TT ├───── Q41

                     4_0     ┌─┤C│   │4      _

                     D41 0───┼─┤R│   7@0───── Q41

                           │ └─┴───┘

                           │ ┌─┬───┐

                     D42 0───┼─┤S│TT ├───── Q42

                     4_0     ├─┤C│   │4      _

                     D42 0───┼─┤R│   7@0───── Q42

                           │ └─┴───┘

                           │ ┌─┬───┐

                     D43 0───┼─┤S│TT ├───── Q43

                     4_0     ├─┤C│   │4      _

                     D43 0───┼─┤R│   7@0───── Q43

                           │ └─┴───┘

                           │ ┌─┬───┐

                     D44 0───┼─┤S│TT ├───── Q44

                     4_0     ├─┤C│   │4      _

                     D44 0───┼─┤R│   7@0───── Q44

                           │ └─┴───┘

                      C ───┘

     На принципиальнойсхеме данный регистр изображается следую-

щим образом:

                             ┌──┬────┐

                           ──┤S410│RG├──

                           ──┤R410│    7@0──

                           ──┤S420│    ├──

                           ──┤R420│    7@0──

                           ──┤S430│    ├──

                           ──┤R430│    7@0──

                           ──┤S440│    ├──

                           ──┤R440│    7@0──

                           ──┤C │    │

                             └──┴────┘

.

                              - 3 -

     Регистры сдвига строятся на базе двухтактных триггеров RS, D

или JK.Рассмотрим в качестве примера реверсивный сдвигающий ре-

гистр, построенный  набазеD-триггеров с коммутаторами на базе

логических элементов И-ИЛИ-НЕ:

  D410                 Q410   D420              Q420   D4n0              Q4n

│                  │    │               │    │               │

  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 ───────────┴────────────────────┴────────────────────┘

     Обозначения:

D410-D4n0 - информационные входы;

Q410-Q4n0 - информационные выходы;

C - вход синхронизации;

R - вход сброса;

V - разрешение записи информации (параллельного кода);

DR - сдвиг вправо;

DL - сдвиг влево;

.

                              - 4 -

     На принципиальнойсхеме данный регистр изображается следую-

щим образом:

                             ╤┌──┬──┬──┐

                           ──┤D410│RG│Q410├──

                           ──┤D420│ │  │

                           ──┤D430││Q420├──

                           ──┤D440││  │

                             ├──┤  │Q430├──

                           ──┤DR│  ││

                           ──┤DL│  │Q440├──

                           ──┤V │││

                           ──┤C │  ││

                             ├──┤  ││

                           ──7@0R │  ││

                             └──┴──┴──┘


                         ПЕРВЫЙ СЕМЕСТР

                           ЛЕКЦИЯ N 13

                            2СЧЕТЧИКИ

     Счетчиком называется схема, выполняющая функции подсчета ко-

личества единичных сигналов,поступивших наее  вход,атакже

функции формирования и запоминания некоторого кода, соответствую-

щего этому количеству.  Счетчикитакжеиногда  могутвыполнять

функции приема и выдачи кода.

     Схемы счетчиков можно классифицировать по следующим  призна-

кам:

     1) Основание системы счисления.Ввычислительныхсистемах

используются двоичные и десятичные счетчики.Двоичные счетчики в

свою очередь подразделяются на счетчики с модулем пересчета, рав-

ным 25n0,  и модулем пересчета,не равным 25n0,где n - разрядность

счетчика.

     2) Направление переходов счетчика.Счетчики приняторазде-

лять на простые (суммирующие или вычитающие), которые могут вести

счет только в одном направлении,то есть толькоприбавлять  или

вычитать входные сигналы, и реверсивные, которые в зависимости от

управляющих сигналов могут вести счет в прямом или обратномнап-

равлениях.

     3) Способ построения цепей переноса.  Различаютсчетчикис

последовательным, сквозным, параллельным и групповым переносом.

     4) Способ организации счета. Счетчики могут быть асинхронны-

ми и  синхронными.Васинхронных  счетчиках изменение состояния

счетчика осуществляется с поступлением информации только навход

первого каскада.  Всинхронныхсчетчиках  информационный сигнал

поступает одновременно на синхронные входы всех разрядов.

     5) Тип элементов, используемых для построения счетчика. Раз-

личают счетчики на импульсных, импульсно-потенциальных и потенци-

альных элементах.  Хотяв современной электронной аппаратуре ис-

пользуются все эти три типа,в дальнейшем мы будем рассматривать

только счетчики на потенциальных элементах,так как это основной

тип счетчиков, используемых в ЭВМ.

     6) Типорганизации  счетного элемента.Счетчики могут быть

построены на триггерах со счетным входом и назапоминающих  эле-

ментах с использованием логических суммирующих схем.

     Особую группу составляют счетчики,работающиепо  принципу

циклического сдвигающего  регистра (ккольцевые счетчики).  Однако

эти счетчики отличаются низкой устойчивостью к помехам и сбоями

в ЭВМ практически не применяются.

                        2Двоичные счетчики

     Схемы счетчиков могут быть построены на базе триггеров. Чис-

ло триггеров,  необходимых для построения счетчика,  определяется

по формуле:


                              - 2 -

                        n = ceil(log42 0k)

     где k -2коэффициент (модуль) пересчета0 - максимальное число

внутренних состояний, которое может иметь счетчик, ceil - функция

округления сверху до целого числа.

     Другой важной характеристикой является быстродействие. 2Быст-

2родействие0 счетчикав значительной мере определяется построением

цепей переноса.  Быстродействие характеризуется 2временем установ-

2ления кода0  навыходе счетчика T4уст0,то есть интервалом времени

между моментом поступления входного импульса и моментом окончания

самого длительного переходного процесса в счетчике.

     Если не приняты никакие меры к ускорению переносов,  то T4уст

счетчика определяется  временемсрабатываниятриггеров счетчика

t4тр0 и числом разрядов счетчика n:

                         T4уст0 = t4тр0 5.0 n

     Введение цепи сквозного переноса позволяет  сократитьвремя

установления кода до величины

                    T'4уст0 = (n-1) 5.0 t4&0 + t4тр

где t4&0 - время срабатывания схемы И в цепи сквозного переноса.

     Дальнейшее повышениебыстродействиясчетчиков  достигается

использованием цепей параллельного переноса (T"4уст0 = t4тр0) и груп-

пового переноса.В случае использования группового переноса учи-

тывается время распространения сигнала между m группами, входящи-

ми в состав счетчика:

                       T5гр4уст0 = mt4&0 + t4тр

     Разрешающая способностьсчетчикаопределяется  минимальным

временем t4р0 между двумя счетными импульсами,при котором счетчик

работает надежно.  Максимальная частота поступления  счетныхим-

пульсов f4сч0 в общем случае определяется как

                           f4сч0 = 1/t4тр

                      1Асинхронные счетчики

     Простейшие схемы двоичных счетчиков выполняются путем после-

довательного соединения триггеров со счетными входами.T-триггер

является счетчиком с K=2. Для построения счетчика с K = 25n0 требу-

ется nтакихтриггеров.  Рассмотримвкачестве  примера схему

асинхронного двоичного триггера с последовательным переносом:


                              - 3 -

                         Q410              Q420              Q43

              ┌─┬───┐    │    ┌─┬───┐    │    ┌─┬───┐    │

              │ │TT ├────┤    │ │TT ├────┤    │ │TT ├────┘

       T ─────┤T│   │    └────┤T│   │    └────┤T│   │

              │ │   │         │ │   │         │ │   │

              ├─┤   │         ├─┤   │         ├─┤   │

            ┌─7@0R│   7@0──     ┌─7@0R│   7@0──     ┌─7@0R│   7@0──

       4_0    │ └─┴───┘       │ └─┴───┘       │ └─┴───┘

       R ───┴───────────────┴───────────────┘

     Временная диаграмма работы счетчикабудетиметь  следующий

вид:

    T

    │

    │┌──┐┌──┐┌──┐┌──┐┌──┐┌──┐┌──┐┌──┐┌──┐

    └──┴──┴──┴──┼──┴──┴──┴──┼──┴──┴──┴──┴──┴──┴──┴──┴──┴──┴── t

    Q410      t4тр

    │    ─┼┼─── │           │

    │     │├─────┐     ┌─────┐     ┌─────┐     ┌─────┐

    └─────┴┴────┼┴─────┴────┼┴─────┴─────┴─────┴─────┴─────── t

    Q420             2t4тр

    │          ─┼─┼────     │

    │           │ ├───────────┐            ┌──────────┐

    └───────────┴─┴─────────┼─┴────────────┴──────────┴────── t

    Q430                          3t4тр

    │                      ─┼──┼────

    │                       │  ├───────────────────────┐

    └───────────────────────┴──┴───────────────────────┴───── t

     Основным недостаткомсчетчиков с последовательным переносом

является низкое быстродействие.

                1Синхронные счетчики со сквозным,

               1параллельным и групповым переносом

     Быстродействие счетных схем можно повысить благодаря  специ-

альной организации  цепейпереноса и подаче счетных импульсов на

все разряды счетчика одновременно.Как правило,  в такихсхемах

счетные импульсы выполняют роль импульсов синхронизации,поэтому

рассматриваемые ниже счетчики относятся к классу синхронных.

     В схеме2со  сквознымпереносом0переключение  каждого j-го

разряда JK-триггера возможно в том случае, если на его информаци-

онных входах J и K присутствует 1. В противном случае j-й триггер

находится в режиме запоминания.

.

                              - 4 -

               Q410        Q420                Q430                Q44

               │         │                 │                 │

               │         │ ┌──┐            │ ┌──┐│

               ├─────────┼─┤& ├──┬─────────┼─┤& ├──┐         │

       ┌─┬───┐ │  ┌─┬───┐│ │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-му триггеру

разрядов подаются на вход данного триггера.

                Q410            Q420              Q430             Q44

                │             │               │              │

                ├─────────────┼────┬──────────┼───┐          │

                │             ├────┼──────────┼──┐│          │

        ┌─┬───┐ │     ┌─┬───┐ │ 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Счетчики с K0 7-0 225n

     Для многих электронных устройств необходимы счетчики с моду-

лем пересчета,  отличным от целой степени двойки. Для электроныых

часов, например,  могутпотребоватьсясчетчики с коэффициентами

пересчета 3,6,7,10,24 и т.д. В ЭВМ счетчики применяются для зада-

ния сетки тактовых частот машины.

     Принцип построения счетчиков с K 7-0 25n0 заключается в исключе-

нии лишних устойчивых состояний у двоичного счетчика с K = 25n0.

     Для реализации данного принципа используются  следующиеос-

новные методы:

     1) метод блокирования переноса;

     2) принудительный порядок счета;

     3) начальная установка кода.

     Идея способа2блокированияпереноса0 заключается в том,что

при подаче импульса с номером, несколько меньшим коэффициента пе-

ресчета, блокируется поступление счетных импульсов в разряды, на-

ходящиеся в нулевом состоянии,а последующие  импульсыобнуляют

триггеры, оставшиеся в единичном состоянии,так,  что с приходом

K-го импульса все триггеры счетчика оказываются в нулевом состоя-

нии.

     Рассмотрим в качестве примера троичный счетчик:

                                 Q410                 Q42

│                  │

                    ┌────────────┼───────────────┐│

                    │ ┌─┬───┐    │       ┌─┬───┐ ││

                    └─┤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

              Q41

              │

              │     4┌─────0┐       4  0   ┌─────┐

              └─────4┴0───4──┴0─────4───0─4───0┴─────┴─────── t

              Q42

              │

              │ 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 входами имеет 25n0 выходов,так

как n-разрядный код входного слова может принимать25n0различных

значений.

         Рассмотрим в качестве примера следующую схему:

                                    ┌───┐

                             ┌──────┤5&0├───── y41

                     ┌──┐    │   ┌──┤   │

                   ┌─┤510 7@0────┤   │  └───┘

                   │ └──┘    │   │┌───┐

            x410 ────┴───────┬─┼───┼──┤5&0├───── y42

                           │ │   ├──┤   │

                     ┌──┐  │ │   │└───┘

                   ┌─┤510 7@0──┼─┼───┘┌───┐

                   │ └──┘  │ └──────┤5&0├───── y43

            x420 ────┴───────┼───┬────┤   │

                           │   │    └───┘

                           │   │    ┌───┐

                           │   └────┤5&0├───── y44

                           └────────┤   │

   └───┘

                Условное обозначение дешифратора:

                            ┌─┬──┬─┐

                            │D│DC│0├──

                          ──┤0│  │1├──

                          ──┤1│  │2├──

                            │ ││3├──

                           └─┴──┴─┘

                         2МУЛЬТИПЛЕКСОРЫ

     2Мультиплексором0 называется  схема,осуществляющаяпередачу

сигналов с одной из входных линий на выходную. Выбор входной (ин-

формационной) линии производится с помощью кода,подаваемого  на

управляющие входы мультиплексора.Мультиплексор с k управляющими

входами имеет 25k0 информационными входов.


                              - 2 -

         Рассмотрим в качестве примера следующую схему:

                                ┌───┐

                    D400 ─────────┤5&0├───┐

                          ┌─────┤   │   │

                          │     └───┘   │

                          │     ┌───┐   │

                    D410 ───┼─────┤5&0├──┐│┌───┐

                          │┌────┤   │  │└──┤510│

                          ││    └───┘  └───┤   ├─── y

                          ││    ┌───┐  ┌───┤   │

                    D420 ───┼┼────┤5&0  ├──┘┌──┤   │

                          ││┌───┤   │   │└───┘

                          │││   └───┘   │

                          │││   ┌───┐   │

                    D430 ───┼┼┼───┤5&0├───┘

                          │││┌──┤   │

                          ││││  └───┘

                          ││││

                          ││││

               ┌─┬──┬─┐   ││││

               │ │DC│0├───┘│││

          x400 ──┤0│  │1├────┘││

          x410 ──┤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 1098  76     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-0007F) и последние 16байт  (физические

адреса 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 - число 528F,смещение равно 20A1.

     Тогда припрямой адресации эффективный адрес перехода равен

20A1 + (DS)*0010.

     При регистровой косвенной адресации (с участием регистра BX)

эффективный адрес перехода 1256 + 20A1 + (DS)*0010.

     При базовойиндекснойадресации (с участием регистров BX и

SI) эффективный адрес перехода 1256 + 528F + (DS)*0010.

           ФОРМАТЫ КОМАНД МИКРОПРОЦЕССОРА 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  (DefineByte - определить байт),DW (Define Word -

определить слово),  DD (Define Doubleword-определить  двойное

слово), DQ(Define Quadword - определить 4 слова) или DT (Define

Tenbyte - определить 10 байтов).

     Операторы распределения данных имеют следующий формат:

Имя DB нач.значение, {нач.значение}, ...

Имя DW нач.значение, {нач.значение}, ...

Имя DD нач.значение, {нач.значение}, ...

Имя DQ нач.значение, {нач.значение}, ...

Имя DT нач.значение, {нач.значение}, ...

     Таким образом,каждая директива может инициировать одну или

несколько переменных соответствующего типа.

     Для задания начальных значений могут использоваться числовые

константы и символьные цепочки.Если не нужно задавать начальное

значение переменной,  то вместо константы ставится вопросительный

знак.

     Например, оператор

alpha   DW0Ah

резервирует слово памяти,  присваивает ему идентификатор alpha  и

заносит в него код 000A;

stringDB 'Привет'

резервирует 6  байтпамятии  заноситвних строку символов и


                              - 4 -

присваивает этой строке идентификатор string.

     Чтобы точно определить тип переменной,на которуюпроизво-

дится ссылка, ассемблер использует операторы BYTE PTR, WORD PTR и

DWORD PTR (указатель на байт, слово и двойное слово соответствен-

но).

     Дляинициализации  массивовприменяетсяконструкция  DUP,

которая в общем случае имеет вид:

     nDUP (нач. значение, {нач. значение}, ...)

где параметр  nзадает число повторений элементов, находящихся в

круглых скобках.

     Например, оператор

Addr    DD20 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не  производит никаких действий и применяется в

основном в программных циклах задержки.