PORT_IN_ RUS1 ; |
EQU |
00FFH |
Адрес RUS порта ввода (МС 580ВВ79) |
PORT_IN_DAN1 ; |
EQU |
00FFH |
Адрес регистра данных порта вывода |
PORT_IN_ RUS2 ; |
EQU |
4000H |
Адрес RUS порта вывода (МС580ВВ51А) |
PORT_IN_DAN2 |
EQU |
8000H |
Адрес регистра даннных порта вывода |
STACK TOP |
EQU |
DFFFH |
Адрес вершины стека |
ORG |
0000H |
||
MGNITOFON; |
JMP INIT |
Переход на инициализацию |
|
LXISP |
Загрузить указатель стека |
||
STACK TOP TOPTTPTTOP |
|||
MVI A |
00H |
Заполнить А нулями |
|
OUT |
00H |
Сбросить в нуль индикатор загрузки |
|
OUT |
01H |
Сбросить в нуль индикатор ошибка по четности |
|
IN |
00H |
Считать состояние переключателя пересылки |
|
ANI |
01H |
Выделение D0 |
|
CPI |
01H |
Сравнить содержимое А с 1 |
|
JZ LOOP2 |
Если А=1, переход в подпрограмму записи |
||
LXI H |
M1 |
Загрузить начальный адрес РЕ-файла |
|
SHLD |
Переписать в оперативное ЗУ по адресу А1 |
||
MVI A |
FFH |
Команда с описанием режима в А |
|
OUT RUS2 |
Вывод в RUS2 |
||
IDENT; |
MVI A |
16H |
Инструкция команды в А |
OUT RUS2 |
Вывод в RUS2 |
||
EI |
Разрешение прерывания |
||
HLT |
Ожидание данных возврата через RET |
||
LDA Ltfb/Л |
8000H |
Переслать данные УСАПП в А |
|
STA |
M2 |
Переписать содержимое А в M2 |
|
CPI A |
C7H |
Сравнить содержимое А с C7H |
|
JNZ |
Переход по метке IDENT, если идентификатор не найден |
||
MVI A |
Инструкция команды в А в А |
||
OUT RUS2 |
Вывод в RUS2 |
||
EI |
Разрешение прерывания |
||
HLT |
Ожидание данных возврата через RET |
||
LDA |
8000H |
Переслать данные УСАПП в А (номер программы) |
|
STA |
0C75H |
Переписать в М3 |
|
LXIH |
Загрузить адрес, содержащий номер программы, в HL |
||
СМР М |
Сравнить содержимое А с номером программы в ячейке ЗУ |
||
JNZ |
Переход по метке IDENT, если найденный номер программы не равен введенному номеру программы |
||
LXI H |
Загрузить начальный адрес в HL |
||
SHLD |
Переписать по адресу |
||
ADDRESS; |
MVI A |
16H |
Инструкция команды в А |
STA |
C000 |
Содержимое А в УСАПП |
|
EI |
Разрешение прерывания |
||
HLT |
Ожидание; возврат через RET |
||
LDA |
8000 |
Данные УСАПП в А2 |
|
LHLD |
Загрузить Мх в HL |
||
СМР М |
Сравнить содержимое А с Мх |
||
JNZ |
Переход по метке IDENT, если не равно введенному начальному или ко нечному адресу |
||
LHLD |
0C70 |
Загрузить адрес в А2 (Мх) |
|
INX H |
Увеличить этот адрес на 1 (HL+1) |
||
SHLD |
0C70 |
Переписать увеличенный адрес в Mx |
|
MVI A |
6C |
Загрузить старший байт конечного адреса в А |
|
CPI H |
Сравнить содержимое А с содержимым Н |
||
JN2 |
Переход по метке ADDRESS после проверки всех 4 байт начального и конечного адресов |
||
MVI A |
49H |
Заполнить А единицами |
|
OUT |
00 |
Установка триггера индикации загрузки в состояние 1 |
|
LHLD |
OC68H |
Загрузить начальный адрес в HL |
|
SHLD |
0C72 |
Переписать в A3 |
|
DATA; |
MVI A |
16H |
Инструкция команды в А |
STA |
C000H |
Инструкция форматам команды в УСАПП |
|
El |
Разрешение прерывания |
||
HLT |
Ожидание |
||
LDA |
Переслать данные в УСАПП в А |
||
LHLD |
Загрузить содержимое адреса A3 в hl. |
||
MOV M |
Переписать содержимое А в программный файл |
||
INX H |
Увеличить адрес программы на 1 |
||
SHLD |
Переписать увеличенный адрес в A3 |
||
CALL PE-CHECK |
Проверка на четность: переход по метке РЕ-СНЕСК |
||
LDA |
0C6AH |
Загрузить содержимое М4 (конечный адрес) в А (младший байт) |
|
CMP L |
Конец программного файла? |
||
JNZ DATA |
Если ¹ О, продолжить пересылки данных; переход по метке DATA |
||
LDA |
0C6B |
Загрузить содержимое М4 (конечный адрес) в А (младший байт) |
|
CMP H |
Конец программного файла? |
||
JNZ |
Если¹О, продолжить пересылки данных; переход по метке DATA |
||
XRA A |
Нуль в А |
||
OUT |
00 |
Сбросить в нуль триггер индикатора загрузки |
|
JMP LOOP1 |
Переход на LOOP1 |
||
LOOP2; |
LXI H |
0C67 |
Загрузить адрес номера программы |
SHLD |
0C70H |
Переписать Мх в оперативное ЗУ |
|
MVI H |
FFH |
Загрузить 1 (DO) |
|
OUT RUS2 |
Вывод в RUS2 |
||
MVI A |
33H |
Команда с описанием режима в А |
|
OUT RUS2 |
Вывод в RUS2 |
||
MVI A |
C7 |
Загрузить индефикатор |
|
STA |
8000H |
Запомнить IDENT в УСАПП |
|
LXI H |
9000H |
Ввод начального адреса |
|
EXIT 1; |
IN_RUS1 |
Ввод словосостояния |
|
ANI |
0FH |
Выделение D3-D0 |
|
JZ EXIT 1 |
Если Z=0, то ожидание нажатия |
||
MVI A |
40H |
||
OUT RUS1 |
Команда чтения FIFO |
||
IN_DAN1 |
Чтение FIFO |
||
STA M6 |
Запоминание по адресу М6 |
||
MOV C,A |
В регистр С – код нажатой клавиши |
||
CALL PEREVOD |
П/п перевода двоичного кода в 7-сегментный |
||
CALL DISPL |
П/п вывода на дисплей |
||
EXIT 2; |
IN RUS1 |
Ввод словосостояния |
|
ANI |
0FH |
Выделение D3-D0 |
|
JZ EXIT 2 |
Если Z=0, то ожидание нажатия |
||
MVI A |
40H |
||
OUT RUS1 |
Команда чтения FIFO |
||
IN_DAN1 |
Чтение FIFO |
||
STA M7 |
Запоминание по адресу М7 |
||
MOV C,A |
В регистр С – код нажатой клавиши |
||
CALL PEREVOD |
П/п перевода двоичного кода в 7-сегментный |
||
CALL DISPL |
П/п вывода на дисплей |
||
EXIT 3; |
IN RUS1 |
Ввод словосостояния |
|
ANI |
0FH |
Выделение D3-D0 |
|
JZ EXIT 3 |
Если Z=0, то ожидание нажатия |
||
MVI A |
40H |
||
OUT RUS1 |
Команда чтения FIFO |
||
IN_DAN1 |
Чтение FIFO |
||
STA M8 |
Запоминание по адресу М8 |
||
MOV C,A |
В регистр С – код нажатой клавиши |
||
CALL PEREVOD |
П/п перевода двоичного кода в 7-сегментный |
||
CALL DISPL |
П/п вывода на дисплей |
||
EXIT 4; |
IN RUS1 |
Ввод словосостояния |
|
ANI |
0FH |
Выделение D3-D0 |
|
JZ EXIT 4 |
Если Z=0, то ожидание нажатия |
||
MVI A |
40H |
||
OUT RUS1 |
Команда чтения FIFO |
||
IN_DAN1 |
Чтение FIFO |
||
STA M9 |
Запоминание по адресу М9 |
||
MOV C,A |
В регистр С – код нажатой клавиши |
||
CALL PEREVOD |
П/п перевода двоичного кода в 7-сегментный |
||
CALL DISPL |
П/п вывода на дисплей |
||
EXIT 5; |
IN RUS1 |
Ввод словосостояния |
|
ANI |
0FH |
Выделение D3-D0 |
|
JZ EXIT 5 |
Если Z=0, то ожидание нажатия |
||
MVI A |
40H |
||
OUT RUS1 |
Команда чтения FIFO |
||
IN_DAN1 |
Чтение FIFO |
||
STA M10 |
Запоминание по адресу М10 |
||
MOV C,A |
В регистр С – код нажатой клавиши |
||
CALL PEREVOD |
П/п перевода двоичного кода в 7-сегментный |
||
CALL DISPL |
П/п вывода на дисплей |
||
EXIT 6; |
IN RUS1 |
Ввод словосостояния |
|
ANI |
0FH |
Выделение D3-D0 |
|
JZ EXIT 6 |
Если Z=0, то ожидание нажатия |
||
MVI A |
40H |
||
OUT RUS1 |
Команда чтения FIFO |
||
IN_DAN1 |
Чтение FIFO |
||
STA M11 |
Запоминание по адресу М11 |
||
MOV C,A |
В регистр С – код нажатой клавиши |
||
CALL PEREVOD |
П/п перевода двоичного кода в 7-сегментный |
||
CALL DISPL |
П/п вывода на дисплей |
||
LDA M6 |
Загрузка А¬М6 |
||
ANI |
OFH |
Выделение младшей тетрады |
|
STA M12 |
Запоминание А по адресу М12 |
||
LDA M7 |
Загрузка А¬М7 |
||
RLC |
|||
RLC |
|||
RLC |
|||
RLC |
Перенос младшей тетрады на место старшей |
||
STA M12 |
Запоминание А по адресу M12=M6+M7 |
||
LDA M8 |
Загрузка А¬М8 |
||
ANI |
OFH |
Выделение младшей тетрады |
|
STA M13 |
Запоминание А по адресу М13 |
||
LDA M9 |
Загрузка А¬М9 |
||
RLC |
|||
RLC |
|||
RLC |
|||
RLC |
Перенос младшей тетрады на место старшей |
||
STA M13 |
Запоминание А по адрессу M13=M6+M7-младший байт |
||
LDA M10 |
Загрузка А¬М10 |
||
ANI |
OFH |
Выделение младшей тетрады |
|
STA M14 |
Запоминание А по адресу М14 |
||
LDA M11 |
Загрузка А¬М11 |
||
RLC |
|||
RLC |
|||
RLC |
|||
RLC |
Перенос младшей тетрады на место старшей |
||
STA M14 |
Запоминание А по адресу M14=M11+M10-младший байт |
||
LHLD M12 |
A¬M14-данные о длине программы |
||
MOV D A |
D¬A |
||
LOOP4; |
CALL KEY |
Ввод данных |
|
CALL PEREVOD |
П/п перевода двоичного кода в 7-сегментный |
||
CALL DISPL |
П/п вывода на дисплей |
||
JMP LOOP3 |
Переход на метку М3 |
||
POP H |
Восстановление HL из стека |
||
LOOP3; |
INX H |
HL¬HL+1 |
|
DCR D |
D¬D-1 |
||
JNZ LOOP4 |
Переход на LOOP4,если D¹0 |
||
MVI A |
FF H |
Команда описания режима |
|
STA |
C000H |
Запись режима в УСАПП |
|
MVI A |
33H |
Инструкция команды |
|
STA |
C000H |
Инструкция команды в УСАПП |
|
MVI A |
C7 |
Загрузить идентификатор в А (RESTART 0) |
|
STA |
8000H |
Запомнить IDENT в УСАПП |
|
NUMBER; |
EI |
Разрешение прерывания |
|
HALT |
Ожидание |
||
MVI A |
33H |
Инструкция команды в А |
|
OUT_RUS2 |
Запись команд в УСАПП |
||
LHLD |
0С70H |
Загрузить содержимое Мх в HL (номер программы) |
|
MOV A M |
Номер программы в А |
||
STA |
8000H |
Содержимое А в УСАПП |
|
INX H |
Увеличить содержимое HL на 1 |
||
SHLD |
0C70H |
Переслать содержимое Н в Мх |
|
MVI A |
6CH |
Загрузить в А адрес ,в котором записав младший байт ко нечного адреса |
|
CMP L |
Сравнить содержимое А с содержимым L |
||
JNZ NUMER |
Если ¹ О,,то переход по метке NUMBER |
||
LHLD M12 |
Загрузить содержимое МЗ (начальный адрес) |
||
SHLD |
0C70H |
Переписать в А2 |
|
DATA; |
MVI A |
33H |
Инструкция команды в А |
OUT_RUS2 |
Инструкция команды в УСАПП |
||
LHLD |
0C70H |
Загрузить начальный адрес в HL |
|
MOV A M |
Содержимое адреса в А |
||
STA |
8000H |
Содержимое в УСАПП |
|
INX H |
Увеличить содержимое HL на 1 |
||
SHLD |
Переписать увеличенный адрес в ЗУ из адреса А2 |
||
LDA |
0C64H |
Загрузить начальный адрес+1024 (= конечный адрес) в А (младший байт) |
|
CMP L |
Сравнить содержимое L с содержимым А |
||
JNZ LOOP5 |
Если а¹о, переход по метке LOOP5 |
||
LDA |
0C6BH |
Загрузить начальный адрес+1024 (конечный адрес) в А (старший байт) |
|
CMP H |
Сравнить содержимое Н c содержимым А |
||
JZ ENE |
Если А=0, то запись на ленту подготовлена, переход по метке ENE Если А¹О, то продолжать |
||
LOOP5; |
EI |
Разрешение прерывания |
|
HALT |
Ожидание |
||
JMP DATA |
Переход по метки DATA |
||
ENE; |
MVI A |
00 |
Загрузить нуль в А |
OUT |
00 |
Сброс триггера индикатора загрузки |
|
JMP LOOP1 |
Переход на LOOP2 |
||
РЕ-СНЕСК; |
LDA |
С000H |
Проверка на четность; чтение слова состояния УСАПП |
ANI |
08H |
Чтение одного бита четности |
|
CPI H |
Равен ли бит четности 1? |
||
CZ |
Если произошла ошибка по четности, отметьте ее. Переход по метке PE-ERROR |
||
RET |
Переход |
||
PE-ERROR; |
XCHG |
Обменять содержимое HL с содержимым DE |
|
LHLD |
0C6EH |
Загрузить в HL содержимое адреса А1 |
|
LDA |
0C72H |
Загрузить в А ошибочный адрес (младший байт) |
|
MOV M |
Переслать содержимое А в РЕ-файл (младший байт) |
||
INX H |
Увеличить содержимое HL на 1 |
||
LDA |
0C73H |
Загрузить в А ошибочный адрес (старший байт) |
|
MOV M |
Переслать содержимое А в РЕ-файл |
||
INX H |
Увеличить содержимое HL на 1 |
||
SHLD |
0C6EH |
Переписать следующий адрес в А1 |
|
XCHQ |
Обменять содержимое HL с содержимым DE |
||
RET |
Переход |
||
INIT; |
MVI A |
DEH |
Формат управляющего слова |
OUT_RUS2 |
Вывод в RUS2 |
||
MVI A |
DO |
Формат инструкции команды |
|
OUT_RUS2 |
Вывод в RUS2 |
||
MVI A |
00H |
Команда установки режима |
|
OUT_RUS1 |
Вывод в RUS1 |
||
MVI A |
C1H |
Команда программной очистки |
|
OUT_RUS1 |
Вывод в RUS1 |
||
MVI A |
24H |
Установка частоты сканирования |
|
OUT_RUS1 |
Вывод в RUS1 |
||
RET |
Переход |
||
DISPL; |
MVI A |
90H |
Команда вывода на дисплей |
ORA E |
|||
OUT_RUS1 |
Вывод в RUS1 |
||
MOV A C |
Пересылка кода символа |
||
OUT_DAN1 |
Вывод символа на дисплей |
||
RET |
Переход |
||
PEREVOD; |
LXI H TABLE |
CODE |
|
MVI B D |
|||
DAD B |
|||
MOV C M |
HL¬HL+BC |
||
RET |
|||
TABLE CODE |
DB |
3F |
Код клавиши“0” |
DB |
06 |
Код клавиши “1” |
|
DB |
5B |
Код клавиши “2” |
|
DB |
4F |
Код клавиши “3” |
|
DB |
66 |
Код клавиши “4” |
|
DB |
6D |
Код клавиши “5” |
|
DB |
7D |
Код клавиши “6” |
|
DB |
07 |
Код клавиши “7” |
|
DB |
7F |
Код клавиши “8” |
|
DB |
6F |
Код клавиши “9” |
|
DB |
77 |
Код клавиши “A” |
|
DB |
7C |
Код клавиши “B” |
|
DB |
63 |
Код клавиши “C” |
|
DB |
5E |
Код клавиши “D” |
|
DB |
27 |
Код клавиши “E” |
|
DB |
71 |
Код клавиши “F” |
|
KEY; |
IN RUS1 |
Вывод словосостояния |
|
ANI |
0FH |
Выделение D3-D0 |
|
JZ KEY |
Если JZ¹1 , то цикл ожидания |
||
MVI A |
40H |
||
OUT RUS1 |
Команда чтения FIFO |
||
IN DAN1 |
Чтения FIFO |
||
MOV C A |
В регистр С – код клавиши |
||
RET |
1. Й. Янсен . Курс цифровой электроники . т.4 Микрокомпьютеры
Пер. с голландского М. Мир 1987г.
2. Цифровые и аналоговые интегральные микросхемы . Справочник под ред. С.В. Якубовского . М. Радио и связь 1989г.
3. Цифровые интегральные микросхемы . Справочник . М.И Богданович . Мн. Беларусь 1991г.
4. Логические ИС серии1533 . Справочник тт1,2 . Мн Бином 1993 г.
5. Реисторы , конденсаторы , трансформаторы , доссели , коммутационные устройства РЭА . Справочник . Н.Н. Акимов и др. Мн. Беларусь 1994 г.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.