Будь умным!


У вас вопросы?
У нас ответы:) SamZan.net

ЛАБОРАТОРНАЯ РАБОТА 1 ИССЛЕДОВАНИЕ ЭТАПОВ ПОСТРОЕНИЯ И РЕАЛИЗАЦИЯ ПРОГРАММ НА ЯЗЫКЕ АССЕМБЛЕР

Работа добавлена на сайт samzan.net:

Поможем написать учебную работу

Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.

Предоплата всего

от 25%

Подписываем

договор

Выберите тип работы:

Скидка 25% при заказе до 2.6.2024

ЛАБОРАТОРНАЯ РАБОТА № 1

ИССЛЕДОВАНИЕ ЭТАПОВ ПОСТРОЕНИЯ И РЕАЛИЗАЦИЯ ПРОГРАММ НА ЯЗЫКЕ АССЕМБЛЕР

  1.  Цели работы:

1. Исследование особенностей разработки основных этапов программы на языке Ассемблер.

2. Формирование практических навыков по разработке, отладке и тестированию несложных  программ на языке ассемблер.

3. Выработка у курсантов убежденности в важности освоения рассматриваемых вопросов для их будущей практической деятельности в должности предназначения.

  1.  Учебные вопросы:

1Разработка  программы на языке Ассемблер.

2. Изучение интерфейса программы из пакета TASM.

  1.  Литература:

Основная:

  1.  Кнут Д.Э. Искусство программирования. – том 3. Сортировка и поиск/ Д.Э. Кнут. – 2-е изд. – М.: Вильямс, 2009. – 832 с.
  2.  Новиков Ф. А. Дискретная математика для программистов: учебное пособие: доп. М-вом образования РФ / Ф. А. Новиков. − 3-е изд. – СПб.: Питер, 2009. − 383 с.
  3.  Юров В.И. Assembler: учебник для вузов / В.И. Юров. СПб.: Питер, 2008. – 637 c.

Дополнительная:

  1.  Рычка И.А. Высокоуровневые методы информатики и программирования. Создание приложений: учебное пособие / И.А. Рычка. – Петропавловск-Камчатский: КамчатГТУ, 2008. – 104с.
  2.  Титовский С.В. Языки программирования. Ассемблер. Версия 1.0 [Электронный ресурс]: конспект лекций / С.В.Титовский, Н.В.Титовская. – Электрон. дан (2 Мб). – Красноярск: ИПК СФУ, 2008. – 132 с.

  1.  Теоретические сведения:

1. Этапы разработки программы на языке Ассемблер

При разработке программы, с учетом особенностей языка ассемблера, необходимо осуществить реализацию следующих основных этапов:

1. Постановка и формулировка задачи.

2. Этап проектирования.

3. Этап кодирования.

4. Этап отладки и тестирования.

5.Этап эксплуатации и сопровождения.

Традиционно у существующих реализаций ассемблера нет интегрированной среды, подобной интегрированным средам Turbo Pascal, Turbo C или Visual C++. Поэтому для выполнения всех функций по вводу кода программы, ее трансляции, редактированию и отладке необходимо использовать отдельные служебные программы. Большая часть их входит в состав специализированных пакетов ассемблера. Процесс разработки программы на ассемблере включает в себя:

  •  ввод исходного текста программы;
  •  создание объектного модуля;
  •  создание загрузочного модуля;
  •  отладка программы.

Общая схема процесса разработки программы на ассемблере приведена на рис.1.

Рис.1. Процесс разработки программы на ассемблере

В начале с использованием текстового редактора вводится код программы, т.е. создается исходный файл. Основным требованием к текстовому редактору является то, чтобы он не вставлял посторонних символов (спецсимволов редактирования). При этом создаваемый файл должен иметь расширение  asm.

Далее осуществляется трансляция программы. На данном этапе  формируется объектный модуль, который включает в себя представление исходной программы в машинных кодах и некоторую другую информацию, необходимую для отладки и компоновки его с другими модулями. Для получения объектного модуля исходный файл необходимо подвергнуть трансляции при помощи программы tasm.exe из пакета TASM. Для этого в командной строке упрощенно необходимо набрать следующее.

Tasm.exe /zi имя_файла.asm , , ,

При появлении сообщений об ошибках, нужно просмотреть файл листинга (он имеет то же имя и расширение .lst), определить ошибочные операторы. Исправить имеющиеся ошибки и повторить компиляцию.

