- •1. Лабораторная работа № 1
- •1.1. Общие методические указания по выполнению лабораторной работы
- •1.2. Теоретические сведения
- •1.2.1. Работа с данными на битовом уровне
- •1.2.2. Упакованные данные
- •1.2.3.Разработка менеджера памяти на основе битовой карты
- •1.3.Задание на лабораторную работу
- •1.4. Отчет по лабораторной работе
- •2. Лабораторная работа №2
- •2.1. Общие методические указания по выполнению лабораторной работы
- •2.2. Теоретические сведения
- •2.2.1. Определение данных
- •2.2.2. Команды пересылки
- •2.2.3. Арифметические операции
- •2.3. Примеры программ на ассемблере
- •2.4. Порядок выполнения работы
- •2.5. Задание на лабораторную работу
- •2.6. Отчет по лабораторной работе
2.4. Порядок выполнения работы
1) Скопировать на рабочий компьютер папку asm_lab1. В ней находятся:
- ассемблер (MASM.exe), редактор связей (LINK.exe) и отладчик (AFD.com).
- текст первой программы (skelet.asm), содержащей пример типичной программы на ассемблере с подробными комментариями. Программа выводит на экран монитора приветствие.
2) Просмотреть в текстовом редакторе исходный код программы skelet.asm. Элементы данной программы следует использовать в качестве примера при написании всех программ данной ЛР.
3) Запустить bat-файл make_skelet.bat. В ответ на все запросы нажать клавишу «Enter». Будут сформированы объектный (skelet.obj) и исполняемый файлы (skelet.exe). Выполнить программу, запустив exe-файл.
4) Освоить пошаговое выполнение программы, а также отображение состояния регистров процессора и содержимого сегментов с помощью отладчика AFD.com. В таблице 5 приведены некоторые команды и функциональные клавиши для работы в отладчике. Дополнительную информацию можно получить, нажав функциональную клавишу F4 (Help).
Таблица 5
Команды и функциональные клавиши для работы с отладчиком AFD
Команда |
Назначение |
L skelet |
Загрузить skelet.exe |
Quit |
Выход из отладчика |
F2 |
Пошаговое выполнение без входа в процедуры |
F1 |
Пошаговое выполнение, в том числе внутри процедур |
F3 |
Просмотр (возврат в командное поле) ранее выполненных команд |
Продолжение табл. 5
F7, F8, F9, F10 |
Переход в режим непосредственного редактирования содержимого регистров и памяти. Клавиши перемещают курсор с панели на панель соответственно вверх, вниз, влево и вправо. Перемещение внутри панели производится клавишами управления курсором. Для выхода обратно в командный режим переместите курсор в поле команд. |
G |
Непошаговое выполнение программы. |
R AX = ab7d |
Запись значения в регистр. В приведенном примере – значения ab7d в регистр AX. |
ZF=1 |
Присвоить значение флагу условия, в данном случае – флагу нуля. |
M 1 SS:40
M 2 DS:0 |
Отобразить на первой панели памяти содержимое сегмента стека, начиная со смещения 40 Отобразить на второй панели памяти содержимое сегмента данных с начала (смещение 0) |
5) Изучить, собрать и запустить в отладчике программу data_mov.asm. Программа демонстрирует использование директив описания данных и команд пересылок.
6) Изучить, собрать и запустить в отладчике программу add_sub.asm. Программа демонстрирует работу с командами сложения и вычитания. Обратить внимание на изменение флагов при выполнении арифметических операций.
7) На основе изученных программ выполнить все 3 части задания для самостоятельной работы, вариант которого берется из таблицы 6.
2.5. Задание на лабораторную работу
Написать программу, которая:
приветствует именно Вас;
содержит директивы описания данных, команды пересылок и арифметические команды в соответствии с выбранным вариантом (таблица 6).
Выполнить программу в отладчике и отследить все изменения содержимого регистров, памяти и флагов (изменения значений регистров и флагов отследить и добавить в комментарии к программам).
Таблица 6
Варианты заданий на лабораторную работу
№ вар. |
Категория |
Задание |
1 |
Данные |
а) A – массив из 5 байт. б) B – двойное слово, инициализированное большим числом. в) V – массив из 10 байт, инициализированных последовательными буквами алфавита. г) Z – массив 8 слов, инициализированных повторяющимся значением |
|
Пересылки |
а) Старшее слово переменной B – в DX, младшее – в AX. б) Третий элемент массива V – в CL. в) Значение 0FA98h в регистр ES. г) Значение регистра DX – в начало переменных V и Z |
Продолжение табл. 6
|
Арифметика |
Занести в массив A некоторые числовые значения и выполнить их сложение. Результат поместить в DH. В тексте программы отметить все устанавливаемые арифметическими командами значения флагов состояний. |
2 |
Данные |
а) F – массив из 3 слов. б) H – двойное слово, инициализированное большим числом. в) K – массив из 5 байт, инициализированных последовательными цифрами (символами). г) L – массив из 8 слов, инициализированных повторяющимся значением |
|
Пересылки |
а) Последнего элемента K – в CH. б) Некоторые значения в AX и DX. в) Значение регистра DX – в переменные H и K со смещением 2 г) Значение из DX – в старшее слово переменной H, из AX – в младшее. |
Арифметика |
Занести в массив F некоторые числовые значения. Вычесть из первого числа остальные. Результат поместить в СX. В тексте программы отметить все устанавливаемые арифметическими командами значения флагов состояний. |
|
3 |
Данные |
а) F – массив из 4 байт. б) H – двойное слово, инициализированное большим числом. в) K – массив из 5 слов, инициализированных повторяющимся числом. г) L – массив 7 байт, инициализированных гласными буквами |
Продолжение табл. 6
|
Пересылки |
а) Старший байт переменной H – в CH, младший – в DH. б) Третий элемент массива K – в CX. в) Значение 54F8h в регистр AX. г) Значение регистра SI – в конец переменных H и K |
Арифметика |
Занести в массив F некоторые числовые значения и выполнить их сложение. Результат поместить в DX. В тексте программы отметить все устанавливаемые арифметическими командами значения флагов состояний |
|
4 |
Данные |
а) F – массив из 5 байт. б) H – двойное слово, инициализированное большим числом. в) K – массив из 4 байт, инициализированных звездочками. г) L – массив 20 слов, инициализированных повторяющимся значением |
|
Пересылки |
а) Последний элемент массива K – в CH. б) Некоторые значения в AX и DX. в) Значение из DL – в старший байт переменной H, из AH – в младший. г) Значение регистра DX – в переменные H и K со смещением 2 |
|
Арифметика |
Занести в массив F некоторые числовые значения. Вычесть из среднего числа сумму остальных. Результат поместить в ВX. В тексте программы отметить все устанавливаемые арифметическими командами значения флагов состояний |
Продолжение табл. 6
5 |
Данные |
а) A – массив из 3 слов. б) B – двойное слово, инициализированное большим числом. в) Q – массив из 10 байт, инициализированный повторяющимся словом «asm». г) R – массив 4 слов, инициализированных последовательными числовыми значениями |
Пересылки |
а) Старший байт переменной B – в DL, младший – в AH. б) Третий элемент переменной Q – в регистр CL. в) Значения 0FA98h в регистр ES. г) Значение регистра DX – в начало переменных Q и R |
|
|
Арифметика |
Занести в массив A некоторые числовые значения и выполнить их сложение. Результат поместить в BX. В тексте программы отметить все устанавливаемые арифметическими командами значения флагов состояний. |
6 |
Данные |
а) F – массив из 3 слов. б) H – двойное слово, инициализированное большим числом. в) K – массив из 5 байт, инициализированных последовательными цифрами. г) L – массив 8 слов, инициализированных повторяющимся значением |
Продолжение табл. 6
|
Пересылки |
а) Последний элемент переменной K – в CH. б) Некоторые значения в AX и DX. в) Значение регистра DX – в переменные H и K со смещением 1 г) Значение из DX – в старшее слово переменной H, из AX – в младшее. |
|
Арифметика |
Занести в массив F некоторые числовые значения. Вычтите из среднего числа остальные. Результат поместить в СX. В тексте программы отметить все устанавливаемые арифметическими командами значения флагов состояний. |
7 |
Данные |
а) F – массив из 4 байт. б) H – двойное слово, инициализированное большим числом. в) K – массив из 5 слов, инициализированных повторяющимся числом. г) L – массив 7 байт, инициализированных знаками препинания буквами |
|
Пересылки |
а) Старшее слово переменной H – в SI, младшее – в DI. б) Третий элемент переменной K – в CX. в) Значения 54F8h в регистр AX. г) Значение регистра SI – в конец переменных H и K |
Арифметика |
Занести в массив F некоторые числовые значения. Выполнить сложение двух первых и двух последних. Найти разность полученных промежуточных сумм Результат поместить в BP. В тексте программы отметить все устанавливаемые арифметическими командами значения флагов состояний. |
Продолжение табл. 6
8 |
Данные |
а) F – массив из 5 байт. б) H – двойное слово, инициализированное большим числом. в) K – массив из 4 байт, инициализированных звездочками. г) L – массив 20 слов, инициализированных повторяющимся значением |
|
Пересылки |
а) Последний элемент массива K – в CH. б) Некоторые значения в AX и DX. в) Значение из DH – в старший байт переменной H, из AH – в младший. г) Значение регистра DX – в переменные H и K со смещением 1 |
Арифметика |
Занести в массив F некоторые числовые значения. Вычтите из среднего числа сумму остальных. Результат поместить в ВX. В тексте программы отметить все устанавливаемые арифметическими командами значения флагов состояний |
|
9 |
Данные |
а) G – массив из 6 байт. б) H – двойное слово, инициализированное большим числом. в) M – массив из 10 байт, инициализированных различными числами. г) N – массив из 5 слов, инициализированных повторяющимся значением |
Пересылки |
а) Старшее слово переменной H – в AX, младшее – в DX. б) Второй элемент массива M – в CH. в) Значение 0FAC8h в регистр ES. г) Значение регистра AX – в переменные M и N со смещением 3 |
Продолжение табл. 6
|
Арифметика |
Занести в массив G некоторые числовые значения и выполнить их сложение. Результат поместить в AL. В тексте программы отметить все устанавливаемые арифметическими командами значения флагов состояний. |
10 |
Данные |
а) I – массив из 4 слов. б) J – двойное слово, инициализированное большим числом. в) L – массив из 6 байт, инициализированных символом ‘&’. г) M – массив 8 слов, инициализированных последовательными числовыми значениями |
|
Пересылки |
а) Последний элемент массива L – в CH. б) Некоторые значения в AX и BX. в) Значение регистра BX – в переменные L и M со смещением 4 г) Значение из BX – в старшее слово переменной H, из AX – в младшее. |
|
Арифметика |
Занести в массив I некоторые числовые значения. Вычесть из последнего числа остальные. Результат поместить в DX. В тексте программы отметить все устанавливаемые арифметическими командами значения флагов состояний. |
11 |
Данные |
а) F – массив из 6 байт. б) H – двойное слово, инициализированное большим числом. в) Y – массив из 5 слов, инициализированных разными символами. г) Z – массив 8 байт, инициализированных числом 7Ch |
Продолжение табл. 6
|
Пересылки |
а) Старший байт переменной H – в CH, младший – в AH. б) Третий элемент переменной Y – в BX. в) Значение 5AF8h в регистр AX. г) Значение регистра SI – в конец переменных H и Y |
|
Арифметика |
Занести в массив F некоторые числовые значения. Выполнить сложение трех первых элементов и трех последних. Найти разность первой и второй суммы. Результат поместить в СL. В тексте программы отметить все устанавливаемые арифметическими командами значения флагов состояний. |
12 |
Данные |
а) F – массив из 6 байт. б) H – двойное слово, инициализированное большим числом. в) K – массив из 4 байт, состоящий из различных числовых значений. г) L – массив 20 слов, инициализированных повторяющимся значением |
|
Пересылки |
а) Последний элемент переменной K – в CH. б) Некоторые значения в AX и BX. в) Значение из BL – в старший байт переменной H, из BH – в младший. г) Значение регистра AX – в переменные H и K со смещением 2 |
Арифметика |
Занести в массив F некоторые числовые значения. Вычесть из третьего числа остальные. Результат поместить в CL. В тексте программы отметить все устанавливаемые арифметическими командами значения флагов состояний. |