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

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

Таблица 2.4

Адрес

Содержимое

0 0 0 С

ADD 0 0 3 3

Программы, записанной на этом языке на машинный язык, можно сделать, имея таблицу соответствия мнемокодов с их двоичными эквивалентами. Однако на практике такое преобразование, называемое трансляцией, выполняется автоматически с помощью специальной программы, которая называется ассемблером. Используя двоичные коды для замены буквенно-цифровых символов, в ЗУ можно хранить команды непосредственно в символической форме. Ассемблер сравнивает каждую такую команду со списком команд и производит замену мнемокодов их двоичными эквивалентами.

Ассемблер, реализованный непосредственно на данной микро-ЭВМ, называют резидентным, или автоассемблером. В настоящее время изготовители микропроцессорных ЭВМ выпускают ассемблеры, позволяющие производить трансляцию программ для микро-ЭВМ на больших вычислительных машинах. Такие ассемблеры называются кросс-ассемблерами и записываются на алгоритмических языках высокого уровня, например на ФОРТРАНе.

2.2, ОСНОВНЫЕ КОМАНДЫ, ПРИМЕНЯЕМЫЕ В МИКРО-ЭВМ

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

команды пересылки информации;

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

команды управления;

команды связи с подпрограммами;

оперативные команды;

команды ввода - вывода.

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



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

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

Команды связи с подпрограммами организуют вход в подпрограмму и обеспечивают последующий возврат в основную программу.

Оперативные команды служат для преобразования данных, хранящихся в аккумуляторе, таких как сдвиг, инверсия и т. п. И, наконец, команды ввода - вывода предназначены для организации обмена между микро-ЭВМ и внешними устройствами.

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

А - аккумулятор,

г -любой из рабочих регистров ЦП, М - адрес операнда в основной памяти, или исполнительный адрес, / - адрес ячейки, из которой была считана очередная команда, (•)-содержимое ячейки памяти или одного из регистров ЦП (например, (50)-содержимое ячейки памяти, адрес которой имеет номер 50, (Л)-содержимое аккумулятора),

-<--операция пересылки информации, например

символическая запись (r)-(M) описывает пересылку данных из ячейки памяти с номером М в один из рабочих регистров ЦП, scr - адрес ячейки - источника информации, dst - адрес ячейки-приемника, или назначения, Гт. - т-й разряд рабочего регистра ЦП,

- символ, описывающий последовательность команд в программе (например, запись (Л)=0 М означает, что если содержимое аккумулятора равно нулю, то в машине осуществляется передача управления коман-



де), хранящейся в ячейке памяти с номером М,

А, V, ф - обычные символы для логических операций «И», «ИЛИ» и «ИСКЛЮЧАЮЩЕЕ ИЛИ».

Некоторые дополнительные обозначения будут введены по ходу изложения.

Команды пересылки данных. Эта группа команд используется для организации операций загрузки, хранения и межрегистровых передач информации. Наиболее часто используют команды типа МО]/ (move - переслать), LD (load - загрузить) и ST (store -сохранить).

Команды типа MOV используются в основном для организации передач между рабочими регистрами ЦП. Команда МО]/ гх, Гг осуществляет пересылку информации из регистра гг в регистр ги т. е. {г\){г2). В качестве регистра-источника и регистра-приемника может выступать и аккумулятор. Команды типа МО]/ иногда могут адресоваться и к ячейкам памяти, при этом, однако, адрес ячейки, как правило, хранится в одном из регистров ЦП (например, в регистровой паре HL). Поэтому команда типа МО]/ А,М может означать загрузку аккумулятора содержимым ячейки памяти М, адрес которой предварительно записан в расширенном регистре HL.

В общем случае команда загрузки аккумулятора записывается в виде LDA М, или в краткой форме {А){М).

Команда хранения имеет символическую форму STAM. По этой команде содержимое аккумулятора пересылается в ячейку памяти с номером М: (Л1)-«-(Л).

В зависимости от метода адресации памяти (см. § 2.3) символическая форма записи команд загрузки и хранения меняется. Общим правилом при выполнении этих команд является то, что содержимое ячейки-источника всегда остается неизменным. Механизм исполнения команд загрузки и хранения в упрощенной форме выглядит следующим образом. После дешифровки команды номер адресуемой ячейки памяти записывается в регистр адреса (РА) памяти (рис. 2.2), этот адрес дешифрируется, после чего производится считывание информации из адресуемой ячейки в буферный регистр данных (РД). Аналогичным образом осуществляется и запись информации из РД в адресуемую ячейку. Регистр данных связан с АЛУ, аккумулятором и рабочими ре-



[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