б) (А) ←(BUS); стробируемый ввод данных из порта BUS Аккумулятор;
в) (Р1)←(А); вывод данных из аккумулятора в порт Р1;
г) (Р2) ←(Р2)Ù0FH; логическое умножение содержимого порта Р2 и непосредственно заданного операнда OFH деление младшей тетрады содержимого порта Р2;
д) (BUS) ←(А); вывод из аккумулятора в порт BUS. Байт данных из аккумулятора передается и фиксируется в буферном регистре порта BUS до тех пор, пока он не изменится любой следующей командой, требующей использования порта BUS. Включение составляет только команда стробируемого ввода через порт BUS INS, при которой ранее выведенный командой UTL байт все же сохраняется в регистре порта BUS; тем самым обеспечивается его двунаправленность.
Р6.73. Все команды предусматривают переход в пределах выбранного блока памяти, а команды б) ... и) к тому же в пределах ранее выбранной страницы.
а) безусловный переход по адресу а0…10 , а 8…10 - код страницы, а 0…7 - код ячейки памяти в пределax страницы. Машинный код команды (2 байта) 01000100 010100 = 4454Н;
б) безусловный переход по косвенному адресу а = 01000001, содержащемуся в аккумуляторе. Код команды 101 10011 = ВЗН;
в) комбинированная команда: декремент регистра R4 и переход по адресу а, если в регистре после декрементирования содержится не нуль. Код команды 11101100 11100010 = ЕСЕ2Н;
г) условный переход по адресу а, если (С) = 1, т.e., если есть перенос;
д) то же, если (С) = 0, т. е. нет переноса;
е) то же, если (А) = 0.
ж) то же, если на тестовом входе МК Т0=1;
з) то же, если на входе запроса прерывания МК = 0; и) то же, если бит А3 содержимого аккумулятора (А3)=1;
код команды 01110010 01101000 = 7268Н.
В вариантах в) ... и) при выполнении соответствующего условия счетчик команд загружается адресом а. указанным во втором байте команды, а при невыполнении содержимое счетчика увеличивается на две единицы.
Р6.74. а) Безусловный вызов подпрограммы по адресу а 0…10, содержащему 11 бит; а8…10 — код страницы, а0…7 - код ячейки памяти в пределах страницы. Переход осуществляется в пределах ранее выбранного блока памяти. Отличие от команды JMP а в том, что при выполнении команды CALL в стеке запоминается содержимое счетчика команд, т. е. адрес возврата.
Код команды 01010100 11010100 = 54D4H;
б) возврат в основную программу по адресу, запомненному в стеке. Командой RET обычно заканчивается подпрограмма.
Р6.75. а) Запуск таймера от внутренних сигналов синхронизации МК1816; содержимое таймера инкрементируется каждые 32 машинных цикла (при fт = 6 МГц - через 80 мкс); диапазон реализуемых задержек от 80 мкс до 256 80 = 20,48 мс;
б) запуск таймера на работу в качестве счетчика внешних импульсов, поступающих по входу МК Т1; разрешающее время 7,5 мкс, длительность импульсов не менее 0,5 мкс;
в) останов таймера;
г) разрешение прерывания от таймера; сигнал переполнения таймера вызывает переход к подпрограмме обслуживания прерывания.
Р6.76. а) Выбор банка регистров RB0; далее в программе могут использоваться восемь РОНов R0 ... R7 только из этого банка;
б) выбор блока ППЗУ МВ1; далее после команд JMP или CALL в программе могут использоваться 2048 ячеек памяти из этого блока;
в) разрешение прерываний; появление на входе МК1816 сигнала логического нуля, инициирующего процедуру обработки запроса прерывания;
г) нет операции; команда используется при организации временной задержки (выполняется за один машинный цикл, при fт = 2 МГц - за 2,5 мкс), а также в качестве вставки, которая в процессе отладки программы может быть заменена на любую другую команду.
Р6.77. Фрагмент программы:
RECR: MOV RO, #23Н ;3агрузка в R0 числа 35
MOV @RO, #2DH ;3агрузка в ячейку 35 числа 2DH
INC R0 ;(R0)←(R0) + 1
MOV @R0, #3FH ;3агрузка в ячейку 36 числа 3FH
Р6.78. Поскольку команда декремента в МК1816 может относиться только к аккумулятору, требуется предварительно переслать информацию из ячейки ОЗУ в аккумулятор. Фрагмент программы:
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.