Главная Микропроцессорные системы [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,1 до 3 мкс и зависит от используемой элементной базы. Число тактов в фазе выполнения может быть переменным, в то время как их число в фазе выборки, как правило, фиксировано для данной микро-ЭВМ. К командам, выполняемым за один цикл, относятся команды с обращением к рабочим регистрам ЦП - межрегистровые пересылки, арифметические и логические команды, а также оперативные команды работы с аккумулятором - циклический сдвиг, обращение и некоторые другие. Примером команды, выполняемой за один цикл, является команда типа ADD г, по которой к содержимому аккумулятора необходимо прибавить содержимое регистра г. Такая команда занимает одну ячейку памяти, а поэтому она может быть извлечена оттуда за одну фазу выборки. Так как для исполнения этой команды требуются только АЛУ ЦП и какие-либо пересылки данных в память отсутствуют, то эта команда может быть исполнена за одну фазу выполнения. К командам, выполняемым за один цикл, могут относиться и команды перехода в тех случаях, когда формат команды целиком укладывается в разрядность одной ячейки памяти. Однако на практике часто встречаются случаи, когда разрядность памяти не соответствует длине командного слова. Например, в микропроцессорной серии К580 АЛУ оперирует с 8-разрядными словами, в то время как команды перехода трехбайто- выа. т. е. занимают три ячейки памяти, причем в первой хранится код операции, а в двух других- 16-разрядный адрес той ячейки, к которой должен быть осуществлен переход по программе. Извлечение такой команды из памяти требует трех фаз выборки. При этом фаза выполнения данной команды не может начаться до тех пор, пока в регистр команд не будет помещена целиком вся команда. Поэтому соответствующие фазы выполнения в машинном цикле пропускаются до тех пор, пока не закончатся все требуемые фазы выборки. Пропущенные фазы выполнения называют пустыми фазами. Команды с обращением к памяти требуют не менее двух машинных циклов, так как при их исполнении приходится по крайней мере дважды обращаться к памяти- один раз для выборки команды, второй раз - для получения операнда. Если формат команды не совпадает с разрядностью ячейки памяти, то так же, как и в предыдущем примере, команда становится многоцикловой. Рассмотрим последовательность циклов работы процессора, фаз выборки и выполнения на примере исполнения команды сложения. Предположим, что микро-ЭВМ имеет 8-разрядный аккумулятор, 8-разрядные ячейки памяти и прямую адресацию ячеек с помощью 16-разрядного адресного поля команды. В первом цикле (см. рис. 2.19) во время фазы выборки происходит чтение младшего байта команды, он загружается через регистр данных в регистр команд, и, поскольку эта команда неполная, фаза выполнения в интервале ti-г2 окажется пустой. В течение фазы выборки второго цикла в интервале г2-происходит чтение и запись в регистр команд второго байта. Так как регистр команд и в этом случае оказался .недогруженным, то и во втором цикле фаза выполнения ts-будет пустой. В третьем цикле регистр команд будет полностью загружен, но выполнения команды еще не произойдет, так как необходимо выбрать из памяти операнд. Эта выборка будет произведена в течение фазы выборки четвертого цикла, когда 16-разрядный адрес операнда будет записан в регистр адреса памяти, дешифрован и содержимое адресуемой ячейки будет записано в регистр данных памяти. Операция сложения осуществляется в АЛУ в течение фазы выполнения четвертого машинного цикла, т. е. в интервале времени от 7 до 4- Самого большого времени выполнения требуют -команды с косвенной адресацией. При их исполнении необходимо уже трижды обращаться к памяти. 2.6. ЭЛЕМЕНТЫ ПРОГРАММИРОВАНИЯ ДЛЯ МИКРО-ЭВМ Для программирования различных алгоритмов обработки сигналов РТС радиоинженеру необходимы знания основных приемов программирования, таких как программирование операций управления, циклов, арифметических и логических операций, организации связей с подпрограммами, процедур ввода - вывода и ряда других. Ниже эти приемы рассматриваются с применением языка ассемблера, набор команд которого приведен выше. Язык ассемблера принадлежит к группе так называемых машинно ориентированных языков, в которых в большей или меньшей степени отражается внутренняя структура той ЭВМ, для которой этот язык предназначен. Поэтому при рассмотрении прцмеров, иллюстрирующих-основные приемы программирования, будем ориентироваться на гипотетическую микро-ЭВМ, структура -которой описана в предыдущих параграфах. Символические адреса. В приводившихся ранее примерах для обозначения ячеек памяти использовалась их нумерация в двоичной, восьмеричной или шестнадцатеричной системах счисления. При составлении больших программ их составителю пришлось бы запоминать большое число адресов ячеек и назначение каждой из них. Поэтому с целью упрощения записи программ часто используют мнемонические обозначения не только для команд, но и для адресов. Фактически такие обозначения уже применялись нами при изучении типового списка команд, где в адресной части использовались символы А, В, г и т. д., обозначавшие соответственно аккумулятор, регистр В ЦП и любой другой из регистров ЦП. Программист может присвоить символические адреса ячейкам памяти произвольно, используя удобную для него мнемонику, соответствующую смыслу хранящихся в них данных. Например, ячейки можно назвать такими символическими именами, как RESULT (результат), ALPHA (альфа), SUM (сумма), VOLTAGE [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.0011 |