Федеральное агентство по образованию

Государственное образовательное учреждение высшего профессионального образования

Томский политехнический университет

УТВЕРЖДАЮ

/Декан АВТФ

_________________

_________________ 2005г.

ЯЗЫК ПРОГРАММИРОВАНИЯ «ASSEMBLER»

методические указания к выполнению лабораторных работ по курсу

«Архитектура ЭВМ и систем» для студентов специальностей 071900 «Информационные системы и технологии»

Издательство ТПУ

Томск 2005

УДК 62.50

Язык программирования «Assembler»

Методические указания к выполнению лабораторных работ по курсу «Архитектура ЭВМ и систем» для студентов специальности 071900 «Информационные системы и технологии». – Томск: Изд-во ТПУ, 2005. – 60 с.

Составитель

Рецензент

Методические указания обсуждены на заседании кафедры автоматики и компьютерных систем 7 октября 2004 г., протокол №2

Зав. кафедрой

ОГЛАВЛЕНИЕ

Введение. 4

Лабораторная работа №1. 5

Лабораторная работа №2. 6

Лабораторная работа №3. 7

Лабораторная работа №4. 14

Лабораторная работа №5. 23

Лабораторная работа №6. 31

Лабораторная работа №7. 43

ЛИТЕРАТУРА.. 59

Введение

Широкое распространение персональных ЭВМ на базе IBM/PC-XT требует от современного программиста знания и навыков разработки программ высокой эффективности, что часто может быть достигнуто с помощью программирования на языке низкого уровня (ассемблере), а также путем учета особенностей операционной системы.

Язык программирования Ассемблера – это символьная форма записи машинного языка, его использование существенно упрощает написание машинных программ и, в тоже время, значительно повышает эффективность использования ресурсов компьютера по сравнению с языками высокого уровня. Особое значение при этом приобретает разработка резидентных программ прерываний операционной системы. Ассемблерный код, полученный при компиляции, также может служить основой для повышения эффективности программы. Язык Ассемблера, в чистом виде, относительно редко используется на практике, что связанно с машинной ориентированностью языка. Это означает, что программы на языке Ассемблера работают непосредственно с ресурсами компьютера и требуют от программиста хорошего знания его архитектуры и логики работы. Универсальные параметризованные фрагменты ассемблерных программ целесообразно оформлять в виде макросов, из которых постепенно формируется инструментальная библиотека программиста.

НЕ нашли? Не то? Что вы ищете?

Не смотря на это, изучение языка Ассемблера является основным этапом в подготовке профессиональных программистов, поскольку позволяет шире понять принципы работы ЭВМ, операционных систем и трансляторов с языков высокого уровня, что является необходимым условием при разработке высокоэффективных программ.


Лабораторная работа №1

Цель лабораторной работы:

Изучение структуры процессора Intel 8086, и основ его программирования.

Теоретические положения:

Студент должен самостоятельно изучить структуру микропроцессора Inlet 8086. В результате выполнения практической работы студент должен знать:

− структуру микропроцессора Intel 8086;

− назначение входящих в него блоков и устройств;

− регистры микропроцессора и их основное назначение;

− структуру и назначение регистра флагов;

− структуру памяти и особенности принципа сегментации;

− принцип прерываний;

− режимы адресации;

− последовательность написания программ на языке Ассемблера;

− назначение программ, входящих в пакет Turbo Assembler.

Задание на лабораторную работу:

Защита лабораторной работы производиться в режиме устного собеседования. Для защиты лабораторной работы студент должен знать ответы на следующий перечень вопросов.

1.  Основные блоки современной ПЭВМ.

2.  Структура центрального процессора.

3.  Единицы информации ЭВМ.

4.  Регистры процессора Intel 8086. Регистры общего назначения. Состав и назначение.

5.  Регистры процессора Intel 8086. Сегментные регистры. Состав и назначение.

6.  Регистры процессора Intel 8086. Регистр флагов. Состав и назначение.

7.  Принцип сегментации памяти. Алгоритм формирования абсолютного адреса.

8.  Стек. Назначение и основные принципы использования.

9.  Прерывания. Назначение, классы прерываний, реакция процессора на возникновения прерываний.

10.  Режимы адресации. Привести примеры.

11.  Этапы разработки программы на языке Assembler.

