Проектирование элементов ЭВУ, страница 8


MOV A,E

;восстановление исходного байта данных в аккумуляторе

ANI 11100011B

;маскирование битов x1, x2 и Q1 в четвертом слагаемом

JNZ M6

;переход к месту, где пропускается присваивание функции E3 значения 1, в случае, если результат предыдущей операции не равен 0 (то есть четвертое слагаемое равно 0). Таким образом функция E3 получается равной 0

M5:

INR D

;занесение значения E3 = 1 в разряд D0 регистра D путем добавления единицы (инкремент)

M6:

NOP

;пустая команда (продолжение программы)

       Итак, вышеизложенный фрагмент программы вычисляет значения функций E1 , E2 и E3 и заносит результат в регистр D в виде байта 0000 0E1E2E3. Теперь необходимо вычислить значения битов выходного сигнала y1 и y2 по найденным значениям E1 , E2 и E3 :

;Вычисление функции y1

MOV A,D

;копирование содержимого регистра D в аккумулятор, в аккумуляторе теперь байт вида 0000 0E1E2E3

ANI 11111101B

;маскирование бита E2 в первом слагаемом y1

XRI 101B

;вычисление первого слагаемого

JZ M7

;переход к месту, где функции y1 присваивается значение 1, в случае, если результат предыдущей операции равен 0 (то есть первое слагаемое равно 1)

MOV A,D

;восстановление байта данных в аккумуляторе

ANI 11111011B

;маскирование бита E1 во втором слагаемом

XRI 11B

;вычисление второго слагаемого

JZ M7

;переход, если второе слагаемое равно 1

MOV A,D

;восстановление байта данных в аккумуляторе

;для третьего слагаемого маскирование не требуется, так как оно содержит все переменные байта данных (E1, E2 и E3), а также для него не требуется вычисление, так как все переменные в слагаемом взяты с инверсией. Однако команда MOV не влияет на флаги, поэтому необходимо воспользоваться командой XRI для установления флагов

XRI 0B

;вычисление третьего слагаемого

JZ M7

;переход, если третье слагаемое равно 1

MVI С,0B

;запись в регистр С, где будет храниться байт результата вида 0000 00y1y2, значения y1 = 0 (нули записываются во все разряды)

JMP M8

;безусловный переход для исключения следующей команды

M7:

MVI С,10B

;запись в регистр C значения y1 = 1 (в разряд C2). В регистре C теперь находится байт 0000 0010

M8:

MOV A,D

;восстановление байта данных в аккумуляторе