Материал: Функциональная организация микро-ЭВМ К1816ВЕ48

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

Операнд Машинный код команды Число циклов Действие

Команды установки признаков результата

CLR A

00100111

1

(A) = 0 CPL A

00110111

1

(A) = 0 - (A) CLR

C

10010111

1

(C) = 0 CPL C

10100111

1

(C) =~ (C) CLR

F0

10000101

1

(F0) = 0 CPL F0

10010101

1

(F0)=~(F0) CLR

F1 10100101 1

(F1)= 0 CPL F1

10110101

1

(F1)=~(F1)

Некоторые учебные задания по изучению функциональной организации ЭВМ предполагают анализ машинной программы с предварительным ручным дизассемблированием, т.е. формированием ассемблер-программы, соответствующей анализируемому машинному коду. При выполнении такой работы целесообразно пользоваться списком команд, упорядоченным по коду операции( таблица 7). Пример дизассемблирования фрагмента машинной программы приведен в таблице 8.

Поскольку команды с адреса 100h по адрес 10Ah представляют собой цикл суммирования массива чисел, адресуемый указателем R1, загрузка значения 10h в данный регистр перед входом в цикл позволяет сделать вывод, что это базовый адрес массива. Так как в ассемблере МК нет команд типа сравнение и вычитание, проверка адреса конца массива организуется путем сложения дополнительного кода текущего и конечного адреса массива и использования команды условного перехода JNZ по адресу 104h. Такам образом обрабатываемые данные размещены с адреса 10h по адрес 15h резидентной памяти данных.

Таблица 8. Пример дизассемблирования фрагмента программы

Адрес

Код

Мнемокод

0100

27

CLR A 0101

B9

MOV R1, #10H 0102

10

0103

61

ADD A, @R1 0104

19

INC R1 0105

F9

MOV A, R1 0106 37

CPL A 0107

17

INC A 0108 03

ADD A, #15H 0109

15

010A

96

JNZ LOOP 010B

03

010C

04

JMP M 010D

13

010E

B9

MOV R1, #10H 010F

10

0110 F1

MOV A, @R1

0111

B9

MOV R1, #11H

11

0113

61

ADD A, @R1

2.5. Ввод-вывод и прерывания

Для связи МК48 с объектом управления, для ввода и вывода информации используется 27 линий. Эти линии сгруппированы в три порта по восемь линий в каждом и могут быть использованы для вывода, ввода или для ввода/вывода через двунаправленные линии. Кроме портов ввода/вывода имеются три линии, сигналы на которых могут изменять ход программы по командам условного перехода : линия ЗПР используется для ввода в МК сигнала запроса прерывания от внешнего источника; линия Т0 используется для ввода тестирующего сигнала от двоичного датчика объекта управления; кроме того, под управлением программы (по команде ENT0 CLK) по этой линии из МК может выдаваться сигнал синхронизации; линия Т1 используется для ввода тестирующего сигнала или в качестве входа счетчика событий (по команде STRT CNT).

Специальная схемотехника портов Р1 и Р2 , которая получила название квазидвунаправленной, позволяет выполнять ввод, вывод и ввод/вывод. Каждая линия портов Р1 и Р2 может быть программным

путем настроена на ввод,

вывод или на работу с двунаправленной

линией передачи.

Для того, чтобы настроить

некоторую линию на

режим

ввода в

МК,

необходимо перед

этим

в буферный

триггер

этой линии записать 1. Сигнал

СБР

автоматически

записывает во все линии портов Р1 и Р2 сигнал 1. Квазидвунаправленная структура портов Р1 и Р2 для программиста МК 1816 специфична тем, что в процессе ввода информации

выполняется операция логического

И над вводимыми данными и

текущими

(последними)

введенными

данными.

Квазидвунаправленные схемы портов Р1 и Р2 и команды логических операций ANL и ORL предоставляют разработчику эффективное средство маскирования для обработки однобитных входных и выходных переменных.

Всистеме команд МК есть команды, которые позволяют выполнять запись нулей и единиц в любой разряд или группу разрядов порта , но так как в этих командах маска задается непосредственным операндом, то необходимо знать распределение сбрасываемых и устанавливаемых линий на этапе разработки прикладной программы. В этом случае, если маска вычисляется программой и заранее неизвестна, в ОЗУ необходимо иметь копию состояния порта вывода. Эта копия по командам логических операций объединяется с вычисляемой маской в аккумуляторе и затем загружается в порт. Необходимость этой процедуры вызвана тем, что в МК отсутствует возможность выполнить операцию чтения значения портов Р1 и Р2 для определения прежнего состояния порта вывода. Порт Р2 отличается от порта Р1 тем, что его младшие четыре бита могут быть использованы для расширения МК-системы по вводу/выводу. Через младшую тетраду порта Р2 по специальным командам обращения возможен доступ к четырем внешним четырехбитным портам ввода/вывода Р4-Р7. Работа этих внешних портов синхронизируется сигналом ПРОГ.

Порт ввода/вывода BUS представляет собой двунаправленный буфер с тремя состояниями и предназначен для побайтного ввода, вывода или ввода/вывода информации. Если порт BUS используется для двунаправленных передач, то обмен информацией через него выполняется по командам MOVX. При выводе байта генерируется стробирующий сигнал ЗП, а выводимый байт фиксируется в буферном регистре. При вводе байта генерируется стробирующий сигнал ЧТ, но вводимый байт в буферном регистре не фиксируется.

Вотсутствие передач порт BUS по своим выходам находится в высокоимпедансном состоянии. Если порт BUS используется как однонаправленный, то вывод через него выполняется по команде OUTL, а ввод - по команде INS. Вводимые и выводимые через порт BUS байты можно маскировать с помощью команд ORL и ANL, что позволяет выделять и обрабатывать в байте отдельный бит или группу бит. В МК-системах простой конфигурации, когда порт BUS не используется в качестве порта-расширителя системы, обмен выполняется по командам INS, OUTL и MOVX. Возможно попеременное использование команд OUTL и MOVX. Однако при этом необходимо помнить, что выводимый по команде OUTL байт фиксируется в буферном регистре порта BUS, а команда MOVX уничтожает содержимое буферного регистра порта BUS. (Команда