Главная  Микропроцессорные системы 

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

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

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

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

При необходимости произвести требуемые вычисления осуществляется вызов подпрограммы/ она исполняется, после чего производится возврат в основную программу. Эти операции реализуются с помощью команд типа CALL (вызов) и RET (RETURN- возврат). Оба типа этих команд могут быть как безусловными, т. е. исполняемые всегда, так и условными, т. е. исполняемыми при реализации некоторых условий относительно результатов промежуточных вычислений. К безусловным командам относятся команды CALL (вызов безусловный) и RET (возврат безусловный), к условным - СС (вызов по переполнению), CNC (вызов по отсутствию переполнения), CZ (вызов по нулю), CNZ (вызов по отсутствию нуля), СР (вызов по плюсу), СМ (вызов по минусу), RC (возврат по переполнению), RNC (возврат по отсутствию переполнения), RZ (возврат по нулю), RNZ (возврат по отсутствию нуля), RP (возврат по плюсу), RM (возврат по минусу) и ряд других. Данные условия имеют тот же смысл, что и в командах условного перехода, поэтому здесь будут рассмотрены только безусловные команды. Пример использования команд типа CALL и RET приведен в табл. 2.9.

Основная программа хранится в ячейках памяти, расположенных в верхней части таблицы. Подпрограмма размещена в ячейках с номерами 200-214.

После того как счетчик команд извлечет из памяти очередную команду, хранящуюся в ячейке 50, она пересылается в регистр команд и дешифрируется. Адрес ячейки 51 возврата в основную программу запоминается в специальном регистре. После этого в счетчик



Таблица 2.9

Ячейка

Содержимое Примечание

Эта команда- записывает адрес S1 в специальный регистр памяти и передает управление команде, расположенной д ячейке ZOO

SO SI

201 и

CALL 200

ADD 12

Пердая команда подпрограммы

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

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

Оперативные команды. Команды этой группы оперируют всего с одним операндом, хранящимся, как правило, в одном из регистров ЦП (аккумуляторе, регистре



переполнения или рабочем регистре). Результат выполнения операции остается в том же регистре. Основными оперативными командами являются команды типа RRC (кольцевой сдвиг содержимого аккумулятора вправо), RLC (кольцевой сдвиг содержимого аккумулятора влево), RAL (кольцевой сдвиг содержимого аккумулятора влево через регистр переполнения), RAR (кольцевой сдвиг содержимого аккумулятора вправо через регистр переполнения), INR (увеличение содержимого регистра

ij Af 4j 2 ;

Рис. 2.4. Выполнение Рис. 2.5. Выполнение коман-команды RLC ды RAL

или ячейки памяти,на единицу), DCR (уменьшение содержимого регистра или ячейки памяти на единицу), СМА (получение обратного кода числа, хранящегося в аккумуляторе), STC (установка единицы в регистре переполнения), CMC (обращение содержимого регистра переполнения). Рассмотрим подробнее операции, выполняемые этими командами.

RLC (кольцевой сдвиг влево). По этой команде аккумулятор замыкается в кольцо так, как показано на рис. 2.4, и производится циклический сдвиг хранящейся в нем информации на один разряд влево. При этом в регистр переполнения записывается содержимое старшего разряда аккумулятора A.

{Ага,){Ат), (Ло)(Л7), (РП)(Л7).

RRC (кольцевой сдвиг вправо). Данная команда отличается от предыдущей только направлением сдвига:

(Л™)(т-И), (Л7)(Ло), (РП)(Ло).

Следует обратить внимание на то, что в регистр переполнения записывается содержимое младшего разряда аккумулятора.

RAL (кольцевой сдвиг влево через регистр переполнения). Исполнение этой команды иллюстрируется рис. 2.5. Аккумулятор и регистр переполнения образуют кольцо, по которому осуществляется циклический сдвиг



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

0.001