Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторный практикум ч3 А4 09.10.2012.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
2.07 Mб
Скачать
  1. Команды вызова подпрограммы и возврата

CALL <B3><B2> – вызов подпрограммы по адресу <B3><B2>, указанному во втором и третьем байтах команды;

RET – возврат из подпрограммы.

  1. Записать в память программу подсчета контрольной суммы массива (таблица 80), использующую команду вызова подпрограммы сравнения содержимого пар рег. HL и DE (таблица 81).

Таблица 80 – Контрольная программа подсчета контрольной суммы массива,

использующая подпрограмму сравнения содержимого пар регистров

Адрес

Метка

Команда

Операнд

Машинный код

Комментарий

0840

LXI

H, 0100H

21 00 01

; Загр HL – нач. адрес

; массива

0843

LXI

D, 017FH

11 7F 01

; Загр. DE – конеч. адрес

; массива.

0846

LXI

SP, 0B00H

31 00 0B

; Загр SP=0В00H, нижняя

; граница стека

0849

MVI

B, 00H

06 00

; Загр. В=00Н – исх. знач.

; КС

084B

М1

MOV

A, B

78

; Подсчет КС массива

; памяти

084C

ADD

M

86

; Подсчет КС массива

; памяти.

084E

INX

H

23

; HL=(HL)+1, адр. след.

; ячейки

084F

CALL

М2

CD 56 08

; Вызов подпрограммы

; сравнения

0852

JNC

М1

D2 4B 08

;Переход на адрес ;080ВН, если (ТС)=0

0855

HLT

76

; Останов

Таблица 81 – Подпрограмма сравнения содержимого пар регистров HL и DE

Адрес

Метка

Команда

Операнд

Машинный код

Комментарий

0856

М2

MOV

A, E

7B

; Подпрограмма сравнения

0857

SUB

L

95

; Если (HL)>(DE), то (ТС)=1

0858

MOV

A, D

7A

; Иначе (ТС)=0

0859

SBB

H

9C

;

085A

RET

C9

;

  1. Выполнить программу:

СТ0840 0855ВП.

Определить значение контрольной суммы заданного массива (содержимое регистра В). Сравнить полученное значение с результатом подсчета контрольной суммы с помощью команды ПОДСЧЕТ КОНТРОЛЬНОЙ СУММЫ системной программы МОНИТОР, они должны совпадать. Записать в отчет полученное значение контрольной суммы.

  1. Выполнить программу поэтапно, устанавливая точки останова (ТО) в соответствии с таблицей 82:

СТ0840Н ТОВП.

Записать в таблицу 82 содержимое указателя стека SP в точках останова.

Таблица 82 – Результаты выполнения контрольной программы подсчета контрольной суммы массива

Точка останова

ТО1=084FH

ТО2=0856H

ТО3=085АH

ТО4=0852H

ТО5=0855H

(SP)

В точке останова ТО3 посмотреть содержимое ячеек памяти с адресами SP, SP+1. В них должны находиться мл. и ст. байты адреса возврата (таблица 83).

Таблица 83 – Содержимое стека в точке останова ТО3

(М) по адр. (SP)

52Н

(М) по адр. (SP+1)

08Н

Задание 2:

Написать с адреса 0А20Н проверочную программу подсчета контрольной суммы массива.

  1. Заполнить массив (0А50Н…0А6FН) константой ЕЕН:

  • начальный адрес массива загрузить в пару регистров HL;

  • константу ЕЕН загрузить в регистр D;

  • заполнение массива константой оформить в виде цикла;

  • счетчик циклов организовать на регистре Е.

  1. Подсчитать контрольную сумму этого массива (без учета переноса):

  • подсчет контрольной суммы оформить как подпрограмму;

  • значение контрольной суммы записать в регистр С;

  • начальный адрес подпрограммы 0950Н;

  • нижняя граница стека 0В50Н.

  1. Алгоритм решения задачи и алгоритм подпрограммы представлены на рисунках 5 и 4 соответственно.

  2. Программу и подпрограмму записать в таблицы, аналогичные по форме таблицам 80 и 81 соответственно.

  3. Записать в память УМК и выполнить проверочную программу подсчета контрольной суммы. Указать в отчете значение контрольной суммы. Полученное значение контрольной суммы сравнить с результатом, полученным при использовании команды ПОДСЧЕТ КОНТРОЛЬНОЙ СУММЫ системной программы МОНИТОР, они должны совпадать.

  4. В ыполнить программу поэтапно, устанавливая точки останова аналогично контрольной программе (таблицы 80 и 81). Результаты записать в таблицы, аналогичные по форме таблицам 82 и 83. Сделать выводы о содержимом указателя стека в каждой точке останова и содержимом стека в ТО3.

Рисунок 4 – Алгоритм подпрограммы подсчета контрольной суммы

Рисунок 5 – Алгоритм решения задачи

ЛАБОРАТОРНАЯ РАБОТА № 20