Операнд Машинный код команды Число циклов Действие
Команды установки признаков результата
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. (Команда
| 05_Холера |
| 10.4. Исследование регистров |
| 1112 |
| 12 |
| 1568 |
| 1673 |
| 17 |
| 1703 |
| 1885 |
| 2. Генераторы постоянного тока |