Третий этап разработки программы — создание исполняемого (загрузочного) модуля или компоновка программы. Главная цель этого шага – преобразовать код и данные в одном или нескольких объектных файлах (исходные модули могут быть написаны на одном или нескольких языках) в их перемещаемое выполняемое изображение. Результатом работы компоновщика является создание загрузочного файла с расширением exe. После этого операционная система может загрузить такой файл в память и выполнит его. Для запуска компоновщика, т. е. для создания исполняемого файла в командной строке упрощенно необходимо набрать следующее:

Tlink.exe /v имя_файла.obj

После этого можно запустить полученную программу имя_файла.exe и убедиться в ее правильном исполнении. Получение исполняемого модуля, т.е. фактическое устранение синтаксических ошибок, еще не гарантирует того, что программа будет хотя бы запускаться, не говоря уже о правильности работы. Поэтому обязательным этапом процесса разработки является отладка. На этом этапе выполняется контроль правильности функционирования как отдельных участков кода, так и всей программы в целом. Специфика программ на ассемблере состоит в том, что они интенсивно работают с аппаратными ресурсами компьютера, с определенными регистрами и областями памяти. Осуществить просмотр и изменение аппаратных ресурсов микропроцессора во время покомандного выполнения программы, выполнить трассировку в прямом и обратном направлении, определить место и источник ошибки в программе, в том числе локализовать логическую ошибку, позволяет сделать применение специального типа программного обеспечения — программных отладчиков. Для запуска отладчика Turbo Debugger (TD) в командной строке необходимо набрать команду:

td.exe имя_файла.exe

2. Изучение интерфейса программы из пакета TASM

Следует заметить, что возникают случаи, когда программа, успешно пройдя этапы трансляции и компоновки, все же работает не так, как ожидалось или вообще не работает. Следовательно, с точки зрения правил языка программирования, программа написана правильно (в ней нет синтаксических ошибок), однако алгоритм ее в чем-то неверен. Для отладки такой программы следует воспользоваться услугами интерактивного отладчика. Интерактивным он называется потому, что вся работа с ним осуществляется в непрерывном диалоге с пользователем.

Рассмотрим особенности использования отладчика TD.EXE из пакета TASM. После запуска программы на экране появляется приложение, которое состоит из двух окон: - окно Module с исходным текстом отлаживаемой программы и окно Watches для наблюдения за ходом изменения заданных переменных в процессе выполнения программы (рис. 2).

Рис. 2. Окно программы из пакета TASM

Окно Watches можно убрать, щелкнув мышью по маленькому квадратику в левом верхнем углу окна или введя команду Alt+F3, предварительно сделав это окно активным. Переключение (по кругу) между окнами осуществляется клавишей F6.

Верхняя строка отладчика представляет собой главное меню. Для перехода в меню необходимо нажать клавишу Alt и первую (выделенную цветом) букву требуемого пункта. Для выбора затем конкретного действия надо с помощью клавиш со стрелками вверх и вниз выделить нужный пункт и нажать клавишу Enter.

В нижней строке отладчика приведены его основные команды, вызов которых осуществляется нажатием на функциональные клавиши F1...F10. В действительности команд гораздо больше; некоторые из них можно реализовать только с помощью пунктов главного меню, другие вызываются комбинациями функциональных и управляющих (Alt, Ctrl или Shift) клавиш.

Рассмотрим типичные действия, к которым приходится прибегать по ходу отладки программы.

После вызова отладчика и загрузки в память отлаживаемой программы ее первое предложение помечается значком сплошного треугольника ; там же устанавливается и значок подчеркивания _, который играет в отладчике роль курсора. По мере выполнения программных предложений значок сплошной треугольник будет перемещаться по тексту программы, всегда указывая на очередное (еще не выполненное) предложение; значок _ можно перемещать с помощью клавиш со стрелками.

Нажав одну из клавиш F8 или F7, мы выполним одно предложение программы. Различие этих команд весьма существенно: команда F7 (trace, трассировка) позволяет войти внутрь вызываемых подпрограмм, а также выполнять циклы шаг за шагом. Команда F8 (step, шаг), наоборот, выполняет подпрограммы и циклы как одно неразрывное действие, что заметно ускоряет пошаговую отладку программы, если мы, например, уверены, что вызываемая подпрограмма выполняется правильно.

