Главная -> Книги

(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) (8)

рандов и приемником результата всегда является аккумулятор, который явно к команде не адресуется. Например, в МП КР580 команда сложения содержимого аккумулятора А и регистра г ADDr обеспечивает следующее: (А) + + (г)->(А).

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

+5io=01012=0000 01012=0000 0000 0000 OIOI2 или

-5i3=101 12=11 11 10112=1111 1111 1111 IOII2.

Во многих процессорах имеется команда расширения знака SXT (sign extend).

Сравнение кодов выполняется с помощью команды вычитания или чаще специальной команды сравнения СМР dst, src. При этом содержимое источника и приемника не изменяется, а для анализа результата сравнения операндов (больше, меньше, равно) команда СМР формирует признаки результата операции. Если использовать маскирование, то можно сравнивать отдельные биты двух операндов.

Арифметические однооперандные операции увеличения на 1 (инкремент) и уменьшение на 1 (декремент) являются распространенными операциями для организации счетчиков при просмотре таблиц. Эти операции обеспечиваются командой INC dst, под действием которой (dst) : = :=(dst) + l, и командой DEC dst, под действием которой (dst): = (dst) - 1. Операндами в этих командах может быть содержимое регистров или ячеек памяти в некоторых процессорах. Следует заметить, что обычно команда INC dst не эквивалентна команде сложения с непосредственным операндом ADD dst,Фt:l с точки зрения формирования флажков: ADD влияет на признак переноса С, а INC не изменяет его. Это обеспечивает правильное выполнение условных переходов:

REP:

DEC CNT ; (CNT) := (CNT)-l;

BNE REP ; перейти к REP, если (CNT)#0.



Адрес

Число и направ-

операнда

ление сдвига

• • •

• • •

• • в

Рис. 2-6. Форматы команд сдвига: я обобщенный форм.нт команды сдвига; б - логический сдвиг влево; в - логический сдвиг вправо; г-арифметический сдвиг влево; д - арифметический сдвиг вправо

Эта проблема возникает при выполнении арифметических операций сложения (вычитания) с повышенной точностью, умножения, деления. В таких циклах необходимо сохранить значение признака С, поэтому команды INC и DEC не изменяют С. В процессорах СМ введена команда «вычитание единицы и ветвление» SOB, которая объединяет команды DEC и BNE (условный переход по признаку «не равно нулю») и не изменяет значения признаков.

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

В подгруппу логических двухоперандных команд входят команды, реализующие операции логического умножения AND dst, src, логического сложения OR dst, src, исключающего ИЛИ (неравнозначности) XOR dst, src. В процессорах СМ нет команды AND, а имеется команда проверки разрядов BIT sec, dst (bit test), которая выполняет логическую операцию (src) Л (dst), формируя признаки N, Z в соответствии с данной операцией. При этом (src) и (dst) не изменяются. Такая команда может быть использована для проверки любого из разрядов dst. Например, команда В1Т4ФЗО, R3 обеспечивает проверку 3-го и 4-го разрядов R3.

Команда BIC src, dst (bit clear) сбрасывает разряды dst, соответствующие 1 в src, т. е. она эквивалентна логической функции запрета (src) Л (dst). Логические операции позволяют эффективно обрабатывать отдельные биты, когда в слове данных упаковано много булевых переменных (флажков).



Группа команд обработки данных содержит также команды логического и арифметического сдвига кодов на один или несколько разрядов, хранящихся в регистрах или аккумуляторе процессора, а для некоторых ЭВМ и в ячейках памяти. Логический сдвиг кода может выполняться вправо или влево, быть простым (с потерей сдвигаемых разрядов) или циклическим через перенос. Обобщенный формат команды сдвига представлен на рис. 2-6, а. КОП определят тип сдвига: логический или арифметический, простой или циклический, направление сдвига. Код числа сдвигов может храниться в поле команды или в регистре, в соответствии с этим команды многократного сдвига иногда называют статическими или динамическими.

Однако обычно в 8- и 16-битных ЭВМ из-за ограничений разрядности слова в команде поле, определяющее число сдвигов, отсутствует и сдвиг выполняется на один разряд вправо или влево в соответствии с КОП. Для выполнения сдвига на несколько разрядов команда в программе повторяется требуемое число раз или организуется цикл. Поле источника операнда определяет, в каком регистре или аккумуляторе необходимо сдвинуть код. Пример реализации команд левого ROL R и правого ROR R циклического сдвигов содержимого регистра R приведен на рис. 2-6, б, в. Если сдвигается только содержимое аккумулятора, как это имеет место в МП К580, то в команде поле R отсутствует.

Кроме команд логического сдвига некоторые ЭВМ имеют команды арифметического сдвига. При арифметическом сдвиге кода вправо знаковый разряд не сдвигается. На рис. 2-6, г, д представлены примеры выполнения команд арифметического левого и правого сдвигов в процессорах СМ. При выполнении левого арифметического сдвига знаковый разряд сдвигается в триггер переноса, а остальные разряды сдвигаются на один разряд влево, что при повторном сдвиге приводит к потере знакового разряда.

2-5. КОМАНДЫ ПЕРЕДАЧИ УПРАВЛЕНИЯ И ДОПОЛНИТЕЛЬНЫЕ КОМАНДЫ

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

Простейшей командой управления программой является команда безусловного перехода (JMP), которая загружа-



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