Лекции по архитектуре эвм
Скачать 397.84 Kb.
|
Глава 1 Машинный уровень организации Форматы команд. Любая команда ЭВМ представляет собой некоторую упорядоченною последовательность битов, которая определяет: 1. Операцию, инициируемую этой командой. 2. Адреса операндов участвующих в этой операции. Поэтому в большинстве ЭВМ команда имеет операционно-адресную систему. В операционной части с точки зрения машинного представления записывается код операции. А в адресной части задается код адресов операндов. Он содержит информацию не только об адресах операндов и результата операции, но и об адресе следующей команды. Под форматом команды понимается состав, назначение и расположение отдельных полей команды. Развитие структуры происходит лишь вследствие уменьшения поля адреса (SISC процессоры). С появлением RISC процессоров произошел возврат к расширенной адресности системы команд. Говоря о базовом уровне, речь идет о SISC процессорах. Первоначально система команд имела следующий формат: A 3 :=(A 1 ) * (A 2 ) СчАК:=A 4 СчАК – счетчик адреса команд. * - операция (х) – содержимое адреса х В каждой команде задается адрес следующей команды (это самый универсальный вариант), но длина такой команды велика. При такой системе команд их можно располагать в любом порядке, но обычно стараются расположить последовательно. Такой порядок называется естественным, но при естественном расположении необходимость в поле A 4 отпадает. Следовательно, формат приобрел вид: A 3 := (A 1 ) * (A 2 ) СчАК := (СчАК)+1 Нанопрограммный уровень Аппаратура Код ОП Код адресов (операндов) КОп А3 А1 А2 А4 КОп А1 А2 А3 - 10 - Даже переход к такому формату слабо уменьшает длину команды. Большинство вычислений имеет рекуррентную схему вычислений, следовательно, систему команд можно сделать двух адресной. (A 1 ) := (A 1 ) * (A 2 ) СчАК := (СчАК)+1 Такая схема вычислений является основной для современных ЭВМ. Но развитие шло и в направление развития процессора и его внутренней памяти, это привело к тому, что в процессорах появились специальные регистры, которые всегда используются в вычислениях. АСС := (АСС) * Y Если использовать аккумуляторный принцип, то для системы команд достаточно использовать один адрес. Основная масса команд SISC процессора является одно и двух адресная. В некоторых случаях команды можно не адресовать, если команда задает операцию над фиксированными адресами (например, действие над аккумуляторами), в формате таких команд адресное поле отсутствует. Команда называется безадресной или нульадресной. Качественный сравнительный анализ показывает: 1. Короткие команды предпочтительнее длинных, так как занимают меньше памяти. Любая память ЭВМ характеризуется скоростью передачи (пропускной способностью). Если физическое быстродействие фиксировано, то количество выбираемых из памяти команд, обратно пропорционально длине команды. А значит скорость работы процессора для коротких команд больше, чем для более длинных. Короткие команды увеличивают производительность процессора. Для большинства современных ЭВМ процессор работает быстрее памяти, следовательно, чтобы обеспечить высокую производительность, нужно увеличить количество команд извлекаемых из памяти за один цикл обращения. 2. Форматы команд должны обеспечивать достаточное пространство для задания всех операций (если система компьютера включает в себя N операций n min = ] log 2 N [ - округление в большую сторону) 3. Длина команды должна быть кратна длине базовой структурной информационной единице (т.е. либо команда должна занимать целое число байт или слов, или в одном слове должно находится целое число команд). Если в одном слове не целое число команд, то либо память недоиспользуется, либо усложняются процедуры выбора команд. Кроме того, длина команды должна выбираться с учетом длины кодов символов обрабатываемых данных. 4. Длина адресного поля команды очень тесно связана с организацией памяти компьютера, а также с размером адресного пространства памяти, которую можно непосредственно адресовать в памяти компьютера. Если память включает в себя M адресных элементов, тогда минимальная длина адресного поля: m min =]log 2 M[. Если исходить от фиксированной длины адресного поля, то емкость памяти будет зависеть от того, какова минимально адресуемая единица информации. Имеется два способа решения задач при ограниченном командном слове: 1. Применением команд переменной длины. 2. Расширением кода операций. Для задания часто используемых операций, как правило, используют короткий код операций, а в сочетании с коротким адресным полем получаем короткие команды, а значит: 1. Хорошее использование памяти 2. Максимально возможная скорость обработки Для задания других менее часто используемых операций и действий, используются более длинные поля кодов (может быть без изменения длины команды). Пусть имеется двух байтная команда: (A 3 ) * (A 2 ) ⇒A 1 КОп А1 А2 КОп А1 КОп А1 А2 А3 - 11 - 0,5б 1,5б Как можно не изменяя длины команды изменить длину адресного поля? Можно запретить запись в ячейку с адресом 0000. A 1 – адрес приемника. Формат адресной части изменился, и адресное пространство возросло до 256 элементов. Но большинство команд относящихся к SISC процессорам имеет переменную длину команд: 0000 – обозначает что A 1 и A 2 возросли в два раза. Если требуется еще больше расширить адресное пространство, то можно, используя, принцип переменной длины команды, определить, что 0000 означает, что длина адресного поля, например, стала 5 байт. Как можно увеличить набор операций? Коп Например, это означает, что КОп, занимает целый байт. Следовательно, стало 31 команд (15 трех адресных и 16 двухадресных команд). Так можно продолжать и дальше. Адресация данных и команд. Любая машинная команда – машинный код, который определяет: 1. Операцию 2. Указывает на данные В адресной части команды хранится адресный код. В большинстве случаев фактическое обращение к данным происходит по физическому (исполнительному) адресу. Обычно физический адрес не совпадает с адресным полем команды, но зависит от него. В общем случае происходит преобразование из адресного кода в физический код – режим (способ) адресации. Способы адресации являются одним из основных архитектурных признаков. В настоящее время известно более двух десятков различных способ адресации и их модификации. Все известные способы адресации данных разделены на две большие группы. 1. Прямые 2. Не прямые При прямых способах адресации либо накопительный адрес операнда, либо сам операнд, находятся непосредственно по адресному коду без всякого преобразования. Не прямые способы требуют выполнения процедур формирования физического адреса по адресному коду, для этого в ЭВМ встраивается специальный адресный механизм. Прямые способы адресации. 1. Неявная адресация. В таких командах явного адресного поля нет (нуль адресная команда). Операнд задается кодом операции. Обычно такой способ адресации используется для фиксированных программно доступных регистров процессора (аккумуляторный принцип). 2. Непосредственная адресация. В адресном поле фактически указывается не адресный код, а сам операнд. Этот способ не требует дополнительных обращений к памяти за операндами, но адресное поле должно иметь длину операнда. Обычно применяется для задания констант вычисления. 3. Абсолютная (прямая) адресация – характеризуется тем, что в адресном поле, задается полный адрес памяти, где хранится операнд. В этом случае. длина адресного поля и емкость оперативной памяти связаны между собой соотношением. m = ]log 2 E m [ Если Em очень большая, то длина адресного поля в команде большая. Способ абсолютной адресации данных – тормоз в развитии применения компьютеров. Он не позволяет загружать данные в любое место памяти. В современных условиях применяются в ограниченном количестве (при загрузке драйверов). Все современные ЭВМ используют массу способов непрямой адресации. Они позволяют обеспечить мобильность программных средств. КОп 0000 А2 КОп 0000 А1 А2 0000 КОп 1 А1 А2 КОп А1 А2 А3 - 12 - Непрямые способы адресации: 1. Базирование (относительная адресация). Процедура формирования исполнительного адреса: А исп = А база + <смещение>. Для реализации этого способа в ЭВМ выделяются специальные ячейки, которые выполняют функции базовых регистров. В общем случае в ЭВМ может быть несколько базовых регистров. Тогда адресные код включает в себя два поля: В – адрес регистра базирования Disp – смещение. В общем случае исполнительный адрес формируется соотношением: (B)+Disp А исп = Disp Смещение, которое задается, может быть длины адреса, но может быть и короче. С точки зрения длины команды короткое смещение предпочтительнее. Базирование, как способ адресации требует наличие сумматора в адресном устройстве. Вследствие чего очень часто в адресных механизмах операцию суммирования сводят к операции конкатенации (присоединительная адресация). Правда в этом случае как правило накладываются определенные ограничения на регистры базирования. Связано это с тем, что базовый разряд определяет только старшие разряды исполнительного адреса, младшие разряды всегда равны нулю. А исп = (B).Disp Время вычисления адреса значительно улучшается. Любая схема базирования обеспечивает перемещение программ по памяти ЭВМ. Для ее исполнения в области памяти необходимо только установить базовый адрес. Относительная адресация облегчает задачу программирования различными программистами. В простейшем случае в компьютере регистр базирования единственен, следовательно, в адресном коде отсутствует адресация. На каждом шаге выполнения программы, как минимум необходимо два регистра базирования. Один для задания базового адреса программы, второй для базирования массивов данных. Минимальное число регистров базирования один, но реально нужно четыре-восемь. 2. Косвенная адресация. При косвенной адресации адресный код в команде содержит не адрес самого операнда, а содержит адрес памяти, где хранится адрес операнда. Можно сказать, что адресный код – это адрес адреса. В самом простом варианте исполнительный адрес при косвенной адресации имеет следующий вид: А ипс = (M[A k ]) M – адрес памяти A k – содержимое. В общем случае может использоваться много ступенчатая косвенная адресация. A k →A k1 →A k2 →...→A исп →операнд. Количество обращений к памяти для получения операнда, характеризует глубину косвенной адресации. Минимальное число обращений для получения операнда – два. Для получения исполнительного адреса не требуется арифметическая обработка. Фактически нахождение операнда – процедура целенаправленного поиска. Косвенная адресация позволяет без изменения самой команды обрабатывать ей различные данные, так как фактически другие операнды находятся в памяти, а не в команде, значит можно обрабатывать линейные структуры данных. Косвенная адресация позволяет загружать программу в произвольное место памяти. Недостатки косвенной адресации: Если указатели косвенного адреса указывают на исполнительный адрес в памяти, то резко замедляется скорость данной адресации. Обычно используют разновидность косвенной адресации, когда указатель косвенного адреса – это адрес регистра процессора (укороченная адресация). 3. Автоинкрементная, автодекрементная (индексная) адресация. К необходимости введения такого способа адресации приводят задачи обработки данных, хранящихся в последовательно расположенных ячейках памяти. При обработке таких данных, адрес данного меняется по правилу счета. Такая рекуррентная схема привела к появлению индексной адресации. В тех ЭВМ, где изменение указателя адреса при В Disp - 13 - обработке данных делается автоматически, там индексация называется автодекрементной или автоинкрементной. Название лишь указывает направление изменения адреса (+1, -1). Данный способ адресации значительно упрощает программирование вычислительных циклов, хотя исторически, изменение исполнительного адреса, могло производиться за счет изменения текущего адресного кода в команде. Поскольку согласно принципу фон Неймана команды и данные в памяти не различаются друг от друга, то над кодом команды можно выполнять все те же операции, что и над данными, но изменение адресного кода команд приводит к тому, что программа становится неперемещаемой. Но модификацию адресного кода не применяют (проблемы с отладкой при сбое), хотя такая возможность есть. Ее можно использовать в тех программах, которые загружаются в фиксированную область памяти. 4. Укороченная адресация – всевозможные способы, ориентированные на уменьшение длины команды за счет сокращения адресного кода. Для современных ЭВМ укороченная адресация привела к тому, что базовые адреса, указатели косвенного адреса, указатели индексов при индексации хранятся либо в фиксированных ячейках памяти, либо в фиксированных регистрах процессора. В последнем случае в адресном поле команды задается короткий адрес регистра. Это позволяет не только сократить длину команды, но и уменьшить количество обращений к основной памяти, так как при упорядоченной адресации указатель извлекается из регистра, что гораздо быстрее. Дополнительное обращение к памяти исключается. 5. Стековая адресация. При использовании стековой адресации, команды не имеют адресного поля (безадресные) для задания адресов операндов. Стековая адресация – очень эффективный способ и применяется в большинстве ЭВМ. Стек может реализовываться либо аппаратными, либо программными средствами. Рассмотрим стек, реализованный программно-аппаратно. Стек – некоторая область памяти в общем пространстве, доступ к ячейкам этой области осуществляется с помощью указателя стека. разгрузка загрузка вершина стека Sp – указатель стека либо указывает адрес загруженной команды, либо первой свободной ячейки. Доступ к данным в стеке, только по очереди, начиная в вершины. Помещение данных в стек – загрузка стека. Извлечение данных – разгрузка данных. Расположение данных в стеке строго упорядочено. В любой момент времени можно либо считать верхнее данное, либо загрузить поверх него другое. При каждом обращении к стеку, указатель стека автоматически корректируется на величину, равную длине данного. Данное, извлеченное из стека, как бы в стеке теряется. Для извлечения произвольного данного из стека необходимо предварительно удалить все вышележащие данные. Такой механизм не требует адресного поля в команде, команды фактически безадресные. Для обеспечения эффективной работы стека необходимо чтобы обрабатываемые данные были структурированные. Исторически стековая адресация использовалась при конструировании трансляторов. Преимущества стековой адресации: 1. Безадресные команды 2. Перемещаемость команд Недостатки стековой адресации: 1. В адресном механизме аккумуляторный узел управления. 2. При использовании стека, как средства адресации команд, возникают сложности при реализации ветвлении SP Дно - 14 - В современных ЭВМ стековый механизм является одним из основных при работе с подпрограммами, а также при организации прерываний. Адресация команд. Под адресацией команд понимается способ вычисления следующей команды. Принудительная адресация. Адрес следующей команды в самой команды. Недостатки: 1. Неперемещаемость программы. 2. Команды, с точки зрения длины формата, длинные. При написании программы в адресном поле следующей команды размещается следующий адрес, что неэффективно. Программист, как правило, располагает команды последовательно, в соседних ячейках памяти. Значит адрес следующей команды вычисляется просто по адресу текущей программы. Для этого в состав процессора вводится специальный узел (программный счетчик PC, СчК, СчАК), обеспечивающий последовательную адресацию команд (естественная адресация). Схема формирования адреса следующей команды: PC := (PC) + l k l k – длина предшествующей команды Однако, при осуществлении ветвления, в программах реализуются циклические участки программы выполняющие обращения к процедурам и подпрограммам, следовательно, естественный порядок выполнения команд, безусловно нарушается. Для этого используются специальные команды – команды передачи управления. Если в командах с естественным порядком нет адресного поля, то в командах передачи управления, адресное поле обязательно, в нем, в общем случае задается адресный код, на основе которого, при выполнении этой команды формируется физический адрес последующей команды. Способы формирования исполнительных адресов команд различны: 1. Неявная адресация. По существу адресное поле в команде управления отсутствует. Адрес следующей команды извлекается из фиксированных ячеек или адрес фиксирован. Обычно, неявная адресация используется для фиксированных причин прерывания 2. Абсолютная адресация. В адресном поле команды передачи управления, указывается полный адрес следующей команды. Более распространены непрямые способы адресации, обычно применяют три способа: 1. Относительная адресация – адресация относительно текущего адреса. В адресном поле команды задается относительный адрес перехода. Если память имеет кольцевую структуру, то только сложением можно добиться перехода в любое место памяти. Но если в распоряжении пользователя достаточно много памяти, то в этом нет необходимости. Кроме того, есть множество программ, к которым пользователи доступа не имеют, поэтому реально команды с относительной адресацией имеют упорядоченное смещение. Если величина смещения меньше разрядности адреса и смещение со знаком, то для выполнения сложения требуется дополнительное расширение второго операнда. Такая относительная адресация позволяет иметь короткие команды передачи управления 2. Косвенная адресация. В схеме косвенной адресации, память для хранения адресов не применяется. Применяется только косвенная регистровая адресация, где хранят адрес перехода. Косвенная адресация требует короткого адресного поля. Позволяет перемещать программы в любое место памяти. Если еще допустить применение относительной адресации, то исполнительный адрес следующей команды вычисляется по схеме. PC := (reg)+disp. Команда Disp>0 Disp<0 - 15 - 3. Стековая адресация. Стековая адресация применяется прежде всего при работе с подпрограммами и обслуживании прерываний. Команды передачи управления со стековой адресацией фактически безадресные. Схема работы стека, как и у данных. Стек в этом случае является универсальным и используется, как для адресации данных так и для команд. Следовательно, возникают сложности распознавания команд и данных. Типы машинных команд. Для современных ЭВМ (с CISC процессорами) имеют от 60 до 120 базовых команд. Базовая команда – команда, которая определяет в процессоре операцию, без учета способов адресации, которые могут быть применены в данной команде, не учитывая какие РОН’ы используются при выполнении программы. Общее количество команд, которое может быть в процессорах, с учетом способов адресации и регистров 250-400. Такое большое количество команд, по замыслу разработчиков, должно сокращать длину программы пользователя, следовательно, уменьшается время решения задачи. Практика же показывает, что программист всем возможным множеством команд никогда не пользуется. Обычно пользователь ограничивается некоторым подмножеством команд, которые он четко понимает и знает. В различных программах, а также в программах для различных ЭВМ, частота появления различных команд оказывается разная. Основной характеристикой любой ЭВМ команды, является ее формат. Все команды любой ЭВМ при рассмотрении разделяют по следующим признакам. 1. Функциональное назначение. 1.1 Команды передачи данных 1.2 Команды обработки данных 1.3 Команды передачи управления 1.4 Дополнительные команды 2. Адресность команды. 2.1 безадресные команды 2.2 одноадресные команды 2.3 двух адресные команды 2.4 прочие команды 3. По способам адресации 3.1 данных 3.2 команд 4. Способ кодирования операций. 4.1 Команды с фиксированным полем кода операций 4.2 Команды с расширяющимся полем кода операций 5. По длине. 5.1 однобайтные 5.2 двухбайтные 5.3 трехбайтные 5.4 многобайтные. Функциональное назначение команды определяет ее код операции. Команды передачи данных – группа команд включающая в себя три подгруппы. 1. Команды передачи кодов внутри процессора. Фактически определяет операцию копирования, т.е. создание новых данных в приемнике (dst). Значение источника (src), как правило сохраняется при командах передачи данных. Правда существуют такие команды, когда источник не сохраняется (команды пересылки). Команды регистровой пересылки, которые обычно имеются в системе команд процессора, обеспечивает либо однонаправленный обмен, либо взаимный обмен. С точки зрения длины команд, самые короткие – команды пересылки, как правило двухадресные. В отдельных случаях, команды могут быть одноадресные, если существует фиксированный регистр адресной команды, не определенный мнемоникой, а машинным форматом. - 16 - 2. Команды обмена процессора с памятью. Связаны с передачей данных из памяти в регистры и из регистров в память. Очень часто команды этой подгруппы имеют несколько другую мнемонику. ST (store) – передача в основную память. LD (load) – в регистры. Если позволяет мнемоника, то в принципе производится независимая адресация, как источника, так и приемника команд. Если используется команда MOV и возможности адресации достаточно большие, то с помощью команды MOV в отдельных ЭВМ возможна пересылка память – память. 3. Команды передачи кодов между процессором и периферией. Происходит передача данных между процессором и периферийным устройством. В ЭВМ используются два принципиально разных варианта для обмена с внешними устройствами: 1. Специальные команды ввода-вывода (in, out). Такие команды применяются, если внешнее устройство имеет автономное адресное пространство памяти. В таких командах, как правило, адресуется только один операнд, другой операнд располагается в аккумуляторе. 2. Единая команда MOV. Используется в тех случаях, если регистры внешних устройств рассматриваются как часть общего адресного пространства компьютера. Это позволяет оперировать с внешними устройствами, как с обычными ячейками памяти компьютера. Разделение внешних устройств и памяти производится на аппаратном уровне. Совмещенное адресное пространство повышает гибкость программирования работы с внешними устройствами, уменьшает набор команд, но несколько уменьшает размеры доступной основной памяти. Наличие единой команды приводит к некоторому увеличению общей длины команды. Все команды передачи данных не формируют и не изменяют значения признаков результата операций. Команды обработки данных. Эта группа команд самая большая и самая главная. Разделяется в зависимости от операций, которые выполняются над данными: 1. арифметические 2. логические 3. команды сдвига 4. команды обработки строк. 1. Базовые арифметические команды предназначены для задания арифметических операций над какими-то операндами. Любая арифметическая операция двухместная (пример: ADD dst,src; Схема вычислений: dst:=(dst) * (src) (dst) * (src) ⇒dst). Если использовать аккумуляторный принцип, то ACC:=(ACC) * (src). Команды арифметических операций формируют практически всегда признаки результата операций. Базовой арифметической операцией является арифметическое сложение (сложение двоичных кодов, т.к. сложение без знаковое). Большинство ЭВМ не ограничиваются операцией сложения, имеется еще вычитание двоичных кодов (SUB dst,src). Эта операция не коммутативная. Сама по себе команда вычитания двоичных кодов обеспечивает вычитание без знаковых кодов. Но сформулировав должным образом коды можно и обрабатывать данные со знаком. Если обрабатывать многобайтные данные, то т.к. система счисления двоичная позиционная, то обработка начинается с младшего разряда. Как правило, для этих случаев имеются специальные команды (ADC dst,src; SBB dst,src; Схема вычисления dst:=(dst)*(src) ± (CY)). Если в арифметических операциях могут участвовать операнды разной длины, то предварительно короткий операнд увеличивается до длины длинного (для целочисленной арифметики), причем здесь идет выравнивание по правому краю, а расширение идет с помощью знака. Это может реализовываться автоматически, либо за счет команд расширения знака (SXT). Как правило, расширение команды происходит в фиксированном регистре, следовательно, эти команды безадресные. Если этого нет, нужно писать специальные процедуры расширения. Операция сравнения кодов (CMP dst,src). По содержанию это команда вычитания. Фактически схема вычисления (dst)-(src). Все - 17 - признаки результата по этой команде формируются, а результат никуда не заносится. Однооперандные арифметические команды. Т.к. второй операнд имеет фиксированное значение (как правило, оно =1), тогда команды INC dst; DEC dst; , а схемы вычислений dst:=(dst) ±1. Эти команды очень используемы при разработке счетчиков, индексов. Не применимы для многобайтных данных, позволяют сохранить признаки для следующих ветвлений. Команды умножения и деления. В системах команд малых ЭВМ эти команды отсутствуют, но если в системе команд имеются эти команды, то они применяются для беззнаковых данных. Формат команды: MUL dst,src; DIV dst,src; Если взять команды ADD и SUB, то форматы результата и операндов практически совпадают, здесь же они не совпадают принципиально. Для хранения произведения обычно используются фиксированные регистры, чаще всего это аккумулятор с расширителем. Аналогично для целочисленного деления. В общем случае делимое имеет двойную длину, следовательно, как правило, приемник результата тоже фиксированный регистр (аккумулятор с расширителем). Очень часто в системах команд вводят команды умножения и деления с учетом знака (IMUL dst,src; IDIV dst,src;). Эти команды обычно ориентированны на использование базовых форматов компьютера. Для обработки многобайтных данных при умножении и делении, сначала делают декомпозицию, а затем строить умножение или деление многобайтных данных. Если машина ориентирована на научно технические расчеты, то требуются операции над данными с плавающей запятой и там они имеются. Говоря о малых ЭВМ, то, собственно говоря, команд с плавающей арифметикой нет. Но операция сложения и вычитания выполняются подпрограммами или с помощью подпроцессора. Команды десятичной арифметики. Основу десятичной арифметики в любых ЭВМ составляют команды двоичной арифметики. Обычно к эти командам относят команды десятичной коррекции. Обычно эти команды зависят от того, какой формат используется (упакованный или неупакованный). Не зависимо от формата, команды основаны на аккумуляторном способе (т.е. команды десятичной коррекции безадресные). В этом случае десятичная обработка состоит из двух фаз: 1) соответствующее двоичное действие 2) коррекция с учетом десятичного числа. 2. Команды логических операций. Логические команды в системе команд ЭВМ играют не только вспомогательную роль, но в логических задачах могут быть основными операторами обработки. Для этого система логических операций в ЭВМ должна быть функционально полной. Как правило, а систему команд закладываются избыточные логические операции. Операции выполняются побитно и одновременно справа на лево. Команды логической обработки одно и двух операндные. Одноместную операцию реализует отрицание: NOT dst; Схема dst:= (dst). Двухоперандные логические операции реализуют: &, ∪, ⊕. AND dst,src; OR dst,src; XOR dst,src; dst:=(dst) * (src);. Чаще всего логические операции применяются для решения трех задачек. 1. Маскирование и выделение определенных разрядов операндов. Реализуется с помощью операции конъюнкции ( &) с заданной маской 2. Формирование требуемых значений в требуемых битах (с помощью ∪). 3. Инвертирование определенных битов (с помощью ⊕) Логические операции избирательно действуют на флаги, т.е. часть флагов после выполнения операции не изменяются (OVR:=0; CY:=0), некоторые могут иметь неопределенное значение (AF:=?). В системе команд логических операций еще существуют команды (TEST dst,src; Схема (dst) &(src)). В следствии выполнения этой операции, результат никуда не записывается, но формируются все флаги. 3. Команды сдвигов. Все реализуемые команды сдвигов могуи быть разделены по признакам: 1. вид сдвига (арифметический или логический) 2. направление сдвига 3. характер сдвига (простой или циклический) 4. по количеству разрядов, на которое сдвигается операнд после выполнения операции. - 18 - Формат команды содержит как минимум три поля. Опр. Под логическим сдвигом понимается сдвиг числового кода операнда без учета его числового эквивалента. Опр. Арифметический сдвиг – сдвиг числового кода операнда с учетом его числового эквивалента. В том случае если для представления числовых значений не используются специальным образом формируемые коды (т.е. данные беззнаковые), то различий между логическим и арифметическими сдвигами нет. Если же для представления числовых значений с учетом знака, применяются специальные коды (прямой, обратный, дополнительный), то арифметический сдвиг принципиально отличается от процедуры логического сдвига. Пример: 1. Логический сдвиг. Е5 = 11100101 АСС:=L2(АСС) результат: Точная запись: АСС:=L2(АСС(5:0)).00 Правый сдвиг аналогично. Кольцевой сдвиг на 2 бита: АСС:=L2(АСС(5:0)).АСС(7:6) 11 2. Арифметический сдвиг. Сдвиг числа влево и вправо соответствует делению или умножению числа на основание СС. 11100101 двоичный код числа –27. При арифметическом сдвиге влево 00101 сдвиге вправо: 11001 в дополнительном коде. 0> |