курсач бегущая строка / Программа версия 2
.docxПрограмма:
|
метка |
мнемокод |
комментарий |
|
|
ORG 0h |
Начало??? |
|
|
MVI A, 89h |
Инициализация портов |
|
|
OUT 13h |
Порт А выход, В – выход, С0-С3 вход, С4-С7 вход |
|
L1! |
MVI C,1h |
Счетчик номера индикатора (номера строки) регистр С, присваиваем значение 1 |
|
L1 |
MOV A,C |
Программа опроса клавиатуры |
|
|
OUT 10h |
Посылаем номер индикатора(строки) в порт A |
|
|
IN 12h |
Считываем в аккумулятор???? данные из порта С |
|
|
CPI C, 7h |
Вычитание семерки из номера индикатора |
|
|
JNZ M1 |
Если не ноль переход к метке M1 |
|
|
MVI C, 0h |
Если ноль обнуляем регистр С |
|
M1 |
INX C |
Инкремент регистра С |
|
|
CMP A, FF |
Вычитание числа FF из значения аккумулятора (если кнопка не нажата в аккумуляторе значение FF) |
|
|
JZ L1 |
Если ноль переход к метке L1 |
|
|
DCR C |
Идентифицируем символ в пзу Декремент регистра С |
|
M2 |
LXI H, 0800 |
Записываем в регистр H адрес ячейки ПЗУ 0800 |
|
|
CMP M, A |
Вычитание значений в памяти и в аккумуляторе |
|
|
JZ M3 |
Если ноль переход к метке M3 |
|
|
INX H |
|
|
|
INX H |
|
|
|
JMP M2 |
Переход к метке М2 |
|
M3 |
INX H |
|
|
|
INX H |
|
|
|
DCR С |
|
|
|
CPI C, 0h |
|
|
|
JNZ M3 |
|
|
|
|
|
|
|
Считаем какой по счету нажатый символ. + сброс |
|
|
|
MVI B, 7h |
Счетчик символов регистр В, присваиваем ему значение 7 |
|
|
DCR B |
Декремент счетчика символов |
|
|
JNZ L2 |
Переход к метке L2 если не ноль |
|
|
MVI А,00Н |
сброс индикаторов |
|
|
OUT 11h |
|
|
|
LXI H, 0000h |
Обнуляем озу |
|
|
MVI D, 80h |
|
|
L9 |
MOV M, A |
|
|
|
INX H |
|
|
|
DCR D |
|
|
|
JNZ L9 |
|
|
|
JMP L1 |
Все сбросили венулись в начало |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
MOV A, M |
Записать данные из ячейки памяти в аккумулятор |
|
|
OUT 11h |
Отправить данные из аккумулятора в порт В |
|
|
??? MVI L, 0h |
Счетчик номера индикатора регистр С, присваиваем значение 0 |
|
|
MVI A, L |
Записываем значение регистра С в аккумулятор |
|
L |
OUT 10h |
Отправляем номер индикатора в порт А |
|
|
MVI E,FF |
Начало программы создания временной задержки |
|
L6: |
MVI D,FF |
|
|
L5: |
NOP |
|
|
|
DCR D |
|
|
|
JNZ L5 |
|
|
|
DCR E |
|
|
|
JNZ L6 |
|
|
|
MVI А,00Н |
Гашение индикатора |
|
|
OUT 11h |
|
|
|
INX L |
Инкремент номера индикатора |
|
|
CPI С, 7??h |
Вычитание значения регистра L и числа 6 |
|
|
JNZ L7 |
Переход к метке L7 если не ноль |
|
|
МVI C, 0h |
Обнуляем номер индикатора тут цикл чтобы опросить все ячейки ОЗУ?? |
|
L7 |
LXI H, 0000h |
Меняем значения ячеек памяти ОЗУ |
|
|
MOV A, H |
|
|
|
MOV E, A |
|
|
|
MVI D, 06h |
|
|
|
LXI H, 0001h |
|
|
L8 |
MOV A, H |
|
|
|
DCR H |
|
|
|
MOV M, A |
|
|
|
INX H |
|
|
|
INX H |
|
|
|
DCR D |
|
|
|
JNZ L8 |
|
|
|
LXI H, 0006h |
|
|
|
MOV A, E |
|
|
|
MOV M, A |
|
|
|
JMP L1 |
Переход к началу программы |
