Программирование в системе команд микропроцессора с использованием языка программирования Ассемблера, страница 2

Задание 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

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

2. Программирование циклических участков программ

Для организации циклических программ как правило используется счетчик циклов, в качестве которого может быть любой внутренний регистр. Для выхода из цикла используются команды условных переходов. Чаще всего условный переход осуществляется по признакам 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

полковник        А.Митюшов