Задание 3. Составить на Ассемблере и в машинных кодах программу вычисления функции
Известно:
Х находится в ячейке h/ ÆÆ3Æ ОЗУ
К находится в регистре Д.
Результат занести в ячейку h/ ÆÆ5Æ ОЗУ
Программу разместить в ОЗУ начиная с адреса h/ 0125.
Порядок решения:
1) составить схему алгоритма;
2) записать текст на Ассемблере;
3) записать программу в машинных кодах;
4) записать дамп памяти с программой
.
1. Алгоритм
2. Программа на Ассемблере
* org h'0125
LDA h/ 0030
SUB D
JP M1
MOV A,D
RLC
JMP M2
M1: MOV A,D
M2: STA h/ 0050
HLT
* end
3. Программа в машинных кодах
1) 3A 30 00
2) 92
3) F2 <B2> <B3> (адрес команды № 7 h'0131)
4) 7A
5) 07
6) C3 <B2> <B3> (адрес команды № 8 h'0132)
7) 7A
8) 32 50 00
9) 76
Адрес |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
A |
B |
C |
D |
E |
F |
0120 |
- |
- |
- |
00 |
00 |
3A |
30 |
00 |
92 |
F2 |
31 |
01 |
7A |
07 |
S3 |
32 |
0130 |
01 |
7A |
32 |
50 |
00 |
76 |
00 |
00 |
- |
- |
- |
- |
- |
- |
- |
- |
0140 |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
Для организации циклических программ как правило используется счетчик циклов, в качестве которого может быть любой внутренний регистр. Для выхода из цикла используются команды условных переходов. Чаще всего условный переход осуществляется по признакам Z и S
.
Задание 4. Составить программу суммирования первых 10 чисел натурального ряда на Ассемблере и в машинных кодах. Результат записать в ячейку h/ ÆÆ3Æ. Программу разместить с h/ ÆÆ1Æ.
Решение:
Сравнить два алгоритма с точки зрения реализации на микропроцессоре.
а) б)
Алгоритм (а) требует запоминания во внутренних регистрах промежуточных результатов (т.е. величин S и N), так как для выработки признака выхода из цикла (т.е. для выполнения операции 11-N) необходимо освобождать аккумулятор. Это приводит к необходимости включения дополнительных команд пересылки в тело цикла.
Алгоритм (в) позволяет использовать факт изменения состояния флагового регистра при выполнении команды DCR, если содержимое регистра становится равным нулю. В этом случае признак Z=1.
Уточненные алгоритмы имеют вид
Выбираем алгоритм (б). Программа этого алгоритма имеет вид
Ассемблер |
Машинные коды |
Коментарии |
MVI A, h/ ÆÆ |
3E : ÆÆ : |
запись нуля в аккумулятор |
MVT D, h/ ÆA |
16 : ÆA : |
запись числа 10 в регистр Д |
M1: ADD D |
82 : : |
получение промежут. результата |
DCR D |
15 : : |
уменьшение содержимого Д на 1 |
JZ M1 |
СA:<B2><B3 > |
условный переход |
STA h/0030 |
32 : 30 : 00 |
пересылка результата в ОЗУ |
HLT |
76 : : |
останов |
Задание 5. Составить программу вывода в ячейки памяти начиная с адреса h/ ÆÆ3Æ последовательности натуральных чесел от 5 до 15.
Программу разместить с ячейки h/ ÆÆ1Æ.
Составить дамп памяти после выполнения программы.
Решение: В данной программе необходимо использовать возможности команды MOV, а именно адресацию к памяти при помощи пары регистров H, L.
В начальной части программы необходимо записать в регистры H,L начальный адрес h/ ÆÆ3Æ. Первой ячейки вывода, а в каждом цикле содержимое регистра L увеличивать на 1.
Кроме того необходимо использовать один из регистров, например, В для подсчета количества циклов на уменьшение как в предыдущей задаче. Для вывода последовательности чисел от 5 до 15 требуется 11 повторений цикла. Поэтому в регистр В необходимо записать число 11.
Вводимые числа можно формировать в аккумуляторе. Для этого в начальной части программы нужно в него записать число 5, а в каждом цикле увеличивать содержимое на 1.
Вывод чисел необходимо осуществлять внутри цикла
Задание на самоподготовку
Записать текст программы на Ассемблере и в машинных кодах.
Зарисовать дамп памяти после выполнения программы.
Для контроля:
Дамп памяти после выполнения программы
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
A |
B |
C |
D |
E |
F |
|
0000 |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
0010 |
26 |
00 |
2E |
30 |
06 |
0B |
3E |
05 |
77 |
3C |
2C |
05 |
CA |
18 |
00 |
76 |
0020 |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
0030 |
05 |
06 |
07 |
08 |
09 |
0A |
0B |
0C |
0D |
0E |
0F |
- |
- |
- |
- |
- |
Начальник кафедры № 8
полковник А.Митюшов
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.