This repository has been archived by the owner on Feb 11, 2020. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
Lab 06 07
wcdbmv edited this page Mar 15, 2019
·
1 revision
Цель работы:
- научить готовить подпрограммы MASM и использовать соглашения по связыванию подпрограмм, принятые в Turbo Pascal.
Задачами работы является изучение:
- правил построения подпрограмм по соглашения связывания, принятым в Turbo Pascal,
- правил использования стека для передачи параметров подпрограмм,
- команд логические и сдвига,
- косвенную адресацию для передачи управления по данным в памяти.
Лабораторная база:
- Персональные компьютеры (ПК).
Способ адресации по данным в памяти состоит в следующем
- Ячейка памяти типа
DW
может содержать адрес ближней метки (процедуры), причем в исходном тексте программы достаточно в качестве начального значения ячейки можно указать имя метки. - Для передачи управления на метку командой
CALL
можно использовать как прямую адресацию (возможно, с индексированием и\или базирование), так и любую косвенную адресацию. В последнем случае перед операндом команды следует указатьWORD PTR
.
Если метка дальняя, то ячейка должна иметь тип DD
и при косвенной адресации перед операндом команды следует указать DWORD PTR
- Составить программу, выполняющую в цикле, работы, соответствующие вводимому символу:
Для перехода на новую строку экрана составить и использовать процедуру. ДЛЯ ВЫЗОВА ВСЕХ ПРОЦЕДУР 2..7 В ОСНОВНОЙ ПРОГРАММЕ, ИСПОЛЬЗОВАТЬ ОДНУ КОМАНДУ
‘0’ – вывод пунктов меню с номерами 0..8 ‘1’ – ввод (в основной программе, без проверки корректность ввода) с клавиатуры десятичного целого, возможно, со знаком минус, преобразование во внутреннее представление в функции, возвращающей результат типа int (16), и размещение (в основной программе) в 2-байтовой ячейке X. ‘2’ – вывод на экран с новой строки значения из ячейки Х в форме двоичного целого без знака и без лидирующих нулей (использовать команды сдвига). ‘3’ – вывод на экран с новой строки значения из ячейки Х в форме двоичного целого со знаком и без лидирующих нулей (использовать команду NEG и процедуру предыдущего пункта). ‘4’ – вывод на экран с новой строки значения из ячейки Х в форме десятичного целого без знака (использовать команду деления). ‘5’ – вывод на экран с новой строки значения из ячейки Х в форме десятичного целого со знаком (использовать команду NEG и процедуру предыдущего пункта). ‘6’ – вывод на экран с новой строки значения из ячейки Х в форме шестнадцатеричного целого без знака (использовать команды циклического сдвига и конъюнкции). ‘7’ – вывод на экран с новой строки значения из ячейки Х в форме шестнадцатеричного целого со знаком (использовать команду NEG и процедуру предыдущего пункта). ‘8’ – завершение работы программы.
CALL
И КОСВЕННУЮ АДРЕСАЦИЮ ПО ПАМЯТИ. ДЛЯ ВСЕХ ПРОЦЕДУР ИСПОЛЬЗОВАТЬ СОГЛАШЕНИЯ Turbo Pascal ПО СВЯЗЫВАНИЮ ПОДПРОГРАММ. Все процедуры должны быть ближними и располагаться в отдельных модулях. - Опробовать команды библиотекаря
LIB
по созданию библиотеки объектных модулей, включению, удалению, копированию в файл, перемещению в файл модулей, созданию новых библиотек, объединению библиотек, построению оглавления (листинга) библиотеки. Собрать в библиотекуLAB06.LIB
объектные модули составленных процедур.
ПРИМЕР ПРОТОКОЛА ВВОДВ\ВЫВОДА ПРИ РАБОТЕ ПРОГРАММЫ: ВЫБОР ВИДА РАБОТЫ:
0. Отобразить меню
1. Ввод целого в слово X
2. Вывод из Х как двоичного целого без знака
3. Вывод из Х как двоичного целого со знаком
4. Вывод из Х как десятичного целого без знака
5. Вывод из Х как десятичного целого со знаком
6. Вывод из Х как шестнадцатеричного целого без знака
7. Вывод из Х как шестнадцатеричного целого знаком
8. Вывод из программы
> ВЫБЕРИТЕ ВИД РАБОТЫ 0..7: 1
ВВЕДИТЕ ЧИСЛО: -5
ВЫБЕРИТЕ ВИД РАБОТЫ 0..7: 2
1111111111111011
ВЫБЕРИТЕ ВИД РАБОТЫ 0..7: 3
-101
ВЫБЕРИТЕ ВИД РАБОТЫ 0..7: 4
65531
ВЫБЕРИТЕ ВИД РАБОТЫ 0..7: 5
-5
ВЫБЕРИТЕ ВИД РАБОТЫ 0..7: 6
FFFB
ВЫБЕРИТЕ ВИД РАБОТЫ 0..7: 7
-5
ВЫБЕРИТЕ ВИД РАБОТЫ 0..7: 8