Главная - Литература

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 [123] 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169

Регистр флагов, называед1ый также регистром состояния, имеет несколько не зависимьй друг от друга однобитовых ячеек. (В регистре флагов чжлр однобитовых ячеек равно числу разрядов остальных регистров ЦП, но в нем используются лишь некоторые ячейки.)

Флаг знака SF равен старшему биту результата: 1-для отрицательного числа и О - для положительного.

Флаг нуля ZF устанавливается в 1, если в результате выполнения операции получается нуль во всех разрядах, и в О, если результат операции отличен от нуля.

Флаг переноса CF при сложении устанавливается в 1, если возникает перенос из старшего бита, и в О, если переноса нет.

Флаг переполнения OF устанавливается в 1, если возникает переполнение.

Это наиболее употребительные флаги состояния. Кроме этих флагов в регистре состояния могут быть и другие.

Стек - это память из нескольких регистров с последовательным доступом, организованным по принципу «последним вошел - первым вышел». Этот принцип аналогичен принципу закладки и извлечения монет в пружинном металлическом портмоне. В таком портмоне монеты располагаются одна над другой. Причем последняя вложенная монета вынимается из него первой. Стеки используются для временного запоминания информации и последующего считывания ее в обратном порядке. Доступ к стеку производится через специальный регистр - указатель стека. В некоторых случаях стековая память эффективнее обычной памяти с произвольным доступом. Она дополняет, но не заменяет последнюю.

Кроме регистров и АЛУ в ЦП имеется устройство управления и синхронизации.

15.3. КОДИРОВАНИЕ ИНФОРМАЦИИ

Вся информация в компьютере закодирована в двоичной форме. Она передается в виде последовательных посылок, называемых машинными словами, состоящих из одновременно передаваемых по п параллельным линиям п бит информации. Длина машинного слова обычно равна одному или двум байтам, т. е. « = 8 или 16. Совершенно одинаковые слова, состоящие из одинакового чередования единиц и нулей, могут быть адресом, числом или командой. Например, слово, состоящее из двух единиц, впереди которых стоят 14 нулей, может означать число 3, адрес ячейки памяти с номером 3 и команду, требующую определенного действия, например сложить. Смысл информации зависит от того, в каком из регистров или в какой ячейке памяти она находится.

Ранее, в § 14.17 и 14.18, кратко описаны некоторые виды кодов: обратный, дополнительный и двоично-десятичный. В компьютерах, кроме того, используются восьмеричный (октальный) и шестнадцатеричный коды.



При восьмеричном коде по аналогии с десятичным используются восемь цифр десятичного кода О-7. Например, нетрудно понять, что 10io=128; 15ш=178; 29io=358.

Для шестнадцатеричного,кода используются десять цифр десятичного кода О-9, а вместо цифры 10 используется латинская буква А, вместо Ию-буква В. Далее 12io = C; 13io = D; 14io = E и, наконец, 15io = F. Отсюда следует, что 16io=10i6; 17io=lli6; 31io= lFi6-

В компьютерах восьмеричный и шестнадцатеричный коды применяются по двум причинам. Во-первых, числа 8 и 16 кратны 2 и удобны с точки зрения бинарного принципа построения компьютера. Во-вторых, они облегчают запись и запоминание многоразрядных двоичных чисел. Для перевода произвольного 16-разрядного бинарного числа, например 0101 1101 1111 ОНО, в шестнад-цатеричное его можно записать в виде четырех 4-разрядных групп и каждую группу обозначить соответствующей ей шестнадцатерич-ной цифрой. Тогда получим 5DF6i6.

Мы рассмотрели различные способы кодирования числовой информации. Буквы А, В, С, D, Е и F в шестнадцатеричной системе по существу не буквы, а цифры шестнадцатеричной системы 10, 11, 12, 13, 14 и 15. Однако в компьютерах приходится кодировать не только числа, но и слова, записанные буквами, а следовательно, и сами буквы.

Широко применяется двоичный восьмеричный код ASCII (American Standart Code for Information Interchange) - американский стандартный код для обмена информацией. Так, при нажатии клавиши на терминале компьютера с какой-либо буквой в машину вводится восьмибитовая комбинация, соответствующая данной букве.

15.4. КОМАНДЫ МИКРОПРОЦЕССОРА

Командой в компьютере называют машинные слова, записанные в двоичном коде, которые после декодирования указывают ЦП, что он должен делать. Число команд в микропроцессорах измеряется несколькими десятками. Например, микропроцессор КР580 имеет 78 команд, а микропроцессор KM18I0 - 91 команду.

Команды можно классифицировать по различным признакам. Дадим представление о структуре команды. Команда содержит код операции, указывающий ту операцию, которая должна быть выполнена, и два адреса, определяющие данные, или операнды, участвующие в операции. На рис. 15.8 схематически изображена команда в виде 16-разрядного числа, где старшие биты 15-12 задают код операции КОП, а остальные биты указывают адреса источника и приемника информации. Например, код операции

а пп es о

Аврее

Адрес

Рис.

15.8. Формат двухадрес

источника

приемника

команды



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

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

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

Арифметические и логические команды. Это команды сложения, вычитания, умножения, деления и выполнения логических операций И, ИЛИ, Исключающее ИЛИ и НЕ.

Команды сдвига. Для выполнения ряда вычислений требуется сдвиг битов числа влево или вправо на один или несколько разрядов. Эта операция выполняется в сдвиговом регистре (см. рис. 14.46). Пример команды сдвига показан на рис. 15.9. Биты 3 - О указывают число и направление сдвига. Например, если первоначальное число по указанному в команде адресу операнда равно 10101110, то при логическом сдвиге вправо на две позиции получим число 00101011, а при сдвиге влево также на две позиции получим число 10111000. Из этого примера видно, что при сдвиге вправо два старших разряда становятся нулями, а все число сдвигается вправо. При этом два младших бита первоначального числа исчезают. При сдвиге влево заменяются нулями два младших бита, все число сдвигается влево, а исчезают два старших бита первоначального числа.

Выше описан логический сдвиг. При арифметическом сдвиге, например, вправо исчезают лишь младшие разряды. Старшие освобождающиеся разряды отрицательных чисел, всегда обозначаемые единицей в старшем разряде, при сдвиге заменяются единицами, а положительных - нулями. Например, первоначальное число 10101110 является отрицательным. При арифметическом сдвиге вправо на две позиции оно становится равным 11101011, т. е. остается отрицательным. Если сдвигается на две позиции положительное число, равное 01110001, то после сдвига получим 00011100.

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

Адрес

Число

операнда

сддигод

12 ii

Лдрее перехода

Рис. 15.9. Формат команды сдвига

Рис. 15.10. Формат команды безусловного перехода



0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 [123] 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169



0.0074