6. Блок-схема алгоритма и программа работы
ТВИ
передает управление процедуре обработки
входного сигнала
Инкрементируем
счетчик входных сигналов, сохраняя
текущий номер
Ввод
очередного
сигнала
Вычитаем
из значения полученного сигнала
идеальный
Выход
из
процедуры.
Запись
в память номера текущего сигнала.
Делим
число на 10.
Окончание
работы
Вывод
очередного
числа
Остаток
от деления передаем на индикацию.
Делим
число на 10.
Остаток
от деления передаем на индикацию.
Делим
число на 10.
Остаток
от деления передаем на индикацию.
Делим
число на 10.
Остаток
от деления передаем на индикацию.
Выход
из процедуры.
ТВИ
передает управление процедуре вывода
очередного сигнала
7. Листинг программы
; ВХОД:
; d - 15 - 10% от значения идеального сигнала на уровне 0,5Uвх
; b = 150 - значение идеального сигнала на уровне 0,5Uвх
; с - номер предыдущего сигнала
work proc
in dd9 ; получаем в a текущий сигнал
inr c ; увеличиваем счётчик
sub b ; из значения полученного сигнала вычитаем значение идеального
cmp d ; сравниваем остаток с 10%
jm quit
jz quit
mov e, c
push d ; закидываем в память регистр de хранящий номер текущего сигнала
quit: ret
work endp
results proc
lxi h, 0 ; hl = 0
dad sp ; hl = hl + sp
; sp = 1 ? т.е. стек закончился
mov a, h
cpi 0
jnz next2
mov a, l
cpi 1
jnz next2
hld ; стек пуст, заканчиваем работу
next2: pop b ; bc = номер глючного сигнала
mov l, 4 ; на индикаторе 4 цифры
mov d, 0Ah ; индикатор показывает десятеричные цифры
; bc - делимое, d - делитель, h - частное
num: mov h, 0
mov a, c
get_num:
; bc = bc - 10
cmp d ; сравниваем делимое с 10
jm out_num ; если меньше 10, то выводим на индикатор
sub d ; иначе вычитаем 10
inr h ; и увеличиваем частное на 1
jmp get_num
out_num:
out dd11 ; выводим на порт очередную цифру
mov c, h ; делимое = частному для нахождения оставшихся цифр
dcr l
jnz num
results endp
end start
8. Список использованной литературы
1.
2.
3.
4.