Skip to content
This repository has been archived by the owner on Feb 11, 2020. It is now read-only.

Lab 06 07

wcdbmv edited this page Mar 15, 2019 · 1 revision

Лабораторная работа №6+7

Цель работы:

  • научить готовить подпрограммы MASM и использовать соглашения по связыванию подпрограмм, принятые в Turbo Pascal.

Задачами работы является изучение:

  • правил построения подпрограмм по соглашения связывания, принятым в Turbo Pascal,
  • правил использования стека для передачи параметров подпрограмм,
  • команд логические и сдвига,
  • косвенную адресацию для передачи управления по данным в памяти.

Лабораторная база:

  • Персональные компьютеры (ПК).

Справка

Способ адресации по данным в памяти состоит в следующем

  1. Ячейка памяти типа DW может содержать адрес ближней метки (процедуры), причем в исходном тексте программы достаточно в качестве начального значения ячейки можно указать имя метки.
  2. Для передачи управления на метку командой CALL можно использовать как прямую адресацию (возможно, с индексированием и\или базирование), так и любую косвенную адресацию. В последнем случае перед операндом команды следует указать WORD PTR.

Если метка дальняя, то ячейка должна иметь тип DD и при косвенной адресации перед операндом команды следует указать DWORD PTR

Задание

  1. Составить программу, выполняющую в цикле, работы, соответствующие вводимому символу:
    ‘0’ – вывод пунктов меню с номерами 0..8
    ‘1’ – ввод (в основной программе, без проверки корректность ввода) с клавиатуры десятичного целого, возможно, со знаком минус, преобразование во внутреннее представление в функции, возвращающей результат типа int (16), и размещение (в основной программе) в 2-байтовой ячейке X.
    ‘2’ – вывод на экран с новой строки значения из ячейки Х в форме двоичного целого без знака и без лидирующих нулей (использовать команды сдвига).
    ‘3’ – вывод на экран с новой строки значения из ячейки Х в форме двоичного целого со знаком и без лидирующих нулей (использовать команду NEG и процедуру предыдущего пункта).
    ‘4’ – вывод на экран с новой строки значения из ячейки Х в форме десятичного целого без знака (использовать команду деления).
    ‘5’ – вывод на экран с новой строки значения из ячейки Х в форме десятичного целого со знаком (использовать команду NEG и процедуру предыдущего пункта).
    ‘6’ – вывод на экран с новой строки значения из ячейки Х в форме шестнадцатеричного целого без знака (использовать команды циклического сдвига и конъюнкции).
    ‘7’ – вывод на экран с новой строки значения из ячейки Х в форме шестнадцатеричного целого со знаком (использовать команду NEG и процедуру предыдущего пункта).
    ‘8’ – завершение работы программы.
    
    Для перехода на новую строку экрана составить и использовать процедуру. ДЛЯ ВЫЗОВА ВСЕХ ПРОЦЕДУР 2..7 В ОСНОВНОЙ ПРОГРАММЕ, ИСПОЛЬЗОВАТЬ ОДНУ КОМАНДУ CALL И КОСВЕННУЮ АДРЕСАЦИЮ ПО ПАМЯТИ. ДЛЯ ВСЕХ ПРОЦЕДУР ИСПОЛЬЗОВАТЬ СОГЛАШЕНИЯ Turbo Pascal ПО СВЯЗЫВАНИЮ ПОДПРОГРАММ. Все процедуры должны быть ближними и располагаться в отдельных модулях.
  2. Опробовать команды библиотекаря 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
Clone this wiki locally