Смекни!
smekni.com

Модуль оперативного запоминающего устройства (стр. 2 из 2)

Программа тестирования памяти по алгоритму «Марш»

START: LXI H,0 ;HL=базовый адрес

LXI D,65536 ;число байтов

CALL TEST ;вызов подпрограммы тестирования

MOV A,80h ;запись в аккумулятор значения

OUT OPORT ;включение второй страницы памяти

JMP START ;переход на начало тестирования

TEST:

;заполнение памяти числом 0 и проверка

MVI C,0 ;загрузка тестового значения

CALL LOOP ;вызов подпрограммы тестирования

RC ;выйти, если найдена ошибка

;заполнение памяти числом FFh и проверка

MVI C,0FFh ;загрузка тестового значения

CALL LOOP ;вызов подпрограммы тестирования

RC ;выйти, если найдена ошибка

;заполнение памяти числом AAh и проверка

MVI C,0ААh ;загрузка тестового значения

CALL LOOP ;вызов подпрограммы тестирования

RC ;выйти, если найдена ошибка

;заполнение памяти числом 55h и проверка

MVI C,55h ;загрузка тестового значения

CALL LOOP ;вызов подпрограммы тестирования

RC ;выйти, если найдена ошибка

;тест с перемещающимся разрядом

CALL N3 ;вызов подпрограммы тестирования

RC ;выйти, если найдена ошибка

RET ;выйти в программу

LOOP: PUSH H ;сохранить базовый адрес

PUSH D ;сохранить размер области

;заполнение памяти тестовым значением

N1: MOV M,C ;заполнить байт тестовым значением

INX H ;следующий байт

DCX D ;уменьшить и проверить 16-разрядный

MOV A,D ;счётчик байтов

ORA E ;сброс флага

JNZ N1 ;продолжать, пока не заполнена вся память

POP D ;восстановить размер области

POP H ;восстановить базовый адрес

PUSH H ;сохранить базовый адрес

PUSH D ;сохранить размер области

;сравненне памяти и тестового значения

N2: MOV A,M ;взять значение из памяти

CMP C ;сравнение с тестовым значением

JNZ ERR ;нет, выйти, указав на ошибку

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=размер области в байтах

POP B ;BC=базовый адрес

STC ;установка флага переноса, указывающего на ошибку

RET ;возврат

END ;окончание программы


СПИСОК ИСПОЛЬЗОВАННОЙ литературы

1. Полупроводниковые БИС запоминающих устройств Гордонов А.Ю., Бекин Н.В. Москва, “Радио и связь” 1990 384 с.

2. Микропроцессоры и микроЭВМ в системах автоматического управления С.Т.Хвощ, Н.Н. Варлинский, Е.А.Попов, Ленинград “Машиностроение”, 1987 640 с.

3. Коффрон Дж. Технические средства МП систем “Мир”, 1983 344 c.

4. Коффрон Дж., Лонг В., Расширение МП систем “Машиностроение”, 1987 354 с.

5. Б.В. Шевкопляс Микропроцессорные структуры, инженерные решения. Москва “Радио и связь”, 1990, 512 с.

6. Программирование на языке ассемблера для микропроцессоров 8080 и 8085

Л.А. Левенталь, У. Сэйвилл, Москва “Радио и связь”,1987 444 с.

7. Методические указания к лабораторной работе №2 по курсу “Цифровые устройства и микропроцессоры” В.А. Добряк, В.К. Рагозин. Екатеринбург: Изд-во УГТУ, 1999. 32 с.