logo
КС-ZAO / Лекции ЦЭВМруский вариант11

§7.3.4 Особенность чтения-модификации-записи

Некоторые инструкции чтения из порта читают из регистра порта (защелки), а другие – непосредственно с контактов порта. Содержимое регистра читают те инструкции, которые считывают значение, возможно, изменяют его, и перезаписывают его обратно. Это так называемые инструкции «чтения-модификации-записи». Все они перечислены ниже. Когда операнд назначения порт, или бит порта, эти инструкции читают из регистра, а не с контакта.

ANL

логическое и

ORL

логическое или

XRL

логическое исключающее или

JBC

переход, если бит=1 и очистка бита.

CPL

сопряженный бит

INC

инкремент

DEC

декремент

DJNZ

декремент и переход, если не ноль

MOV PX.Y, C

загрузить бит переноса в бит Y порта X

CLR PX.Y

установить в «0» бит Y порта X

SETB PX.Y

установить в «1» бит Y порта X

Не совсем очевидным является тот факт, что 3 последние инструкции являются инструкциями «чтения-модификации-записи». Но это на самом деле так: они читают сразу все 8 бит из порта, изменяют необходимый бит и записывают байт обратно.

Причина, по которой инструкции «чтения-модификации-записи» не обращаются напрямую к контактам порта - в избежании возможного неверного толкования уровня напряжения на контакте. Например, бит порта может быть использован для управления базой транзистора. Когда бит устанавливается в «1» транзистор открывается. Допустим, если после этого процессор прочитает тот же самый бит на контакте, а не из регистра, он получит напряжение на базе транзистора и интерпретирует его как «0». Если же значение бита будет прочитано из регистра, то процессор получит верное значение «1».