Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЛБ_МП.doc
Скачиваний:
8
Добавлен:
01.04.2025
Размер:
2 Mб
Скачать

3. Порядок выполнения работы

Работа выполняется на учебной микроЭВМ.

3.1. Порядок выполнения работы рассмотрим на примере программ по вычислению функции F (пример 1) и сортировки массива (пример 2).

Пример1. Найти значение функции ,

где А,В,С – 3-х байтные числа и расположены в памяти. Результат сохранить на место А. А=54А316, В=7594FF, C=2АВ048

Расширенный алгоритм программы представлен на рисунке 2.3. Программа, построенная в соответствии с алгоритмом, приведена в таблице 2.9.

Р ис 2.3. Алгоритм программы

Таблица 2.9

Программа нахождения значения функции

Адр

Мнемокод

Код

Примечание

Загрузка операндов

0900

16

Загрузка трехбайтного числа А начиная с младшего байта.

0901

A3

0902

54

0910

FF

Загрузка трехбайтного числа В начиная с младшего байта.

0911

94

0912

75

0920

48

Загрузка трехбайтного числа С начиная с младшего байта.

0921

B0

0922

2A

Загрузка программы

0800

LXI H, 0920

21

Запись в регистры HL число 0920 (адрес ячейки памяти хранения младшего байта первого операнда, участвующего в операции)

0801

20

0802

09

0803

LXI B, 0910

01

Запись в регистры ВС число 0910 (адрес ячейки памяти хранения младшего байта второго операнда, участвующего в операции)

0804

10

0805

09

0806

MVI D, 03

16

Загрузка числа 3 в регистр D (формирование счетчика, для отсчета байтов в операции)

0807

03

0808

LDAX, B

0A

Косвенная загрузка аккумулятора из BC-пары

0809

ANA M

A6

Операция «и» между содержимым аккумулятора и ячейки памяти, адрес которой содержится в HL-паре

080A

CMA

2F

Дополнение аккумулятора (инверсия)

080B

STAX, B

02

080C

DCR, D

15

Вычитание содержимого счетчика.

080D

JZ 0815

CA

Если счетчик равен нулю, т.е. операция была проведена со всеми байтами операндов, перейти на следующую операцию.

080E

15

080F

08

0810

INX, H

23

Перейти к следующей ячейке памяти, адрес которой содержится в HL-паре(содержится следующий байт операнда)

0811

INX, B

03

Перейти к следующей ячейке памяти, адрес которой содержится в ВС-паре (содержится следующий байт операнда).

0812

JMP, 0808

C3

Безусловно вернуться на повторение операции

0813

08

0814

08

0815

LXI H, 0900

21

Запись в регистры HL число 0900 (адрес ячейки памяти хранения младшего байта первого операнда, участвующего в операции)

0816

00

0817

09

0818

LXI B, 0910

01

Запись в регистры ВС число 0910 (адрес ячейки памяти хранения младшего байта второго операнда, участвующего в операции, результат предыдущей операции)

0819

10

081A

09

081B

MVI D, 03

16

Загрузка числа 3 в регистр D (формирование счетчика, для отсчета байтов в операции)

081C

03

081D

LDAX, B

0A

Косвенная загрузка аккумулятора из BC-пары

081E

ADD M

86

Операция сложения между содержимым аккумулятора и ячейки памяти, адрес которой содержится в HL-паре

0825

MOV M,A

77

Косвенное сохранение аккумулятора в HL-пару

0826

DCR, D

15

Вычитание содержимого счетчика.

0827

JZ, 082F

CA

Если счетчик равен нулю, т.е. операция была проведена со всеми байтами операндов, перейти на следующую операцию.

0828

2F

0829

08

082A

INX, H

23

Перейти к следующей ячейке памяти, адрес которой содержится в HL-паре(содержится следующий байт операнда)

082B

INX, B

03

Перейти к следующей ячейке памяти, адрес которой содержится в ВС-паре (содержится следующий байт операнда).

082C

JMP, 081D

