Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Глава 4 - V-пр+.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
415.74 Кб
Скачать

4.1. Запись программ

Существуют различные формы записи программ. Мы рассмотрим только одну, содержащую шесть граф (табл. 4.2), в которой для примера вписана ко­манда АD1.

Обычно сначала заполняют графы 3 и 6. В графе 3 записывают метки - на­звания, которые даст программист отдельным фрагментам программы. Названия меток произвольные. Например, «Время» или «Выдержка» или буквен­ные обозначения - Конст 1. В графе 4 против метки пишется мнемоника опера­ции, а в графе 5 записывают операнды и адреса. При записи 16-разрядных чисел их размещают побайтно, слева направо, сначала младшие по разрядам байты, затем старшие.

Одна из форм записи программ Таблица 4.2

Адрес

Н-код

Метка

Мнемокод

Операция

Комментарии

I

2

3

4

5

6

8400

С6

--

АDI

(А)+ 2-» А

сложить с непосредственным операндом

Графа 6 предназначена для комментариев – пояснений к тем или иным дей­ствиям, выполняемым программой. Комментарии полезны как при отладке, так и при использовании программы.

В графе 1 записывается адрес команды в Н-коде, а в графе 2 шестнадцатерич­ный код команды и операндов. Полный перечень команд МП К580 приведен в табл. 4.1.

4.2. Методы адресации

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

Прямую адресацию применяют в двух видах команд: при обращении к внеш­нему ЗУ и к СОЗУ, образованному восемью регистрами общего назначения (РОН) внутри MП.

При обращении к ЗУ адрес операнда, размещенного в основном ЗУ, ука­зывают в байтах команды, следующих за 1-м байтом – байтом КОП (см. рис. 4.2, а). Так как шина адресов содержит 16 разрядов (2 байта), а команды с прямой адресацией занимают три байта, то первый из них - код операции - передается по шине данных. Недостатки команд этого вида - их большая длина и соответственно время исполнения.

При обращении к СОЗУ время исполнения команд значительно меньше. Так как для адресации восьми РОН достаточно трех битов (000 - 111), то их ад­реса задаются в том же байте, что и код операций. В формате команды адрес регистра - источника информации обозначен буквами SSS, адрес получателя - DDD (см. рис. 4.2, б).

При непосредственной адресации операнды располагают в ячейках ЗУ, сле­дующих непосредственно за ячейками, содержащими код операции (см. рис. 4.2, в и г).

Код операции может содержать адрес одного из регистров РОН (см. рис. 4.2. в) или предусматривать сложение операнда непосредственно с содержимым акку­мулятора (см. рис. 4.2, г). При непосредственной адресации операнд является составной частью (вторым байтом) команды.

Неявную адресацию используют при операциях с содержимым регист­ровой пары НL, например, при увеличении его на единицу (см. рис. 4.2, д), при сло­жении машинных слов, находящихся а каком-либо из регистров РОН и аккумуляторе (см. рис 4.2, е), при логической операции "Исключающее ИЛИ" с содержимым этих же регистров (см. рис. 4.2, д).

Косвенная адресация состоит в том, что в некоторый регистр или в ре­гистровые пары RP РОН помещаются не сами операнды, а их адреса во внешнем ЗУ (см. рис. 4.2 , ж, з). При этом в однобайтовой команде указывают только адрес регистровой пары, содержащей, в свою оче­редь, адрес ячейки памяти, где находится искомый операнд. Так, команда LDАХRP (см. рис. 4.2, з) предусматривает загрузку аккумулятора кодовой комбина­цией, адрес которой содержится в одной из пар регистров BС, ДЕ или HL. При этом каждая пара регистров задается адресом одного из них (ВС адресам В, ДЕ адресом Д и Н L адресом Н). По команде МОV ВМ (см. рис. 4.2, ж), слово, записанное в ячейке ЗУ, адрес которой находится в регистровой паре НL, поступает в один из регистров блока РОН, определяемый символами DDD. Команда ADDM вы­полняет сложение операндов, один из которых расположен в аккумуляторе, а второй - указан регистром HL. Составляя программу, предусматривают зане­сение адреса ячеек с операндами в соответствующую регистровую пару предвари­тельными командами STAX RP или LHLD adr.

Косвенная адресация удобна при работе с массивами данных. Сначала с по­мощью какой-либо из указанных выше команд в пару регистров - указатель адреса - заносится адрес первой строки таблицы. Затем после обработки первого операнда, командами JNR R или JNR M содержимое указателя увеличивается на еди­ницу и т. д. до завершения обработки табличных данных.

Адресация по содержимому стека осуществляется с помощью регистра SР - указателя стека. Так как стеком для МП К580 является некоторая заданная об­ласть в ОЗУ, то регистр SР должен получить начальный адрес стека извне. Для этого в основной программе предусмотрена трехбайтовая команда LХI HL, по которой два байта начального адреса ОЗУ пересылаются из внешнего ЗУ в ре­гистровую пару НL. Перед операциями с использованием стека по команде SРНL код начала заданной области ОЗУ пересылается из пары НL в указатель стека SР. Далее по команде PUSН в ячейку памяти с адресом, на единицу мень­шим записанного в указатель стека, заносятся восемь старших, а в ячейку с адре­сом, меньшим на два - восемь младших разрядов содержимого регистра SР. Для осуществления обратной операции - вызова из стека - прибегают к команде POP. B процессе ее выполнения данные, хранящиеся в стеке, переписываются в задан­ную пару регистров РОН или в счетчик. Содержимое регистра SР после выпол­нения каждой команды POP увеличивается на два.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]