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

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

Команда сдвига влево с переносом RAL. Команда занимает в памяти 1 байт, выполняется за четыре такта, время выполнения - 2,0 мкс. По команде производится сдвиг содержимого аккумулятора на один разряд влево. При этом младший разряд аккумулятора Зо становится равным содержимому разряда переноса С, а содержимое разряда С становится равным содержимому старшего разряда аккумулятора Зу. Алгоритм выполнения команды следуюший: am->am+i, а7->С, С->ао.

Команда сдвига вправо с переносом RAR. Команда занимает в памяти 1 байт, выполняется за четыре такта, время выполнения - 2,0 мкс. По команде производится сдвиг содержимого аккумулятора на один разряд вправо. При этом разряд ау становится равным содержимому разряда переноса С, а сам разряд переноса становится равным содержимому младшего разряда аккумулятора ао. Алгоритм выполнения команды RAR следуюший: ащ+х-&т, С-ау, ао->С.

Команда безусловного перехода JMP. Команда занимает в памяти 3 байт, выполняется за 10 тактов, время выполнения - 5,0 мкс. По данной команде производится безусловный переход на команду, адрес которой задан в символическом виде в команде JMP, а после трансляции размешается во втором и третьем байтах машинного эквивалента команды.

Команда условного перехода по единичному значению разряда переноса JC. Команда занимает в памяти 3 байт, выполняется за 10 тактов, время выполнения - 5,0 мкс. По команде происходит переход на команду, адрес которой указывается, если разряд переноса С равен «1», иначе выполняется следующая за JC команда. Адрес перехода в виде машинного эквивалента хранится во втором и третьем байтах команды. Признак переноса С может принимать значение «1», если, например, превышена разрядность машин.чого слова при сложении чисел или в результате выполнения команды сдвига.

Команда условного перехода по нулевому значению разряда переноса JNC. Команда занимает в памяти 3 байт, выполняется за 10 тактов, время выполнения- 5,0 мкс. По команде выполняются действия, аналогичные выполняемым по команде JC, только при нулевом значении разряда переноса С.

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



5,0 мкс. По команде происходит переход на команду, адрес которой указывается, если разряд нуля Z установлен в состояние «1», иначе выполняется следующая за JZ команда. Разряд Z будет равен «1», если результат выполнения предшествующей команды равен нулю, например нулевой результат получается, если сравниваются два одинаковых операнда по команде СМР.

Команда условного перехода по нулевому значению разряда переноса JNZ. Команда занимает в памяти 3 байт, выполняется за 10 тактов, время выполнения - 5,0 мкс. По команде выполняются действия, аналогичные команде JZ, но только при значении Z, равном нулю.

Команда вызова подпрограммы CALL. Команда занимает в памяти 3 байт, выполняется за 17 тактов, время выполнения - 8,5 мкс. По команде производится безусловный переход на команду, адрес которой определяется вторым и третьим байтами машинного эквивалента команды CALL. Содержимое счетчика команд, используемое для возврата из подпрограммы, записывается в стек.

Команда возврата из подпрограммы RET. Команда занимает в памяти 3 байт, выполняется за 11 тактов, время выполнения - 5,5 мкс. По команде осуществляется безусловный переход к команде, адрес размещения которой определяется последними данными, введенными в стек.

Команда ввода данных IN. Команда занимает в памяти 3 байт, выполняется за 10 тактов, время выполнения - 5,0 мкс. По команде значение, полученное от устройства ввода, адрес которого находится во втором байте команды IN, помещается в регистр А.

Команда вывода данных OUT. Команда занимает в памяти 3 байт, выполняется за 10 тактов, время выполнения - 5,0 мкс. По команде значение, содержащееся 3 регистре А, передается на устройство вывода, адрес которого содержится во втором байте команды OUT.

Команда инвертирования регистра СМ А. Команда занимает в памяти 1 байт, выполняется за четыре такта, время выполнения - 2,0 мкс. В результате выполнения команды содержимое аккумулятора представляется в дополнительном коде. Таким образом, знак числа, содержащегося в аккумуляторе, меняется на противоположный.

Команда останова НЕТ. Команда занимает в памяти 1 байт, выполняется за семь тактов, время выполне-

7-48



ния - 3,5 мкс. В результате выполнения команды Hlj в счетчик команд заносится адрес следующей команды. Работа микропроцессора прекращается. Содержимое всех регистров и оперативной памяти не меняется.

В рассмотренной системе команд отсутствует команда умножения. Эту операцию при необходимости можно

)еализовать путем многократного сложения множимого.

иже приведен фрагмент программы на языке ассемблера, реализующий данный алгоритм.

Значения строк этой программы следующие:

1 - пересылка значения множимого, находящегося в ячейке памяти с адресом 0PR1 в регистр D;

2 - подготовка аккумулятора (регистр А) для накапливания в нем суммы по команде CLR;

3 - прибавление значения множимого из регистра D к содержимому аккумулятора;

4 - уменьщение значения ячейки памяти OPR, содержащей множитель, на единицу;

5 -переход к выполнению команды с меткой МЕТ, если значение в ячейке 0PR2 не равно нулю;

6 - пересылка полученного результата (произве.у ния) из аккумулятора в ячейку памяти REZ;

7 - останов программы.

Языки программирования высокого уровня. Следу щим этапом повышения эффективности работы програ миста является использование языков высокого ypOBi Эти языки позволяет использовать для описания алг ритмов решения задач термины, близкие по папасат к словам естественного языка, например английско или русского, а также записывать в виде формул мат матические и логические выражения. Исходные опер торы, написанные на языке высокого уровня, при траь ляции в машинные коды могут дополняться специалиэ рованными подпрограммами, расширяющими возможное программиста и облегчающими написание програм Такой процесс трансляции называется компиляци (объединением), а программа, которая его реализует, компилятором с языка высокого уровня.

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




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

0.0106