C3

Безусловно вернуться на повторение операции

082D

1D

082E

08

082F

HLT

76

Останов

3.2. Выполнение работы на УМК.

  1. Включить УМК, нажав клавишу «~».

Если на табло индикации присутствует информация, нажмите клавишу «СБ» (сброс), в результате чего на табло будет гореть знак «–» в крайнем левом разряде.

2. Введите ваши данные в память УМК, начиная с адреса 090016. Для этого используйте команду «П» – чтение и изменение содержимого памяти, т.е. нажмите клавишу «П», затем наберите на клавиатуре 0900 16. Нажмите «ВП», тем самым вы введете в память УМК первую команду программы примера.

Введите все байты ваших переменных, повторяя команду «П»:

«П» 0901 02 «ВП»

«П» 0902 0Е «ВП» и т.д.

Примечание: Можно производить запоминание не по командам, а целыми блоками. Для этого вместо «ВП» набрать тем самым перейдя к следующей ячейке. Завершается набор блока командой «ВП».

3. Введите вашу программу в память УМК, начиная с адреса 080016.

4. Проверьте содержимое памяти, куда записана ваша программа, используя команду «П», т.е.

«П» 0800 на табло отразится содержимое ячейки памяти. Если память содержит ошибочный код, то измените только соответствующую ячейку памяти.

Например, ячейка 0805 содержит код 18 вместо 04. Изменить ее следующим образом: «П» 0805 04 «ВП».

5. Выполните программу. Для этого передайте управление программе примера, т.е. наберите команду

«СТ» 0800

082F «ВП»

адрес начала программы

адрес прерывания программы, т.е. адрес команды HLT в программе примера

В результате выполнения этой команды в режиме ШГ светодиодная индикация панели будет следующая Адрес и данные, расположенные по этому адресу в двоичном коде. Дальнейшее выполнение производится путем нажатия клавиши ШГ.

Если режим ШГ не использовался, то на табло индикации появится сообщение 0 8 2 F -, что соответствует завершению программы.

6. Проконтролируйте результат вычислений, записанный в память по адресу 0900, выполнив команду «П»:

«П» 0900 «ВП»

на табло индикации будет выведено содержимое указанной ячейки памяти 0900, в которой на примере был сохранен результат вычислений.

Если программа выполнена неправильно или не выходит из цикла, воспользуйтесь промежуточными адресами прерывания, т.е. выполните команду «СТ»:

«СТ» А1 А2 «ВП»

где А2 - адрес прерывания выполнения программы

Например, при команде

«СТ» 0800 080В «ВП»

произойдет останов по адресу 080В, что будет отображено на табло индикации:

0 8 0 В - ,

и используя команду «РР» - чтение и изменение содержимого регистров МП – можно просмотреть требуемые регистры, например:

«РГ»

«РГ»

«РГ»

H

L

D

H – 09

L – 20

D – 03

Пример2. Дан массив из 10 однобайтных чисел. Расположить исходный массив в порядке убывания. Адрес начала массива - 0900.

Существует несколько способов решения данной задачи. В данном случае рассмотрим сортировку элементов в массиве методом «пузырька». Данный метод основан на последовательном сравнении элементов массива с самым первым, и обмена с ним в случае не соответствии условию. При этом размерность сортируемого массива постепенно уменьшается с фиксированием члена массива, удовлетворяющего условию.

Для решения данной задачи необходимо постоянно контролировать адреса двух сравниваемых чисел, а также знать количество оставшихся сравнений, которое в начальный момент составляет на единицу меньше, чем количество членов в массиве.

Для реализации сказанного ранее зададимся следующими данными: адрес I-го сравниваемого числа хранится в ВС паре регистров; адрес II-го сравниваемого числа хранится в HL паре регистров; D – I-ый счетчик; E – II-ой счетчик.

Решение данной задачи рассмотрим приведя подробный алгоритм, представленный на рисунке 2.4.

Рисунок 2.4. Алгоритм решения задачи по сортировке массива

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]