Курсовая работа: Модуль оперативного запоминающего устройства
INX H ;следующий байт
DCX D ;уменьшить и проверить 16-разрядный
MOV A,D ;счётчик байтов
ORA E ;сброс флага
JNZ N2 ;продолжать до сравнения всех байтов
;ошибка не найдена
POP D ;DE=размер области в байтах
POP H ;HL=базовый адрес
RET ;выйти (ORA E оставляет флаг переноса равным нулю)
;выход по ошибке, установить флаг переноса
;HL=адрес ошибки
;A=тестовое значение
N3: MVI A,10000000B ;разряд 7 равен единице, остальные – нулю
RBIT: MOV M,A ;записать шаблон теста в память
CMP M ;прочитать его
STC ;флаг переноса, на случай ошибки
RNZ ;выйти при ошибке
RRC ;циклический сдвиг шаблона
CPI 10000000B ;сравнение
JNZ RBIT ;продолжать, пока единица не вернётся в разряд 7
MVI M,0 ;очистить уже проверенный байт
INX H ;уменьшить и
DCX D ;проверить 16-разрядный
MOV A,D ;счётчик
ORA E ;сброс флага
JNZ N3 ;продолжать для всей проверяемой памяти
RET ;возврат
ERR: MOV A,C ;А=тестовое значение
POP D ;DE=размер области в байтах