- •I. Задание на курсовой проект
- •1. Тематика курсового проекта
- •2. Задание и общие требования к выполнению
- •II. Методические указания к выполнению курсового проекта
- •1. Требования к блок-схеме алгоритма
- •2. Составление блок-схемы алгоритма и программы
- •3. Пример выполнения курсового проекта
- •3.1. Общая постановка задачи
- •3.2. Распределение памяти
- •3.3. Составление структурной схемы алгоритма решения задачи и программ
- •Программы вычислений на языке ассемблера и в машинных кодах
- •3.4. Замечания к примеру курсового проекта
- •Задание на курсовой проект Тема проекта: «Микропроцессорное устройство обработки информации
- •Основные директивы ассемблера
- •Основные приемы программирования
- •1. Организация счета
- •2. Организация временной задержки
- •3. Сложение и вычитание чисел
- •4. Умножение и деление
- •5. Организация массивов, очередей и стеков
- •5.1. Массивы
- •5.2. Очередь
- •5.3. Стек
- •6. Подпрограммы
- •Ассемблирование вручную
3.2. Распределение памяти
Весь объем адресуемой памяти (64К) с адресами 0000H…FFFFH, можно распределить следующим образом. Для основной программы будем использовать адреса, начиная с 0000H до FFFFH. Для инициализации портов ввода-вывода зададим их адреса: порт ввода переменной x(t) — 01H; порт ввода y(t-N) — 02H; порт вывода V(t) — 04H (применяется код «1 из 8-ми»).
3.3. Составление структурной схемы алгоритма решения задачи и программ
В соответствии со словесным описанием составляем структурную схему алгоритма, на основании которой будет разрабатываться программа.
Следует придерживаться естественного хода решения, т. е. линейной структуры с необходимыми метками и циклами (рис. 1).
Программы на ассемблере и в машинных кодах, соответствующие этому алгоритму, приведены в табл. 4.
В приведенном алгоритме решения задачи константа k формируется программным путем, с помощью сдвигов влево, вправо и суммирования результатов. Константа N, а также остальные константы записываются в 16-ричном коде.
Следует обратить внимание, что приступать к выполнению курсового проекта имеет смысл только после изучения теоретических вопросов, посвященных программному обеспечению (программированию на языке ассемблера и в машинных кодах). При этом нужно ориентироваться на рекомендуемую учебную литературу.
6
1
2
Организация
очереди
НЕТ
7
8
3
ДА
4
9
Вычисление V(t)
5
Вычисление kx(t)
10
Рис.1. Блок-схема алгоритма
Программы вычислений на языке ассемблера и в машинных кодах
Таблица 4
Ад-рес |
Машин-ный код |
Метка |
Мне-мони-ка |
Операнд |
Комментарий |
|||||||||||||||||||
Блок начальных директив |
||||||||||||||||||||||||
|
|
|
ORG |
0000H |
;Директива начального адреса |
|||||||||||||||||||
|
|
PORTX |
EQU |
01H |
;Инициализация портов ввода переменных x(t), y(t), y(t-N) и вывода V(t) |
|||||||||||||||||||
|
|
PORTY |
EQU |
02H |
||||||||||||||||||||
|
|
PORTV |
EQU |
04H |
||||||||||||||||||||
Обнуление ячеек очереди |
||||||||||||||||||||||||
0000 |
21 00 80 |
|
LXI |
H,8000H |
;Адрес 1-й ячейки очереди |
|||||||||||||||||||
0003 |
16 0A |
|
MVI |
D,0AH |
;N=0A, кол-во ячеек |
|||||||||||||||||||
0005 |
36 00 |
M0: |
MVI |
M,00H |
;Обнуление 1-й ячейки |
|||||||||||||||||||
0007 |
23 |
|
INX |
H |
;Адрес следующей ячейки |
|||||||||||||||||||
0008 |
15 |
|
DCR |
D |
;Организация цикла |
|||||||||||||||||||
0009 |
C2 05 00 |
|
JNZ |
M0 |
;Переход, если ячейка не последняя |
|||||||||||||||||||
Ввод переменной y(t-N) |
||||||||||||||||||||||||
000C |
21 00 80 |
|
LXI |
H,8000H |
;Адрес 1-й ячейки очереди |
|||||||||||||||||||
000F |
16 0A |
|
MVI |
D,0AH |
;N=0A, кол-во ячеек |
|||||||||||||||||||
0011 |
3E 00 |
M1: |
MVI |
A,00H |
;Обнуление аккумулятора |
|||||||||||||||||||
0013 |
DB 02 |
|
IN |
PORTY |
;Ввод в аккумулятор |
|||||||||||||||||||
0015 |
00 |
|
NOP |
|
;Пустые операции для увеличения длительности такта ввода |
|||||||||||||||||||
0016 |
00 |
|
NOP |
|
||||||||||||||||||||
0017 |
00 |
|
NOP |
|
||||||||||||||||||||
0018 |
00 |
|
NOP |
|
||||||||||||||||||||
0019 |
77 |
|
MOV |
M,A |
;Пересылка в ячейку памяти |
|||||||||||||||||||
001A |
23 |
|
INX |
H |
;Номер следующей ячейки |
|||||||||||||||||||
001B |
15 |
|
DCR |
D |
;Организация цикла |
|||||||||||||||||||
001C |
C2 11 00 |
|
JNZ |
M1 |
;Переход, если ячейка не последняя |
|||||||||||||||||||
001F |
21 00 80 |
|
LXI |
H,8000H |
;Номер ячейки памяти, где y(t-N) |
|||||||||||||||||||
Ввод x(t) и вычисление kx²(t) |
||||||||||||||||||||||||
0022 |
DB 01 |
|
IN |
PORTX |
;x(t) — в аккумуляторе |
|||||||||||||||||||
0024 |
00 |
|
NOP |
|
;Пустые операции для уве-личения длительности такта ввода |
|||||||||||||||||||
0025 |
00 |
|
NOP |
|
||||||||||||||||||||
0026 |
00 |
|
NOP |
|
||||||||||||||||||||
0027 |
00 |
|
NOP |
|
||||||||||||||||||||
Ад-рес |
Машин-ный код |
Метка |
Мне-мони-ка |
Операнд |
Комментарий |
|||||||||||||||||||
0028 |
21 00 00 |
|
LXI |
H,0000H |
;Обнуление регистровой па-ры H, L |
|||||||||||||||||||
002B |
16 00 |
|
MVI |
D,00H |
;Обнуление регистров обще-го назначения D и E |
|||||||||||||||||||
002D |
5A |
|
MOV |
E,D |
||||||||||||||||||||
002E |
5F |
|
MOV |
E,A |
;Копирование x(t) в рег. Е |
|||||||||||||||||||
002F |
07 |
|
RLC |
|
;2x(t) — в аккумуляторе |
|||||||||||||||||||
0030 |
A7 |
|
ANA |
A |
;Сброс флага переноса: CY=0 |
|||||||||||||||||||
0031 |
57 |
|
MOV |
D,A |
;Временное запоминание 2x(t) в регистре D |
|||||||||||||||||||
0032 |
AF |
|
XRA |
A |
;Подготовка к записи в акку-мулятор x(t) |
|||||||||||||||||||
0033 |
7B |
|
MOV |
A,E |
;x(t) — в аккумуляторе |
|||||||||||||||||||
0034 |
0F |
|
RRC |
|
;Получение 0,5x(t) в аккуму-ляторе |
|||||||||||||||||||
0035 |
A7 |
|
ANA |
A |
;Сброс флага переноса: CY=0 |
|||||||||||||||||||
0036 |
82 |
|
ADD |
D |
;(A)+(D)=2,5x(t) в аккумуля-торе |
|||||||||||||||||||
0037 |
CD 5B 00 |
|
CALL |
MULT |
;Вызов подпрограммы умно-жения однобайтных слов; множимое: 2,5x(t) — в рег. А; множитель: x(t) — в рег. Е; произведение: 2,5x2(t) — в H, L |
|||||||||||||||||||
003A |
AF |
|
XRA |
A |
;Подготовка к обнулению регистров |
|||||||||||||||||||
003B |
57 |
|
MOV |
D,A |
;Обнуление регистра D |
|||||||||||||||||||
003C |
5A |
|
MOV |
E,D |
;Обнуление регистра E |
|||||||||||||||||||
003D |
42 |
|
MOV |
B,D |
;Обнуление регистров B, C |
|||||||||||||||||||
003E |
48 |
|
MOV |
C,B |
||||||||||||||||||||
003F |
54 |
|
MOV |
D,H |
;Запоминание 2,5x2(t) в ре-;гистровой паре D, E |
|||||||||||||||||||
0040 |
5D |
|
MOV |
E,L |
||||||||||||||||||||
Обработка логического блока |
||||||||||||||||||||||||
0041 |
7E |
|
MOV |
A,M |
;y(t-N) — в аккумуляторе |
|||||||||||||||||||
0042 |
47 |
|
MOV |
B,A |
;y(t-N) — в регистре B |
|||||||||||||||||||
0043 |
0E 00 |
|
MVI |
C,00H |
;Обнуление регистра C |
|||||||||||||||||||
Ад-рес |
Машин-ный код |
Метка |
Мне-мони-ка |
Операнд |
Комментарий |
0045 |
BF |
|
CMP |
A |
;y(t-N) — положительное? |
0046 |
F2 4E 00 |
|
JP |
M2 |
;При плюсе переход на метку М2 |
004B |
2F |
|
CMA |
|
;INV(y(t-N)) — инверсия |
004C |
3C |
|
INR |
A |
;INV(y(t-N))+1 — дополни-тельный код |
004D |
47 |
|
MOV |
B,A |
;Дополнительный код в ре-гистре B |
004E |
09 |
M2: |
DAD |
B |
;Сложение двухбайтовых слов. Результат — в H, L |
Вывод результата |
|||||
004F |
AF |
|
XRA |
A |
;Подготовка к выводу млад-шего байта |
0050 |
7D |
|
MOV |
A,L |
|
0051 |
D3 04 |
|
OUT |
PORTV |
;Вывод младшего байта |
0053 |
AF |
|
XRA |
A |
;Подготовка к выводу стар-шего байта |
0054 |
7C |
|
MOV |
A,H |
|
0055 |
D3 04 |
|
OUT |
PORTV |
;Вывод старшего байта |
0057 |
C3 00 00 |
|
JMP |
M0 |
;Безусловный переход к но-вому циклу вычислений |
005A |
76 |
|
HLT |
|
;Останов |
005B |
21 00 00 |
MULT: |
LXI |
H,0000H |
;Начало подпрограммы умножения. Сброс регистра суммы частичных произведений |
005E |
06 08 |
|
MVI |
B,08H |
;Начальная установка счет-чика циклов |
0060 |
29 |
M3: |
DAD |
H |
;Логический сдвиг H, L на разряд влево |
0061 |
07 |
|
RLC |
|
;Очередной разряд множи-теля с переносом |
0062 |
D2 66 00 |
|
JNC |
M4 |
;Переход на метку М4, если след. разряд нуль |
0065 |
19 |
|
DAD |
D |
;Добавление множимого к частичной сумме |
0066 |
05 |
M4: |
DCR |
B |
;Счет циклов |
0067 |
C2 71 00 |
|
JNZ |
M3 |
;Переход, если вычисления не закончены |
Ад-рес |
Машин-ный код |
Метка |
Мне-мони-ка |
Операнд |
Комментарий |
007B |
C9 |
|
RET |
|
;Возврат в основную про-грамму |
|
|
|
END |
|
;Директива достижения кон-ца программы |
