Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ФЭ, Часть 2.doc
Скачиваний:
6
Добавлен:
22.12.2018
Размер:
1.01 Mб
Скачать

Программирование в машинных кодах (1).

1. Программные средства.

При программировании ЭВМ на машинном языке нужно знать систему команд микропроцессора, архитектуру микропроцессора и архитектуру ЭВМ.

Микропроцессор КР580ИК80 может выполнять 4 основные операции:

1) чтение данных из памяти или порта ввода;

2) запись данных в память или в порт ввода;

3) выполнение внутренних операций МП;

4) передача управления другой ячейке памяти.

С точки зрения программиста микропроцессор включает в себя 8 оперативных регистров, имеющих имена: А (аккумулятор), B, C, D,E, H, L и регистр состояния (внутренние регистры). Структурная схема микропроцессора КР580ИК80 представлена на рис. 1.

Рис. 1.

1. Аккумулятор (или регистр А) является ядром всех операций МП, к которым относятся арифметические, логические, загрузки или размещения данных и ввода/вывода. Это 8-ми разрядный регистр. В нем концентрируется большинство результатов выполнения команд ("Микролаб" копирует содержимое аккумулятора в ячейку ОЗУ по адресу 83ЕВ для анализа в пошаговом режиме).

2. Регистры общего назначения (B, C, D, E, H, L) – 8-ми разрядные регистры. Как правило, регистры B, C, D, E используются для временного хранения данных. Регистры H и L также могут использоваться как два восьмиразрядных регистра для хранения данных. Однако чаще всего их объединяют в регистровую пару HL (16-разрядная) для указания адреса. (Несколько команд используют также пары ВС и DE). В этом случае в регистрах H и L запоминается адрес ячейки, в которой находятся нужные данные. При этом старший байт адреса хранится в регистре Н, а младший – в регистре L (от англ. сл. High – высокий и Low – низкий). (Адреса регистров – 83Е9, 83Е8, 83Е7, 83Е6, 83Е5, 83Е4.)

3. Счетчик команд (РС) – 16-разрядный регистр. Служит для хранения адреса следующей команды, чтобы извлечь ее из памяти. Адрес автоматически увеличивается на 1 после считывания каждого байта (83Е1 – старший байт адреса, 83Е0 – младший байт).

4. Указатель стека (SP – от англ. Stack Pointer) – является специальным 16-разрядным регистром. SP указывает на адрес последнего помещенного в стек байта (на вершину стека). Указатель стека декрементируется (уменьшается на 1) при каждом помещении в стек и инкрементируется (увеличивается на 1) при каждом извлечении из него. Стек представляет собой запоминающее устройство с последовательным доступом, в котором слова считываются в порядке, обратном записи, т.е. по правилу LIFO (Last – Input - First – Output – последним вошел, первым вышел). Стек можно представить в виде вертикально расположенного массива запоминающих ячеек. Доступ осуществляется всегда к верхней ячейке – вершине стека. Когда слово записывается в вершину стека, указатель стека показывает на новую свободную ячейку области стека.

МП КР580ИК80 (ВМ80А) использует в качестве стека ОЗУ (причем емкость стека не ограничена). Область стека ОЗУ определяется при занесении в указатель стека нужного адреса. Монитор микролаборатории при включении питания и после нажатия кнопки СБРОС заносит (автоматически) в указатель стека число 83С7. Это позволяет применять стек без предварительной установки указателя стека.

Указатель стека находится в ячейке 83Е3 (старший байт) и 83Е2 (младший байт).

Стек играет важную роль в микроЭВМ как средство сохранения адресов возврата и состояния данных для подпрограмм.

5. Регистр состояния (или признаков, или индикаторов, или флаговый регистр) содержит пять одноразрядных индикаторов (триггеров), в которых содержится информация, относящаяся к состоянию МП (адрес 83ЕА).

Эти индикаторы могут быть установлены или сброшены, исходя из результатов последней операции, выполненной АЛУ. Они содержат указатели нуля, отрицательного результата, переноса и т.д.

Индикатор знака S устанавливается в зависимости от состояния наиболее значимого бита после выполнения арифметической или логической операции. Установленный индикатор соответствует отрицательной величине, сброшенный – положительной.

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

Индикатор четности Р проверяет число бит единиц в аккумуляторе. Если это число четное, индикатор установлен в 1, если нет – сброшен в 0.

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

Индикатор вспомогательного переноса AC показывает переполнение или перенос в 3-ем разряде аккумулятора.

Флаги можно проверить, заглянув в ячейку памяти 83ЕА. Флаги собраны в 1 байт. Не все команды изменяют флаги.