Можно выполнить сразу и целый фрагмент программы, т. е. несколько предложений. Для этого надо поместить курсор _ перед тем предложением, на котором требуется сделать остановку (или на любой символ внутри него), и нажать клавишу F4 (here, сюда). Выполнятся все строки программы до той, на которой установлен курсор; значок сплошной треугольник переместится на эту строку. Далее можно опять выполнять программу построчно, нажимая на клавишу F8, или, установив в требуемом месте курсор, выполнить следующий фрагмент, нажав F4.

Для повторного выполнения программы ее следует "рестартовать". Для этого надо выбрать в главном меню пункт Run-Program reset или просто нажать Ctrl+F2.

Начальное окно отладчика дает недостаточно информации для серьезной работы с программой. При отладке программы на уровне языка ассемблера необходимо контролировать все регистры процессора, включая регистр флагов, а также во многих случаях поля данных вне программы (например, векторы прерываний или системные таблицы). Для этого надо командой Alt+V, С (пункт главного меню View-CPU) открыть "окно процессора" (рис. 3).

Рис. 3. Окно процессора

Окно процессора состоит, в свою очередь, из пяти внутренних окон для наблюдения текста программы на языке ассемблера и в машинных кодах, регистров процессора, флагов, стека и содержимого памяти. С помощью этих окон можно полностью контролировать работу процессора при выполнении отлаживаемой программы. Для того чтобы можно было работать с конкретным окном, надо сделать его активным, щелкнув по нему мышью. Переходить из окна в окно можно также (по кругу), нажимая клавишу Tab. Для управления ходом программы используются функциональные клавиши, перечисленные в нижней строке кадра (F7 или F8 для пошагового выполнения, F4 для выполнения до курсора и т. д.). Курсор во всех внутренних окнах окна процессора выглядит в виде синей ленточки. Добавим еще, что, щелкнув мышью по значку стрелки вверх в правом верхнем углу окна процессора, можно увеличить это окно до размеров окна отладчика.

Важнейшим элементом отладки программы является наблюдение значений тех или иных полей данных, особенно тех, которые заполняются программой динамически, т. е. по ходу ее выполнения. Для того чтобы вывести на экран содержимое поля данных, надо поместить курсор на имя этого поля (например, per в нашем примере) и выбрать пункт меню Data-Inspect. В появившемся окне ввода переменной (рис. 4) можно скорректировать имя интересующего нас поля данных или ввести новое; если имя правильное, достаточно нажать клавишу Enter.

Рис. 4. Изменение полей данных

При этом будет выведено  окно с характеристиками и содержимым указанной переменной (рис.5). Отладчик сообщает, что переменная per хранится в памяти по адресу 5F7C:0007, т. е. имеет сегментный адрес 5FC7h и смещение OOO7h, и описана как последовательность из 24 байт. Тут же приводятся значения всех байтов строки, включая их начертание на экране, а также десятичное и 16-ричное представление (рис. 5) .

Рис. 5. Характеристики переменной

В окне Inspecting можно изменить значение отображаемого поля данных. Для этого надо, сделав это окно активным и поместив курсор на отображение конкретного элемента нашего символьного массива, например элемента с индексом 15 (символ "t"), ввести команду Alt+F10. Эта команда для любого активного окна открывает его внутреннее меню с дополнительными возможностями. В данном случае внутреннее меню будет иметь вид, показанный на нижнем рисунке (рис. 6).

 Рис. 6. Редактирование значения отображаемого поля данных 

Выбираем  пункт Change (изменение). При этом открывается окно, в котором можно ввести требуемое значение изменяемого данного. На следующем рисунке (рис. 7) показано это окно с введенным символом '>', которым будет заменен (символ "t").

 

Рис. 7. Редактирование значения отображаемого поля данных

Если теперь, не выходя из отладчика, выполнить программу до конца, на экран вместо символа "t" будет выведен >. Для того чтобы, находясь в отладчике, увидеть результат работы программы, надо ввести команду Alt+F5 (или выбрать пункт Window-User screen главного меню). Возврат в кадр отладчика осуществляется нажатием любой клавиши.

Необходимо отдавать себе отчет в том, что любые изменения, вносимые в текст программы в процессе работы с отладчиком, будут действовать только до конца данного сеанса (даже, точнее говоря, до рестарта программы). Отладчик изменяет не файл Р.ЕХЕ, хранящийся на диске, а только его копию в памяти. После завершения сеанса работы с отладчиком все, что было загружено в память, исчезает вместе с внесенными нами изменениями.

Продемонстрируем некоторые возможности окна процессора. По ходу пошагового выполнения программы можно изменять содержимое регистров. Это дает возможность исправлять обнаруженные ошибки (если выяснилось, что в какой-то строке программы заполняется не тот регистр или не тем содержимым), а также динамически модифицировать программу с целью изучения ее работы.

