ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ - Страница 43

ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ - ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ

dec A

jnz DiayLoop

mov A, Char ; Вывести О или 1

and A, 1 ; Поспать младшие бит первым

jz SendZero ; Вывести О

or Port, 2 ; Использовать бит 1 для вывода

goto SentBit
SendZero ; Вывести ноль

and PortO, OxOFD
SentBit

rr Char ; Поместить следующий бит на место младшего

dec Count ; Сделать 8 раз

jnz Loop

В примере чтения поступающие данные опрашивались в одной точке программы. При записи передаваемые данные выдаются в двух разных точках. Значение 1 выдается на три цикла раньше, чем значение 0. Это можно легко исправить путем введения двух команд «пор» перед выполнением команды «or Port, 2». Однако в этом случае при посылке 0 переход к метке «SentBit» реализуется на три команды раньше, чем при посылке 1. Можно поставить команду безусловного перехода «goto SentBit» следом за командой «and PortO, OxOFD». В таком случае при любом значении данных они будут поступать на выход порта в течение одного и того же числа циклов после начала процедуры «Loop».

Go to Top