Вычислительные системы и микропроцессорная техника
Московский Авиационный институт
(технический университет)
КАФЕДРА 403
Расчетно-пояснительная записка
к курсовой работе по дисциплине
Вычислительные системы и микропроцессорная техника
выполнил: студент гр. 04-417
Левин О.А.
проверил: Герасимов А.Л.
МОСКВА 1997
Содержание
1. Анализ задания - 2
2. Комбинационный вариант - 2
3. Алгоритм работы устройства - 4
4. Микропрограмма - 5
5. Управляющий автомат с жесткой логикой - 5
6. Управляющий автомат с МПУ - 8
7. Выбор элементной базы - 10
8. Составление программы - 12
Задание
ВАРИАНТ №17
Задается входной код D{1:32}. Спроектировать вычислитель, который определяет номер разряда самой первой и самой последней единиц, стоящих между нулями. Предусмотреть реакцию проектируемого устройства в случае отсутствия таких сигналов.
Анализ и уточнение задания
·
Очевидно, что в тридцатидвухразрядном коде единица, стоящая между двумя нулями ни при каких обстоятельствах не может находится ни в первом ни в тридцать втором разряде кода.
·
·
·
D{1:32} B{1:6}
F C{1:6}
СТРОБ
УСЧИТ
Рисунок SEQ Рисунок * ARABIC 1
Обобщенная функциональная схема устройства
Комбинационный вариант устройства
Функциональная схема комбинационного устройства, осуществляющего параллельную обработку входного кода представлена на рисунке 2. Входной код D{1:32} разбивается на пересекающиеся элементы по три разряда: D’{1:3}, D’{2:4},...D’{30:32}. Крайние разряды D’ проходят через инверторы DD1, DD3, DD4, DD6, DD7, DD9,...DD88, DD90. Проинвертированные крайние разряды вместе с центральным разрядом элемента поступают на логическую схему И, на выходе которой в случае если D{i-1, i, i+1}=010 сформируется высокий логический уровень напряжения, приводящий в действие соответствующий элемент индикации на внешней панели устройства. При визуальном контроле внешней панели устройства по расположению работающих элементов индикации можно определить номер разряда первой и последней единиц, стоящих между нулями.
Для реализации данной схемы потребуется 20 микросхем 1533ЛН1 (6 логических элементов НЕ), 10 - КР1533 (3 элемента 3И), 4 - КР531ЛЕ7 (2 элемента 5 ИЛИ-НЕ), 1 - 1533ЛИ6 (2 элемента 4И), 1 - 1533ЛИ1 (4 элемента 2И).
Основным недостатком данной схемы является невозможность дальнейшей обработки выходной информации.
НАЧАЛО
НЕТ
РЕГ В {1:32}=D{1:32}
РЕГ А{1:32}=РЕГ В{1:32}
СЧЕТ Ц1=2
ДА
{1}=0 & РЕГ А{2}=1 & РЕГ А{3}=0
НЕТ
РЕГ А{1:32}=РЕГ А{2:32}.0
СЧЕТ Ц1=СЧЕТ Ц1 +1
НЕТ
ДА
РЕГ А{1:32}=РЕГ В{1:32}
ДА
РЕГ А{32}=0 & РЕГ А{31}=1 & РЕГ А{30}=0
НЕТ
РЕГ А{1:32}=РЕГ А{1:31}.0
СЧЕТ Ц=СЧЕТ Ц -1
НЕТ
B {1:6}=СЧЕТ Ц1; С {1:6}=СЧЕТ Ц2
КОНЕЦ
Рисунок 3
Блок-схема алгоритма работы устройства
Микропрограмма
Переменные:
Входные:
·
·
Выходные:
·
Внутренние:
·
·
Признаки:
·
·
·
· {1:6} = 32
· 2 {1:6} = 1
Программа
М1 ЕСЛИ НЕ Р1 ТО М1
(СТРОБ) РЕГ В{1:32}=D {1:32}
(УЗАП1) РЕГ А{1:32}=РЕГ В {1:32}
(УН1) СЧЕТ Ц1 {1:6} =2
М2 ЕСЛИ Р2 ТО М3
(УСДВ1) РЕГ А{1:32}=РЕГ А{2:32}.0 }
(УСЧ1) СЧЕТ Ц1 {1:6}=СЧЕТ Ц1 {1:6}+1 } УЭ1
ЕСЛИ НЕ Р4 ТО М2
М3 (УЗАП1) РЕГ А{1:32}=РЕГ В {1:32}
(УН2) СЧЕТ Ц2 {1:6} =31
М4 ЕСЛИ Р3 ТО М5
(УСДВ2) РЕГ А{1:32}=0.РЕГ А{1:31} }
(УСЧ2) СЧЕТ Ц2 {1:6}=СЧЕТ Ц2 {1:6}-1 } УЭ2
ЕСЛИ НЕ Р5 ТО М4
М5 (УСЧИТ1) В{1:6}=СЧЕТ Ц1 {1:6} }
(УСЧИТ2) С{1:6}=СЧЕТ Ц2 {1:6} } УЭ3
КОНЕЦ (ИДТИ К М1)
Как видно из текста микропрограммы, некоторые сигналы можно объединить и заменить эквивалентными сигналами. Функциональная схема операционной части устройства приведена на рисунке 4.
Разработка управляющего автомата с жесткой логикой
Управляющий автомат с жесткой логикой будет реализовываться в виде классического конечного автомата Мили или Мура. На основании блок-схемы алгоритма работы устройства определим количество состояний для каждого типа автомата. Обозначим состояния автомата Мура буквой S, а состояния автомата Мили - S’. Как видно из рисунка 5, у автомата Мура будет шесть состояний, в то время как у автомата Мили - лишь четыре.
НАЧАЛО S0
S’0
0 Р1
УН 1, УЗАП 1 S1
0 S’1 1
Р2
УЭ 1 S2 УЗАП 1, УН 2 S3
0
Р4 S’2
УЗАП 1 УН 2 S3
0 S’3 1
Р3
УЭ 2 S5 УЗАП 1 УЭ 3 S4
0
Р5 S’4
S6 УЗАП 1 УЭ 3
КОНЕЦ S’0
Рисунок 5.
Состояния конечных автоматов Мили и Мура.
Таким образом, определим, что управляющее устройство необходимо синтезировать в виде конечного автомата Мили
Р1/—
P1/УН 1, УЗАП 1 Р2/УЭ 1 Р4/УН 2, УЗАП 1 Р3/УЭ 2
S0 S1 S2 S3 S4
Р4/— Р5/—
Р2/УН 2, УЗАП 1
Р3/УЭ 3
Р5/УЭ 3
Граф состояний автомата Мили.
S0 |
S1 |
S2 |
S3 |
S4 |
|
Q1 |
0 |
0 |
0 |
1 |
1 |
Q2 |
0 |
0 |
1 |
1 |
0 |
Q3 |
0 |
1 |
1 |
1 |
1 |
Таблица SEQ Таблица * ARABIC 1
Кодированная таблица состояний.
ВХОД |
S0 |
S1 |
S2 |
S3 |
S4 |
P1 |
S1/УН 1,УЗАП1 |
||||
НЕ Р1 |
S0/- |
||||
Р2 |
S3/ УН 2, УЗАП1 |
||||
НЕ Р2 |
S2/УЭ 1 |
||||
Р3 |
S0/УЭ 3 |
||||
НЕ Р3 |
S4/УЭ 2 |
||||
Р4 |
S3/УН 2, УЗАП 1 |
||||
НЕ Р4 |
S1/- |
||||
P5 |
S0/УЭ 3 |
||||
НЕ P5 |
S3/- |
Таблица SEQ Таблица * ARABIC 2
Таблица переходов и выходов
ВХОД |
0 0 0 |
0 0 1 |
0 1 1 |
1 1 1 |
1 0 1 |
P1 |
0 0 1/УН 1, УЗАП 1 |
||||
НЕ Р1 |
0 0 0/- |
||||
Р2 |
1 1 1/ УН 2, УЗАП 1 |
||||
НЕ Р2 |
0 1 1/УЭ 1 |
||||
Р3 |
0 0 0/УЭ 3 |
||||
НЕ Р3 |
1 0 1/УЭ 2 |
||||
Р4 |
1 1 1/УН 2, УЗАП 1 |
||||
НЕ Р4 |
0 0 1/- |
||||
P5 |
0 0 0/УЭ 3 |
||||
НЕ P5 |
1 1 1/- |
Таблица SEQ Таблица * ARABIC 3
Кодированная таблица переходов и выходов
Если в конечном автомате будет применяться D-триггер, то будут справедливы равенства:
Q1 (t+1) = ÍÅ Q1*ÍÅ Q2*Q3*P2 + ÍÅ Q1*Q2*Q3*P4 + Q1*Q2*Q3*ÍÅ P3+ Q1*ÍÅ Q2*Q3*ÍÅ P5 [20 входов]
Q2 (t+1) = ÍÅ Q1*ÍÅ Q2*Q3*P1 + ÍÅ Q1*Q2*Q3*ÍÅ P4 + Q1*ÍÅ Q2*Q3*ÍÅ P5 [15 входов]
Q3 (t+1) = ÍÅ Q1*ÍÅ Q2*ÍÅ Q3*P1 + ÍÅ Q1*ÍÅ Q2*Q3 + ÍÅ Q1*Q2*Q3 + Q1*Q2*Q3*ÍÅ P3 + Q1*ÍÅ Q2*Q3*ÍÅ P5 = =ÍÅ Q1*ÍÅ Q2*ÍÅ Q3*P1 + ÍÅ Q1*Q3 + Q1*Q2*Q3*ÍÅ P3 + Q1*ÍÅ Q2*Q3*ÍÅ P5 [18 входов]
Для реализации автомата на D-триггерах потребуется 43 входа. Если будет использоваться J-K триггер, то уравнения для него можно получить из уравнений для D-триггера:
Q (t+1)=J*Q+K*Q
Q(T+1)=J*HE Q + HE K*Q
J1=ÍÅ Q2*Q3*P2+Q2*Q3*P4=Q3*(ÍÅ Q2*P2+Q2*P4) [6 входов]
K1=(Q2*Q3*ÍÅ P3+ÍÅ Q2*Q3*ÍÅ P5)=(Q2*Q3*ÍÅ P3)*(ÍÅ Q2*Q3*ÍÅ P5)=(ÍÅ Q2+
ÍÅ Q3+P3)*(Q2+ÍÅ Q3+P5) [8 входов]
J2=(ÍÅ Q1*Q3+Q1*Q3*ÍÅ P5)=Q3*(ÍÅ Q1+Q1*ÍÅ P5) [6 входов]
K2=(ÍÅ Q1*Q3*P4) = Q1+ÍÅ Q3+ÍÅ P4 [3 входа]
J3=ÍÅ Q1*ÍÅ Q2*P1 [3 входа]
K3=(ÍÅ Q1*ÍÅ Q2+ÍÅ Q1*Q2+Q1*Q2*ÍÅ P3+Q1*ÍÅ Q2*ÍÅ P5) = (ÍÅ Q1+Q1*(Q2+ÍÅ Q2*ÍÅ
P5)) =Q1*(ÍÅ Q1+(Q2+ÍÅ Q2*ÍÅ P5)) = Q1*ÍÅ Q2*(Q2+P5) = Q1*ÍÅ Q2*P5 [3 входа]
Для реализации автомата на J-K-триггерах потребуется 29 входов, поэтому автомат будет реализовываться на них. Управляющие сигналы на основе таблицы переходов и выходов будут формироваться следующим образом
УН 1=ÍÅ Q1*ÍÅ Q2*ÍÅ Q3*P1
УЭ 1=ÍÅ Q1*ÍÅ Q2*Q3*ÍÅ P2
УН 2=ÍÅ Q1*Q2*Q3*P4+ÍÅ Q1*ÍÅ Q2*Q3*P2
УЭ 2=Q1*Q2*Q3*ÍÅ P3
УЭ 3=Q1*ÍÅ Q2*Q3*P5+Q1*Q2*Q3*P3
УЗАП1=УН 1+УН 2
Управляющий автомат с микропрограммным
управлением
Принудительная адресация
Каноническая форма микропрограммы разрабатываемого устройства с учетом эквивалентности сигналов представлена в таблице 4:
№ |
МЕТКА |
УПР. СИГНАЛ |
ПЕРЕХОД |
1 |
М1 |
ЕСЛИ НЕ Р1 ТО М1 |
|
2 |
УН 1, УЗАП1 |
||
3 |
М2 |
ЕСЛИ Р2 ТО М3 |
|
4 |
УЭ 1 |
||
5 |
ЕСЛИ НЕ Р4 ТО М2 |
||
6 |
М3 |
УН 2, УЗАП1 |
|
7 |
М4 |
ЕСЛИ Р3 ТО М5 |
|
8 |
УЭ 2 |
||
9 |
ЕСЛИ НЕ Р5 ТО М4 |
||
10 |
М5 |
УЭ 3 |
ИДТИ К М1 |
Таблица SEQ Таблица * ARABIC 4
Каноническая форма микропрограммы.
Адрес |
УН 1 |
УЭ 1 |
УН 2 |
УЭ 2 |
УЭ 3 |
УЗАП1 |
Не Р1 |
Р2 |
Р3 |
Не Р4 |
Не Р5 |
Адрес перехода |
||||||
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
1 |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
1 |
0 |
1 |
0 |
0 |
1 |
1 |
0 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
1 |
0 |
0 |
1 |
0 |
1 |
0 |
0 |
1 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
1 |
0 |
0 |
1 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
1 |
0 |
0 |
1 |
0 |
1 |
1 |
1 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
1 |
1 |
0 |
1 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
1 |
0 |
1 |
0 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
Таблица SEQ Таблица * ARABIC 5
Кодовые выражения микропрограммы.
Минимальная требуемая емкость ПЗУ - (или 2К*4 Бит)
Естественная адресация
№ |
МЕТКА |
УПР. СИГНАЛ |
ПЕРЕХОД |
1 |
М1 |
ЕСЛИ НЕ Р1 ТО М1 |
|
2 |
УН 1, УЗАП1 |
||
3 |
М2 |
ЕСЛИ Р2 ТО М3 |
|
4 |
УЭ 1 |
||
5 |
ЕСЛИ НЕ Р4 ТО М2 |
||
6 |
М3 |
УН 2, УЗАП1 |
|
7 |
М4 |
ЕСЛИ Р3 ТО М5 |
|
8 |
УЭ 2 |
||
9 |
ЕСЛИ НЕ Р5 ТО М4 |
||
10 |
М5 |
УЭ 3 |
|
11 |
ИДТИ К М1 |
Таблица SEQ Таблица * ARABIC 6
Каноническая форма микропрограммы.
Адрес |
П |
УН 1 |
УЭ 1 |
УН 2 |
УЭ 2 |
УЭ 3 |
УЗАП 1 |
||||||
П |
НЕ P1 |
P2 |
P3 |
НЕ P4 |
НЕ P5 |
Адрес перехода |
|||||||
0 |
0 |
0 |
0 |
1 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
1 |
0 |
0 |
0 |
0 |
1 |
– |
– |
– |
0 |
0 |
1 |
0 |
1 |
0 |
1 |
0 |
0 |
0 |
0 |
1 |
0 |
1 |
0 |
0 |
1 |
1 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
– |
– |
– |
0 |
1 |
0 |
0 |
1 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
1 |
0 |
0 |
1 |
0 |
1 |
0 |
0 |
0 |
1 |
0 |
0 |
1 |
– |
– |
– |
0 |
1 |
1 |
0 |
1 |
0 |
0 |
1 |
0 |
0 |
1 |
0 |
0 |
1 |
0 |
1 |
1 |
1 |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
– |
– |
– |
1 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
1 |
0 |
1 |
1 |
0 |
1 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
- |
– |
– |
1 |
0 |
1 |
0 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
Таблица SEQ Таблица * ARABIC 7
Кодовые выражения микропрограммы
Необходимый объем ПЗУ может быть уменьшен путем шифрации маски признаков.
П |
УН 1 |
УЭ 1 |
УН 2 |
УЭ 2 |
УЭ 3 |
УЗАП 1 |
||||||
Адрес |
П |
Маска признаков |
Адрес перехода |
|||||||||
0 |
0 |
0 |
0 |
1 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
|
0 |
0 |
0 |
1 |
0 |
1 |
0 |
0 |
0 |
0 |
1 |
– |
|
0 |
0 |
1 |
0 |
1 |
0 |
1 |
0 |
0 |
0 |
0 |
1 |
|
0 |
0 |
1 |
1 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
– |
|
0 |
1 |
0 |
0 |
1 |
0 |
1 |
1 |
1 |
0 |
0 |
0 |
|
0 |
1 |
0 |
1 |
0 |
0 |
0 |
1 |
0 |
0 |
1 |
– |
|
0 |
1 |
1 |
0 |
1 |
1 |
0 |
0 |
0 |
0 |
1 |
0 |
|
0 |
1 |
1 |
1 |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
– |
|
1 |
0 |
0 |
0 |
1 |
1 |
0 |
1 |
0 |
1 |
0 |
1 |
|
1 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
- |
|
1 |
0 |
1 |
0 |
1 |
1 |
1 |
0 |
0 |
0 |
0 |
0 |
|
Таблица SEQ Таблица * ARABIC 8
Минимизированные кодовые выражения микропрограммы
Минимальная требуемая емкость ПЗУ - (или 256*4 Бит), что меньше, чем требуется для принудительной адресации, поэтому будем применять естественную адресацию. Функциональная схема управляющего автомата с микропрограммным управлением показана на рисунке 7.
Выбор элементной базы
Устройство будем реализовывать на интегральных микросхемах серий 1533, так как микросхемы этой серий обладают наиболее оптимальными параметрами среди современных микросхем.[1]
Время задержки, нс |
Потребляемая мощность, мВт |
|
531 |
3,2 |
20 |
533 |
10 |
2 |
1531 |
3 |
4 |
1533 |
4 |
2 |
Таблица SEQ Таблица * ARABIC 9
Основные электрические параметры микросхем серии 1533
·
·
· не менее -30 мА и не более -112 мА
·
·
·
·
·
Предельно допустимые режимы эксплуатации
·
·
·
Основными элементами устройства являются счетчики и регистры. Счетчик будет реализован на двух микросхемах 1533ИЕ7 - четырехразрядном синхронном реверсивном счетчике. Он имеет три основных режима: параллельная асинхронная загрузка кода по входам Di при поступлении отрицательного ипульса на вход С, режим суммирования и режим вычитания. В двух последних режимах счетные импульсы подают на различные входы: суммирования и вычитания.
Входной код будет записываться в восемь четырехразрядных универсальных регистра сдвига на микросхемах КР531ИР11. Регистр функционирует в одном из четырех режимов, которые задаются двухразрядным кодом на входе S. Параллельный ввод информации со входа D происходит синхронно, по положительному фронту тактового импульса.
R |
S1 |
S0 |
C |
DR |
DL |
D0 |
D1 |
D2 |
D3 |
Q0 |
Q1 |
Q2 |
Q3 |
|
Уст. L |
L |
X |
X |
X |
X |
X |
X |
X |
X |
X |
L |
L |
L |
L |
Пок-ой |
H |
X |
X |
L |
X |
X |
X |
X |
X |
X |
QA0 |
QB0 |
QC0 |
QD0 |
Зап-ись |
H |
H |
H |
X |
X |
a |
b |
c |
d |
a |
b |
c |
d |
|
Сдв. |
H |
L |
H |
L |
L |
X |
X |
X |
X |
L |
QAn |
QBn |
QCn |
|
впр-аво |
H |
L |
H |
H |
H |
X |
X |
X |
X |
H |
QAn |
QBn |
QCn |
|
Сдв. |
H |
H |
L |
X |
X |
X |
X |
X |
X |
QB |
QC |
QD |
L |
|
вле-во |
H |
H |
L |
X |
X |
X |
X |
X |
X |
QB |
QC |
QD |
H |
|
Пок-ой |
H |
L |
L |
X |
X |
X |
X |
X |
X |
X |
QA0 |
QB0 |
QC0 |
QD0 |
Таблица SEQ Таблица * ARABIC 10
Таблица истинности регистра КР531ИР11
Характеристики ППЗУ КР556РТ4
·
·
·
·
·
Составление программы
Программа на ассемблере
НАЧАЛО
СЧЕТЧИК=02Н
АККУМУЛЯТОР=
=1-ый справа байт кода
3 бит АККУМУЛЯТОРА
НЕТ
Сдвиг кода на разряд вправо
Запись значения счетчика в память
СЧЕТЧИК=02Н
АККУМУЛЯТОР=
=1-ый слева байт кода
3 бит АККУМУЛЯТОРА
ДА
2 3
1
1 2 3
Сдвиг кода на разряд влево
НЕТ
Запись значения счетчика в память
КОНЕЦ
Для нормального функционирования программы необходимо предварительно занести входной код, предварительно поделенный на байты в следующие ячейки памяти: 0800Н - 0803Н (в 0800Н - крайний левый байт кода и т.д.) и 0804Н - 0807Н (в 0804Н - крайний левый байт кода и т.д.)
Адрес |
Код |
Метка |
Команда |
Комментарий |
0809 |
16 |
MVI D,O2H |
Счетчик = 2 |
|
080A |
02 |
|||
080B |
3A |
M1 |
LDA 0803H |
Загрузка первого справа байта кода в аккумулятор |
080C |
03 |
|||
080D |
08 |
|||
080F |
E6 |
ANI 07H |
Маскирование 3 последних бит аккумулятора |
|
0810 |
07 |
|||
0811 |
FE |
CPI 02H |
Сравнение аккумулятора с 010В |
|
0812 |
02 |
|||
0813 |
CA |
JZ M2 |
||
0814 |
37 |
|||
0815 |
08 |
|||
0816 |
A7 |
ANA A |
Обнуление флага переноса |
|
0817 |
3A |
LDA 0800H |
||
0818 |
00 |
|||
0819 |
08 |
|||
081A |
1F |
RAR |
||
081B |
32 |
STA 0800H |
||
081C |
00 |
|||
081D |
08 |
|||
081E |
3A |
LDA 0801H |
||
0820 |
01 |
|||
0821 |
08 |
|||
0822 |
1F |
RAR |
||
0823 |
32 |
STA 0801H |
||
0824 |
01 |
|||
0825 |
08 |
|||
0826 |
3A |
LDA 0802H |
||
0827 |
02 |
|||
0829 |
08 |
Последовательный сдвиг |
||
082A |
1F |
RAR |
байтов кода вправо |
|
082B |
32 |
STA 0802H |
||
082C |
02 |
|||
082D |
08 |
|||
082E |
3A |
LDA 0803H |
||
082F |
03 |
|||
0830 |
08 |
|||
0831 |
1F |
RAR |
||
0832 |
32 |
STA 0803H |
||
0833 |
03 |
|||
0834 |
08 |
|||
0835 |
14 |
INR D |
Прибавление к счетчику единицы |
|
0836 |
7A |
MOV A, D |
||
0837 |
FE |
CPI 20H |
Сравнение значения счетчика с 32D |
|
0838 |
20 |
|||
083A |
7A |
M2 |
MOV A, D |
|
083B |
32 |
STA 0808H |
Запись первого результата в память |
|
083C |
08 |
|||
083D |
08 |
|||
083E |
16 |
MVI D,1FH |
Счетчик = 31 |
|
083F |
1F |
|||
0840 |
3A |
M3 |
LDA 0803H |
Загрузка первого слева байта кода в аккумулятор |
0841 |
03 |
|||
0842 |
08 |
|||
0843 |
E6 |
ANI E0H |
Маскирование 3 первых разрядов кода |
|
0844 |
E0 |
|||
0845 |
FE |
CPI 40H |
Сравнение аккумулятора с 0100 0000В |
|
0846 |
40 |
|||
0847 |
CA |
JZ M4 |
||
0848 |
6B |
|||
0849 |
08 |
|||
084A |
A7 |
ANA A |
Обнуление флага переноса |
|
084B |
3A |
LDA 0804H |
||
084C |
04 |
|||
084D |
08 |
|||
084E |
1F |
RAL |
||
084F |
32 |
STA 0804H |
||
0850 |
04 |
|||
0851 |
08 |
|||
0852 |
3A |
LDA 0805H |
||
0853 |
05 |
|||
0854 |
08 |
|||
0855 |
17 |
RAL |
||
0856 |
32 |
STA 0805H |
||
0857 |
05 |
|||
0858 |
08 |
|||
0859 |
3A |
LDA 0806H |
||
085A |
02 |
|||
085B |
08 |
Последовательный сдвиг |
||
085C |
17 |
RAL |
байтов кода влево |
|
085D |
32 |
STA 0806H |
||
085E |
06 |
|||
085F |
08 |
|||
0860 |
3A |
LDA 0807H |
||
0861 |
07 |
|||
0862 |
08 |
|||
0863 |
17 |
RAL |
||
0864 |
32 |
STA 0807H |
||
0865 |
07 |
|||
0866 |
08 |
|||
0867 |
15 |
DCR D |
Вычитание из счетчика единицы |
|
0868 |
7A |
MOV A, D |
||
0869 |
FE |
CPI 02H |
Сравнение значения счетчика с 1D |
|
086A |
02 |
|||
086B |
7A |
M4 |
MOV A, D |
|
086C |
32 |
STA 0809H |
Запись второго результата в память |
|
086D |
08 |
|||
086E |
09 |
|||
086F |
76 |
HLT |
Останов программы |
Программа на языке BASIC
Программа была составлена на языке BASIC и отлажена на IBM-совместимом компьютере.
Текст программы
REM Программа по курсовой работе (каф 403).
REM Список переменных:
REM SCHET% - счетчик циклов.
REM D% - входной код.
REM B%, C% - выходные коды.
CLS
REM Задается размерность входного кода.
DIM D%(32)
REM Установка списка данных в начальное положение.
RESTORE
REM Запись входного кода. Цикл.
FOR I%=1 TO 32
REM Чтение I-го элемента входного кода.
READ D%(I%)
NEXT I%
REM Поиск первой комбинации 010. Цикл.
FOR SCHET%=2 TO 31
REM Проверка совпадения.
IF D%(SCHET%-1)=0 AND D%(SCHET%)=1 AND D%(SCHET%+1)=0 THEN GOTO 1
REM Сдвиг "окна".
NEXT SCHET%
REM Запись и вывод результата.
1 B%=SCHET%: PRINT "Номер первой единицы, стоящей между нулями: ";B%
REM Поиск последней комбинации 010. Цикл.
FOR SCHET%=31 TO 2 STEP -1
REM Проверка совпадения и запись результата.
IF D%(SCHET%-1)=0 AND D%(SCHET%)=1 AND D
%(SCHET%+1)=0 THEN GOTO 2
NEXT SCHET%
REM Запись и вывод результата.
2 C%=SCHET%: PRINT "Номер последней единицы, стоящей между нулями: ";C%
REM Входной код.
DATA 0,0,0,1,1,0,1,0,1,1,0,0,0,0,0,1,0,1,1,1,1,1,1,1,0,1,1,0,0,1,0,1
В результате работы программы, на экран было выведено сообщение:
Номер первой единицы, стоящей между нулями: 7
Номер последней единицы, стоящей между нулями: 30 Использованная .литература
1.;
2.;
3.;
4..
Для заметок
[1] Необходимые микросхемы регистров и ПЗУ в серии 1533 отсутствуют.