В рассматриваемом выше примере приведен код программы, предназначенный для сложения двух чисел 222 и 34 . Вначале в регистр AX записывается число 34, а затем к нему прибавляется число 222.  Изменим значение регистра AX на число 5 после записи в него числа 34. Для этого надо перейти в окно регистров, поместить курсор на строку, отображающую содержимое регистра AX и нажать правую клавишу мыши ввести команду Alt+F10, открывающую внутреннее меню окна регистров (см.рис. 8).

Рис. 8. Внутреннее меню окна регистров

Как видно из рисунка, меню окна регистров предоставляет возможность выполнить увеличение содержимого регистра на 1 (Increment), уменьшить его на 1 (Decrement), обнулить (Zero) и заменить на любое заданное значение (Change). Выбрав пункт Change, занесем в регистр AX число 5 (рис. 9).

Рис. 9. Пункт меню Change

Таким образом, в регистр AX будет записано число 5, хотя в исходном коде число 34, и результатом выполнения программы будет сложение двух чисел 5 и 222, которое будет храниться в регистре до окончания (перезагрузки) программы (рис. 10).

 

Рис. 10. Результат работы программы после изменений

Еще одной полезной операцией является вывод содержимого области памяти, начиная с заданного адреса (дамп памяти). Таким образом, можно изучать не только поля данных программы, но и содержимое вообще любых участков памяти компьютера, в частности системных таблиц. Любая программа, загруженная в память, состоит из двух отдельных блоков: собственно программы и ее окружения, которое располагается обычно перед программой, хотя не обязательно вплотную к ней. Пользователь может включить в окружение строки определения дополнительных переменных с помощью команды SET.

  1.  Задание на подготовительную работу:

  1.  Сформулируйте основные этапы разработки программы на ассемблере.
  2.  Дайте краткую характеристику разновидностям низкоуровневых языков программирования.
  3.  Назовите  основные составляющие процесса разработки программы на ассемблере.
  4.  Перечислите окна, которые можно открыть в отладчике TD.EXE из пакета TASM.
  5.  Назовите основные горячие клавиши, которые можно использовать при работе с отладчиком TD.EXE из пакета TASM.

  1.  Программа работы:

На основе приобретенных теоретических знаний и согласно указаниям преподавателя необходимо выполнить следующее:

  1.  Включить компьютер, из указанной преподавателем директории  скопировать на рабочий стол компьютера пакет TASM.
    1.  В папке TASM создать с помощью текстового редактора (Блокнот)  файл с расширением asm.
    2.  Открыть данный файл, записать в него  текст компилируемой программы  и сохранить.
    3.  В данной папке создать второй текстовый документ с аналогичным именем,  но расширением bat.
    4.  Открыть файл с расширением bat и записать в него следующие строки

Tasm.exe /zi имя файла.asm , , ,

pause

Tlink.exe /v имя файла.obj

pause

td.exe имя файла.exe

pause

  1.  Сохранить файл с расширением bat и закрыть его.
  2.  Запуск программы осуществляется двойным щелчком мыши по файлу с расширением bat, который осуществляет трансляцию и компоновку программы.
  3.  В случае успешного запуска программы появляется окно программы из пакета TASM (рис.2).
  4.  Проверить правильность работы программы с использованием отладчика TD.EXE из пакета TASM.
  5.   При необходимости внести изменения в программу в соответствии с указаниями преподавателя и доложить о выполнении учебного задания.

Задание № 1

Откомпилировать, скомпоновать программу на ассемблере, с помощью кода представленного ниже. Ввести текст сообщений на кириллице и латинице. После запуска программы просмотреть сообщения на экране и выводы записать в отчет. Проверьте правильность работы программы при ее запуске в пошаговом режиме (F7). Запишите в отчет, какие операции выполняет программа, в каком виде и в каких регистрах содержаться данные.

     prog    segment ;(1)Начало сегмента команд

     assume  CS:prog,DS:data ; (2)Сегментный регистр CS будет указывать на сегмент ;команд, а сегментный регистр DS - на сегмент данных

     pusk: mov AX,data        ; (3)Адрес сегмента данных сначала загрузим в АХ,

      mov DS,AX          ; (4)а затем перенесем из АХ в DS

     xor ax,ax ; (5) очистка регистра АХ

     mov AH,09h         ; (6)Функция DOS 9h вывода на экран

     mov DX,offset mesg ; (7)Адрес выводимого сообщения должен быть в DX