12.  Процесс разработки программы на Assembler.

13.  Трансляция программы. Назначение, основные опции.

14.  Компоновка программы. Назначение, основные функции.

15.  Отладка программы. Назначение, режимы отладки, назначение окон Dump и Registers.

16.  Типы предложений языка Assembler.

17.  Синтаксические конструкции языка Assembler.

18.  Лексемы языка Assembler.

19.  Типы операторов языка Assembler. Привести примеры.

20.  Упрощенные директивы определения сегмента.

21.  Модели памяти, используемые в языке Assembler.

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

Лабораторная работа №2

Цель лабораторной работы:

Изучение программных компонент пакета программирования Assembler. Овладение навыками подготовки, трансляции, компиляции и отладки ассемблерных программ.

Задание на лабораторную работу:

Запустите файл ASM_Ed, который находиться в каталоге Tasm диска d. Откройте подготовленный файл и выполните трансляции и компиляцию подготовленного модуля. Далее запустите Turbo Debugger из приложения ASM_Ed. Проверьте правильность функционирования программы. В случае возникновения ошибок исправьте подготовленный программный код и повторите попытку. В случае успешного запуска программы оцените результат ее выполнения.

Выполняете программу в пошаговом режиме, используя Turbo Debugger для отслеживания содержимого регистров и ячеек памяти. Объясните изменение содержимого ячеек памяти и регистров при выполнении программы.

Выполняете процесс трансляции, компиляции и отладки программы, используя DOS-окно.

1.  Запустить tasm. exe из командной строки

2.  Запустить tlink. exe из командной строки

3.  Запустить td. exe и оценить код, находящийся в окне Turbo Debugger

4.  Повторить все этапы, только с опциями /zi для tasm. exe и /v для tlink. exe.

5.  Оценить полученный код в Turbo Debugger.

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

Лабораторная работа №3

Цель лабораторной работы:

Ознакомление со структурой микропроцессора Intel. Формирование знаний и умений вывода информации на экран, а также выполнения элементарных операций с переменными, заданными в программе.

Теоретические положения:

Любая микропроцессорная система работает в соответствии с принципом кодирования информации. Это можно рассмотреть на простом примере. Если пользователь нажимает клавишу на клавиатуре, в процессор передается ее код (рис.6.1).

Рис. 6.1. Передача данных в процессе ввода-вывода

Коды введенных символов через устройство ввода-вывода поступают в память процессора (регистры). Далее коды символов требуется сохранить в оперативной памяти, либо произвести над ними какие-либо действия. Например, под действием можно понимать преобразование введенного кода в число, которое характеризует нажатую клавишу. Для этого требуется в соответствии с кодовой таблице символов определить код символа цифры, введенной с клавиатуры. Далее требуется преобразовать код цифры в ее эквивалентное значение. Например, при нажатии цифры «3» в регистр микропроцессора поступит код «33h» в соответствии с кодовой таблицей. Следовательно, для преобразования кода символа в число требуется вычесть из кода символа, введенного с клавиатуры, число «30h». При выводе числа на экран требуется каждую цифру числа преобразовать в код символа, отражающего данную цифру, а затем передать последовательно все коды, принадлежащие числу, на монитор пользователя.

Для сложения двух чисел, представленных различными типами данных, требуется выполнить приведение числа с наименьшим количеством бит к числу с наибольшим количеством бит. Для реализации алгоритма приведения можно использовать несколько вариантов составления программы. Один из них основывается на использовании оператора преобразования типа ptr (рис. 3.7), а второй на свойстве регистров микропроцессора. Регистры, как известно, могут быть представлены либо в двухбайтном виде (ax), либо в виде старшего байта (ah) и младшего байта (al). Следовательно, можно для преобразования числа из однобайтного в двухбайтное записать в регистр (al) значение однобайтного числа, а в регистр (ah) нулевое значение. В итоге регистр (ax) будет содержать результат преобразования.

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

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

Пример:

Требуется разработать тест для тестирования программного кода, выполняющего следующие действия: a+(bÙc).

Допустим, что после подготовки программного продукта был составлен тест:

a1=12h, b1=7h, c1=70h;

a2=12h, b2=82h; c2=38h;

a3=8h, b3=CEh; c3=35h.

При тестировании был получен результат 12h во всех трех случаях.

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

Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 8 9 10