Отчет по лабораторной работе № 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 CX,0A
M: PUSH [SI]
