Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Отчеты по лаб_ОЭВМиС.doc
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
863 Кб
Скачать
☆

Отчет по лабораторной работе № 11.

Тема: «Программирование цикла с переадресацией»

Цель работы: _________________________________________________________________________

______________________________________________________________________________________

Ход работы:

Пример циклической программы (таблица 1). Суммирование элементов массива, длина которого, записывается в регистр CX, смещение первого элемента в DI. Элементы массива представлены 16-ти разрядными числами.

Таблица 1.

Адрес команды

Код команды

Метка

Команда

Операнды

Комментарии

0100

XOR

AX,AX

Сбросить регистры

0102

XOR

BX,BX

0104

MOV

CX,05

(CX):=0005

0107

MOR:

ADD

AX,[DI]

Прибавить текущий элемент

0109

JNC

NC

Имеется перенос

010B

INC

BX

Да, учесть в BX

010C

NC:

INC

DI

Продвинуть указатель

010D

INC

DI

010E

LOOP

MOR

Повторить цикл

0110

INT3

Остановка

1. Вызвать программу AFD. Записать в регистр Di 0030.

2. По адресам со смещением [0030-0039] записать числа в соответствии с вариантом (таблица 2).

Вариант № __ Адреса

0030

0031

0032

0033

0034

0035

0036

0037

0038

0039

Числа

3. Ввести фрагмент программы таблицы 1, учитывая, что в командах переходов вместо меток должны быть машинные адреса команд, на которые осуществляется переход. В процессе ввода заполнить 2 колонку таблицы 1.

4. После ввода фрагмента программы выйти из режима ассемблирования, нажав Ctrl + Enter.

5. Набрать D 100 (ввод).

6. Выполнить программу в пошаговом режиме с помощью клавиши F1, на каждом шаге фиксирую результат в таблице 3, учитывая, что старшие разряды числа находятся в регистре BX, а младшие в AX.

Таблица 3.

Шаг

Адрес команды

AX

BX

CX

Флажок CF

1

2

7. Ввести фрагмент программы индивидуального задания, выполнить его в пошаговом режиме, нажимая F1, записать результат.

Вариант индивидуального задания № __

Условие задачи: __________________________________________________________________

____________________________________________________________________________________________________________________________________________________________________________

__________________________________________________________________________________

Решение и результат:

______________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________

Выводы: ________________________________________________________________________ ____________________________________________________________________________________________________________________________________________________________________________

Ответы на контрольные вопросы:

1. Какие команды применяются для организации циклов? _______________________________

______________________________________________________________________________________

2. Какой регистр используется в качестве счетчика в цепочечных командах? ________________

3. Каким образом выполняется команда LOOP (повторить цикл)?

______________________________________________________________________________________

______________________________________________________________________________________

группа ПЗ- __ ФИО _________________ дата выполнения работы __________ дата сдачи ________

Отчет по лабораторной работе № 12.

Тема: «Подпрограммы и стек»

Цель работы: _________________________________________________________________________

______________________________________________________________________________________

Ход работы:

1. Запустить AFD.exe. Набрать А 100. Ввести программу записи содержимого регистров в стек:

PUSH AX

PUSH [10]

PUSH [SI]

INT3

2. Для выхода из ассемблирования нажать Ctrl+Enter. Записать в регистры данные (таблица 1).

Таблица 1.

До выполнения программы

После выполнения программы

АХ

3412

10,11

A456

SI

0020

20,21

94F5

SP

Ячейки памяти: FFFE

FFFC

FFFA

3. Набрать D 100, выполнить программу в пошаговом режиме (F2). Убедиться, что после выполнения каждой команды содержимое SP уменьшается на 2, т.к. стек работает со словами и меньший байт записывается по меньшему адресу. Содержимое регистров при этом не изменяется. Заполнить таблицу 1.

4. Очистить содержимое регистров (записать 0). Ввести программу, которая выталкивает содержимое регистров. Учитывая принцип работы стека, вводимая программа будет иметь вид:

РОР DX

РОР CX

РОР BX

РОР AX

INT3

Выполнить программу в пошаговом режиме, заполнить таблицу 2.

Таблица 2.

До выполнения программы

После выполнения программы

АХ

0000

BX

0000

CX

0000

DX

0000

SP

Ячейки памяти: FFF8

FFFA

FFFC

FFFE

5. Исследовать выполнение команды PUSHA, которая записывает содержимое всех регистров МП в стек (таблица 3). Набрать А 100 и программу: PUSHA

INT3

Записать в регистры значения из таблицы 3. Набрать D 100, выполнить программу в пошаговом режиме (F2).

Таблица 3.

До выполнения программы

После выполнения программы

АХ

1111

BX

2222

CX

3333

DX

4444

SI

0010

DI

0020

SP

BP

Ячейки памяти: FFFE

FFFC

FFFA

FFF8

FFF6

FFF4

FFF2

FFF0

6. Исследовать выполнение команды РОРА, которая выталкивает из содержимое всех регистров. Очистить регистры, набрать А 100 и программу: РОРА

INT3

Таблица 4.

До выполнения программы

После выполнения программы

АХ

0000

BX

0000

CX

0000

DX

0000

SI

0000

DI

0000

SP

BP

Ячейки памяти: FFFE

FFFC

FFFA

FFF8

FFF6

FFF4

FFF2

FFF0

7. Набрать D 100, выполнить программу в пошаговом режиме (F2), заполнить таблицу 4.

8. Исследовать выполнение команды PUSHF, которая размещает в вершине стека содержимое регистра флагов. Набрать А 100 и программу: PUSHF

INT3

9. Набрать D 100, выполнить программу. Записать содержимое 2-х ячеек вершины стека _________

и сравнить результат со значениями флажков, формат регистра флажков имеет следующий вид:

0

nt

io

pl

of

df

if

tf

sf

zf

0

af

0

pf

1

cf

10. Пример использования стека. Дан массив (см. таблицу), состоящий из 10 байт, записанных с адреса со смещением 0010. Используя стек можно переписать элементы массива в обратном порядке (вместо имен меток писать адреса перехода в командах loop). Выполнение программы клавиша F1.

Адрес

10

11

12

13

14

15

16

17

18

19

До выполнения

01

02

03

04

05

06

07

08

09

10

После выполнения

MOV SI,0010

MOV CX,0A

M: PUSH [SI]