ЭВМ и системы / MP51 / Method / трафареты
.docОбщие рекомендации по пользования трафаретом:
-
В местах, помеченных угловыми скобками следует размещать фрагменты программы в соответствии с индивидуальным заданием
-
комментарии на кириллице рекомендуется исключать
-
Значки nn, rr, xx, pp и подобные заменяются именами регистров или числами в соответствии с индивидуальными заданиями
-
Результат коррекции сохранять в текстовом формате с расширением .asm
Трафарет для лабораторной работе №1
Jmp start ;переход на начало программы , это необходима
; Для «освобождения нижней памяти для обработчиков прерываний
; и потребуется в будущих работах
ORG 100H ; директива выделения памяти программ; место расположения
:рабочей программы
MOV rr,#nn ; rr - имя регистра ( любого по выбору студента)
;nn - число повторений теста ( любое число по выбору
; студента)
Repeate: ; метка возврата
MOV a, pp ; чтение данных из порта в аккумулятор
; pp – имя порта по выбору студента
: MOV rr1,a : сохранение считанного значения в любом регистре –
; нужно если проверка требует операций над исходным
; значением
<< команды вычисления условия выполнения заданного действия>>
JZ www ; команда проверки заданного условия
; могут потребоваться другие команды проверки (JNZ,JC и т.п)
: << преобразование принятых с порта данных>>
www: MOV pp1,a ; выдача результата на порт вывода
DJNZ rr,repeate ; повторить для новых данных если они не исчерпаны
JMP $ ; блокировка продолжения после исчерпания теста
Трафарет для лабораторной работе №2 (вариант А)
Jmp start ;переход на начало головной программы,
ORG 03H ;обработчик внешних прерываний
PUSH psw ; защита основных регистров
PUSH acc
MOV psw,# 08h ;Изменение банка регистров
<<выполнение действий, вызываемых при прерывании>>
<< в соответствии с индивидуальным заданием>>
POP acc
POP psw ; восстановление регистров
RETI ; выход из обработчика
ORG 100H ; директива выделения памяти программ; место расположения
:рабочей программы
MOV rr,#nn ; rr - имя регистра ( любого по выбору студента)
;nn - число повторений теста ( любое число по выбору
; студента)
MOV ie,# xx ; разрешить прерывания
Repeate: ; метка возврата
NOP ; 3 команды имитируют фоновую задачу
NOP
NOP
MOV a, pp ; чтение данных из порта в аккумулятор
; pp – имя порта по выбору студента
: MOV rr1,a : сохранение считанного значения в любом регистре –
; нужно если проверка требует операций над исходным
; значением
<< команды вычисления условия выполнения заданного действия>>
JZ repeate ; команда проверки заданного условия
; могут потребоваться другие команды проверки (JNZ,JC и т.п)
<< преобразование принятых с порта данных>>
MOV pp1,a ; выдача результата на порт вывода
DJNZ rr,repeate ; повторить для новых данных если они не исчерпаны
JMP $ ; блокировка продолжения после исчерпания теста
Трафарет для лабораторной работе №2 (вариант б)
Jmp start ;переход на начало головной программы,
ORG 03H ;обработчик внешних прерываний
PUSH psw ; защита основных регистров
PUSH acc
MOV psw,# 08h ;Изменение банка регистров
<<выполнение действий, вызываемых при прерывании>>
<< в соответствии с индивидуальным заданием>>
POP acc
POP psw ; восстановление регистров
RETI ; выход из обработчика
ORG 100H ; директива выделения памяти программ; место расположения
:рабочей программы
MOV rr,#nn ; rr - имя регистра ( любого по выбору студента)
;nn - число повторений теста ( 5-10 по выбору
; студента)
MOV ie,# xx ; разрешить прерывания
Repeate: ; метка возврата
NOP ; 3 команды имитируют выполнение действий
NOP ; предшествующих операции ввода
NOP
Test: MOV a, pp ; чтение данных из порта в аккумулятор
; pp – имя порта по выбору студента
: MOV rr1,a : сохранение считанного значения в любом регистре –
; нужно если проверка требует операций над исходным
; значением
<< команды вычисления условия выполнения заданного действия>>
JZ test ; команда проверки заданного условия т.е.
; программная петля ожидания
; могут потребоваться другие команды проверки (JNZ,JC и т.п)
: CALL subr ; вызов программы по принципу программного опроcа ;готовности
MOV pp1,a ; выдача результата на порт вывода
DJNZ rr,repeate ; повторить для новых данных если они не исчерпаны
JMP $ ; блокировка продолжения после исчерпания теста
Subr: << преобразование принятых с порта данных>>
Ret ; возврат в основную программу
Трафарет для лабораторной работе №3
Jmp start ;переход на начало головной программы,
;----------------------------------;обработчик прерываний от таймера
; ( если третуется индивидуальным заданием)
ORG 0bH
JMP 50h
Org 50h
PUSH psw ; защита основных регистров
PUSH acc
MOV psw,# 08h ;Изменение банка регистров
<<выполнение действий, вызываемых при прерывании>>
<< в соответствии с индивидуальным заданием>>
POP acc
POP psw ; восстановление регистров
RETI ; выход из обработчика
; ------------------------------- конец обработчика прерываний от таймера
;-------------------обработчик прерываний от последовательного порта
; ( если требуется индивидуальным заданием)
ORG 23H
PUSH psw ; защита основных регистров
PUSH acc
MOV psw,# 10h ;Изменение банка регистров
<<выполнение действий, вызываемых при прерывании>>
<< в соответствии с индивидуальным заданием>>
POP acc
POP psw ; восстановление регистров
RETI ; выход из обработчика
; -------------- конец обработчика прерываний от порта
ORG 100H ; директива выделения памяти программ; место расположения
:рабочей программы
mov sp,#50h ; установка вершины стека
MOV PSW,#00
MOV rr,#nn ; rr - имя регистра ( любого по выбору студента)
;nn - число повторений теста ( любое число по выбору
; студента)
<< настройка режима последовательного порта ( загрузка регистрa SCON)>>
<< настройка таймера ( загрузка регистров TMOD,TLx,THx)>>
MOV ie,# xx ; разрешить прерывания в соответствии с инд. заданием
Repeate: ; метка возврата
NOP ; 3 команды имитируют фоновую задачу
NOP ;
NOP
; jmp repeate ; раскомментировать при задании ПГ=1
; Jnb SCONx,repeate ; раскомментировать при задании ПГ=3 *
; Jnb SCONx, $ ; раскомментировать при задании ПГ=2 *
: * - ожидание завершения обмена ; x= 0 или 1 в зависимости от ;индивидуального задания
<< преобразование принятых с порта данных>>
MOV pp,a ; выдача результата на порт вывода
DJNZ rr,repeate ; повторить для новых данных если они не исчерпаны
JMP $ ; блокировка продолжения после исчерпания теста