int 21h            ; (8)Вызов DOS

mov AH,4Ch         ; (9Функция 4Ch завершения программы

mov AL, 0          ; (10)Код 0 успешного завершения

int 21h            ; (11)Вызов DOS

     prog    ends               ; (12)Конец сегмента команд

     data    segment            ; (13)Начало сегмента данных

     mesg    db 'Фамилия Имя Отчество'   ; (14)Выводимый текст

     mesg2   db 'Место и дата рождения '   ; (15)Выводимый текст

     mesg3   db 'Учебное заведение '   ; (16)Выводимый текст

     mesg4   db 'Факультет '    ; (17)Выводимый текст

     mesg5   db 'Курс и учебный взвод '   ; (18)Выводимый текст

     data    ends             ; (19)Конец сегмента данных

     stk     segment stack  ; (20)Начало сегмента стека

       db 256 dup (0)   ; (21)Резервируем 256 байт для стека

     stk     ends            ; (22)Конец сегмента стека

       end pusk      ; (23)Конец текста программы с точкой входа.

Задание № 2

Просмотрите выводимые в программе сообщения с помощью пунктов меню View/Variables. Последовательно выведите на экран содержимое полей данных mesg, mesg 2, mesg3, mesg 4, mesg 5. Определите адреса памяти, в которых хранятся переменные данных сообщений и какое количество байт занимает каждое сообщение. Измените третий символ в каждом сообщении на знак ! и проверьте правильность выполненных действий. Откройте окно процессора и запишите в первые регистры последовательно числа от 1 до 7.

Задание № 3

Используя команду пересылок mov, переслать в регистры числа 19,11,93, 08. Код программы приведен далее. Проверить правильность работы программы в пошаговом режиме. Результаты записать в отчет, о выполнении задания доложить преподавателю.

MASM

 MODEL small

.STACK 256

.DATA

exCode DB 0

var DB 11    ; однобайтовая переменная

.CODE

Start:

mov ax, @data    ; установка в DS

mov ds, ax     ;адреса сегмента данных

mov ax, 19     ; переслать конкретные данные

mov bx, 11    ; в регистры

 mov cx, 93

mov dx, 08

Exit:

 mov ah, 04Ch      ;функция DOS:выход из программы

mov al, exCode     ;возврат значения кода ошибки

int 21h         ;вызов DOS.    Останов программы

END Start      ;конец программы/ точка входа

  1.  Контрольные вопросы:

  1.  Понятие языка низкого уровня. Ассемблер.
  2.  Перечислите алгоритм запуска программы при помощи  отладчика TD.EXE из пакета TASM.
  3.  Назовите основные элементы интерфейса рассматриваемой программы.
  4.  Каким образом можно посмотреть сообщения выводимые программой.
  5.  Определите способ вывода  характеристик полей данных.
  6.  Каким образом можно изменить значения регистров.
  7.  Назовите структуру программы на языке ассемблера.
  8.  Опишите стандартный код выхода из программы.




1. Титан- жизнь Джона Д.html
2. Тимоти Ван Паттен Аллен Култер
3. Конституция;
4. Тема вопроса- Особая часть Сложность вопроса- 1 из 10 Вопрос 2 Свойства экосистемы- Биопро
5.  Введение Многие договоры гражданского права могут выступать и в качестве возмездных и как безвозмез
6. Регулирование дорожного движения осуществляется при помощи дорожных знаков дорожной разметки дор
7. і. Будівля повинна задовольняти наступним вимогам- відповідати своєму призначенню тобто створювати якнай.html
8. на тему- Заработная плата в системе методов стимулирования труда зарубежный опыт студентки III курса
9. а Іван Юрій Клен ~ Бурґгардт Освальд Присвяти- М
10. Геометрические задачи на олимпиадах по информатике
11. реферат дисертації на здобуття наукового ступеня кандидата медичних наук - Київ2006 Дисер
12. психологический тип
13. РЕФЕРАТ дисертації на здобуття наукового ступеня кандидата філософських наук Киї1
14. Реферат- Задержание подозреваемого
15. 15 КОНТРОЛЬНАЯ РАБОТА
16. Вступление Глава первая
17. Типичные ошибки в семейном воспитании
18. ка могут проявл. не только в виде эмоций и эмоц
19. Оценка животных-производителей по качеству потомства на специальных станциях
20. Патриотическое воспитание граждан Российской Федерации на 20012005 гг