Студопедия

КАТЕГОРИИ:

АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Специфичные для микропроцессоров




В выпускаемых микропроцессорах часто можно встретить команды, которых нет в нашем иллюстративном микропроцессоре. Одни из них являются просто разновидностями команд нашего микропроцессора, другие более удобны с точки зрения программирования, третьи расширяют вычислительную мощь микропроцессора. Не ставя задачи рассмотреть все возможные виды команд, мы тем не менее приведём наиболее характерные из них.

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

В иллюстративном процессоре все арифметические и логические команды работали с операндами, либо находящимися на регистрах микропроцессора, либо адресуемыми косвенно при помощи регистров Н и L. Во многих микропроцессорах встречаются арифметические и логические команды с прямой адресацией операнда в главной памяти. По такой схеме команда сложения, например, прибавляет содержимое ячейки памяти к содержимому внутреннего регистра, служащего ак­кумулятором, и помещает результат во внутренний регистр. При зада­нии в команде прямого адреса операнда в главной памяти длина коман­ды, естественно, возрастает.

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

Команды условных переходов

В нашем микропроцессоре выбор направления вычислений вы­полняется с помощью шести команд условных переходов, в которых анализируется три условия: равно ли нулю содержимое аккумулятора, положительно ли оно и равен ли нулю бит триггера переноса. Во мно­гих микропроцессорах, помимо перечисленных, анализируются сле­дующие условия:

1. Переполнение при арифметических операциях.

2. Четность (или нечетность) числа единиц в содержимом регистра.

3. Строгая положительность содержимого регистра (положительно и не равно нулю).

4. Различные внешние условия, задаваемые сигналами на спе­циальных входных линиях.

Во многих микропроцессорах команды условных переходов реа­гируют на состояние отдельных флажковых триггеров.

Значения этих триггеров устанавливаются в момент выполнения определенных опе­раций. Например, может существовать флажок знака или флажок чет­ности. На состояние этих флажков влияют только арифметические и (или) логические команды, тогда как другие команды, например за­грузка аккумулятора, оставляют их неизменными. Таким образом, состояние каждого флажкового триггера будет отражать не обязатель­но текущее состояние того или иного регистра, а то его состояние, ко­торое было получено в результате выполнения последней из команд, принадлежащих некоторой категории. Этот подход заметно отлича­ется от принятого нами в иллюстративном микропроцессоре с двумя условиями N и Z, характеризующими состояние аккумулятора.

Обычно флажки состояний в микропроцессорах объединяются в специальный регистр. Содержимое этого регистра называется словом состояния программы и анализируется во всех командах условного перехода. Обычно предусматривается возможность передачи слова состояния программы на другие регистры микропроцессора или в главную память. В частности, слово состояния программы может сох­раняться в стеке при вызове подпрограммы. В этом случае, даже если подпрограмма изменит слово состояния программы, при возврате из подпрограммы его можно восстановить.

Помимо (или вместо) условных переходов, в некоторых микропро­цессорах применяются другие команды, позволяющие выбирать на­правление вычислений. О командах условного пропуска мы говорили в разд. 4. Можно также упомянуть команды условного перехода на подпрограмму и условного возврата из подпрограммы.

Команды обработки данных

Операции, выполняемые в иллюстративном микропроцессоре при помощи арифметических и логических команд, являются базисными и встречаются в большинстве микропроцессоров. В некоторых микро­процессорах, кроме того, предусмотрены команды десятичной ариф­метики, двоичного умножения, двоичного деления и других операций.

Десятичная арифметика встречается в системе команд многих ми­кропроцессоров. Десятичные числа, как правило, представляются в коде 8421 BCD с четырехбитовыми цифрами, размещаемыми в слове данных вплотную друг к другу. Например, в микропроцессоре с вось­мибитовым словом каждое слово интерпретируется как двузначное десятичное целое без знака.

Десятичное сложение обычно выполняется с помощью двоичного сложения и последующей коррекции результата. Для коррекции сначала определяются десятичные разряды, в которых выполняется одно из двух условий: (1) десятичная цифра в двоичной системе превышает 9 или (2) возникает перенос из старшего двоичного разряда цифры при двоичном сложении. К каж­дому такому десятичному разряду прибавляется корректирующая циф­ра 6, причем это сложение также выполняется обычным образом в двоичной системе с распространением всех переносов.

Реализуется описанная процедура в микропроцессорах обычно од­ним из двух способов. В первом случае предусматривается команда десятичного сложения, которая в процессе выполнения осуществляет и двоичное сложение, и коррекцию. Во втором — предусматривается отдельная команда десятичной коррекции (decimal-adjust instruction). В этом случае при десятичном сложении сначала выполняется обыч­ная команда двоичного сложения, оставляющая результат в регистре, а затем выполняется команда десятичной коррекции.

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

Умножение и деление — это относительно сложные операции, и аппаратно они реализуются лишь в немногих микропроцессорах. Обычно эти операции выполняются над двоичными целыми числами без знаков. Как правило, по команде умножения перемножается со­держимое двух регистров, и результат двойной длины запоминается в паре регистров. При делении делимое обычно задается парой регист­ров, а делитель — одним. Целое частное при этом помещается в один регистр, а остаток — в другой. Перед выполнением деления, однако, происходит проверка на возможное переполнение частного. Перепол­нение происходит в том случае, когда для представления частного требуется больше разрядов, чем содержится в одном регистре. Тест переполнения можно провести, сравнивая делитель со старшей поло­виной делимого. Переполнения частного не произойдет, если делитель не равен нулю и по крайней мере вдвое превышает старшую половину делимого.

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

 

 










Последнее изменение этой страницы: 2018-04-12; просмотров: 241.

stydopedya.ru не претендует на авторское право материалов, которые вылажены, но предоставляет бесплатный доступ к ним. В случае нарушения авторского права или персональных данных напишите сюда...