Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
001.doc
Скачиваний:
1
Добавлен:
12.11.2019
Размер:
275.97 Кб
Скачать

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ,

МОЛОДЕЖИ И СПОРТАУКРАИНЫ

ГОСУДАРСТВЕННОЕ ВЫСШЕЕ УЧЕБНОЕ ЗАВЕДЕНИЕ

ЗАПОРОЖСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ

МЕТОДИЧЕСКОЕ ПОСОБИЕ

К ЛАБОРАТОРНИМ РАБОТАМ

ПО КУРСУ

Архитектура ЭВМ и "Ассемблер”

Для студентов специальностей: «Прикладная математика»;

«Информатика»

Утверждено ученым советом ЗНУ

Протокол № от .09.2012

г. Запорожье - 2012

УДК: 004.72:004.4’424(075.8)

ББК 3973.2-02я73

Методическое пособие к лабораторным работам по курсу «Архитектура ЭВМ и Ассемблер» (для студентов специальностей «Прикладная математика», « Информатика »)

Составители: Бровченко Є.Е.

Запорожье: ЗНУ, 2012. –с.

В методическом пособии приводятся основные теоретические и практические положения архитектуры ЭВМ и микропроцессоров Intel 80/х86 и языка программирования ассемблер.

Составитель: Е.Э. Бровченко;

Рецензент: Ермолаев В.А.

Корректор:

Ответственный за выпуск: Е.Э. Бровченко

Содержание.

ВВЕДЕНИЕ.

Данное методическое пособие предназначено для студентов, изучающих курс «Архитектура ЭВМ и «Ассемблер»», основанный на рассмотрении архитектуры процессора Intel x86, и является практическим дополнением к конспекту лекций по данному курсу.

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

Лабораторная работа № 1 ТЕМА: Введение в язык Ассемблера

Цель работы: изучить процесс получения рабочей программы, написанной на языке программирования ассемблер. Подготовить «рабочее место» программиста. Ознакомится с синтаксисом языка программирования ассемблер.

Работа рассчитана на два часа (одна пара)

Введение

Ассемблер - низкоуровневый язык программирования. Для написания программы на этом языке (как и на других) требуется знание синтаксиса языка.

Синтаксис Ассемблера

Общий формат строки программы на ассемблере

<Метка>:    <Оператор>    <Операнды>    ; <Комментарий>

Поле метки. Метка может состоять из символов и знаков подчёркивания. Метки используются в операциях условного и безусловного перехода.

Поле оператора. В этом поле содержится мнемоника команды. Например мнемоника mov

Поле операндов. Операнды могут присутствовать только если присутствует оператор (поле оператора). Операндов может не быть, а может быть несколько. Операндами могут быть данные, над которыми необходимо выполнить какие-то действия (переслать, сложить и т.д.).

Поле комментария. Комментарий нужен для словесного сопровождения программы. Всё, что стоит за символом ; считается комментарием.

Будем использоваться ассемблер для i80x86 процессора:

  • TASM -  Borland Turbo Assembler - компилятор

  • TLINK - Borland Turbo Linker - редактор связей ( компоновщик )

  • TD     - Turbo Debuger - диалоговый отладчик

  • TLIB    -   Borland Turbo Lib  - "библиотекарь" (программа создания и управления библиотекой объектных модулей)

Процесс получения рабочей программы.

Кратко рассмотрим процесс получения (и загрузки для выполнения) загрузочного модуля (рабочей программы). (Здесь и далее предполагается выполнении работы в режиме «командная строка» или в «консольном» режиме. Вызов этого режима можно, например,  выполнить вызвав консоль операционной системы - «ПУСК - ВЫПОЛНИТЬ - CMD»).

1 шаг. Создают файл исходной программы (SOURCE файл). Обычно для этого применяют программу, называемую редактором текста. Редактор текста (или текстовый редактор) выбирается исходя из удобства работы. «Классический» текстовый редактор консоли - EDIT. Текстовый редактор, интегрированный в файловый менеджер FAR превосходит «классический» редактор по ряду параметров и может быть рекомендован для подготовки исходных файлов. Вызов менеджера FAR производится аналогично «консоли». Редактирование существующего файла - F4, создание НОВОГО файла - Shift + F4.

2 шаг. Транслируют исходную программу (файл), используя программу - компилятор языка программирования ассемблер. Компилятор языка программирования «читает» исходную программу из SOURCE файла. Переводит текст программы в набор машинных команд, которые записываются в выходной файл. Полученный таким образом файл представляет  собой файл объектной программы (OBJ файл). Протокол  процесса перевода команд исходной программы компилятор помещает в специальный "протокольный" файл, обычно называемый "листингом" (файл «листинг» - LST файл).   Например можно использовать следующую командную процедуру c:\tasm\bin\tasm.exe /c /r /la /ml /os  /w2 /x /z /zi %1.asm,%1.obj,%1.lst

3 шаг.  Связывают (или преобразовывают внутренний формат объектного файла) файл объектной программы с библиотечными и другими программами с помощью редактора связей, и таким образом формируют файл загрузочного модуля ( EXE файл). Этот файл содержит «полный» набор машинных команд в такой форме, при которой сразу возможна их загрузка в оперативную память и выполнение. Обычно протокол «связывания» объектных модулей помещается в файл протокола, или в файл «карты памяти» (MAP - файл) Например можно использовать следующую командную процедуру C:\TASM\BIN\TLINK /m /M /s /l /i /Tde /v %1.obj,%1.exe,%1.map,MY_LIB.LIB;

4 шаг. Выполняют загрузочный модуль. Вызывают системный загрузчик, который копирует содержимое исполняемого файла в оперативную память ЭВМ и настраивает центральный процессор на выполнение машинных команд,

Рис.1 Схема работы редактора текста, ассемблера, редактора связей.

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

В приведенном выше примере вызова редактора связей - файл MY_LIB.LIB - файл библиотеки объектных модулей.

Подготовка «рабочего места»

  1. Создайте на указанном преподавателем или лаборантом дисплейного класса диске в корневом каталоге папку с именем «номер_группы». Если методика работы в компьютерном классе предполагает у вас наличие индивидуальной папки, то возможно работать в ней.

  2. Вызовите новое окно «Интернет браузера» по следующей ссылке

  3. Сохраните файлы TASM.zip, a.bat, l.BAT, proba.asm, asm-help.zip, HELP.zip (правая кнопка мышки на имя файла, выбор из меню - „сохранить как...”) в созданной Вами папке «номер_группы»

  4. Разархивируйте сохраненные архивы:

TASM.zip - в корень диска D:

asm-help.zip, HELP.zip - в папку «номер_группы». Будьте внимательны - в указанных папках не должна появляться папка с именем архива, а должен быть записан набор файлов и папок с другими именами) 

  1. Вызовите консоль («сеанс MSdos» - command.com или «Командная строка» - CMD). Настройте удобное для Вас разрешение экрана и величину шрифта.

  2. Сделайте папку «номер_группы» текущей (D: <Enter>- смена диска, CD \имя_папки <Enter> - смена текущей директории). 

  3. Создайте (или проверьте наличие в Вашей рабочей папке) двух командно - процедурных файлов:

файл a.bat:

echo on

<буква_диска>:\tasm\bin\tasm.exe /c /r /la /ml /os /w2 /x /z /zi %1.asm,%1.obj,%1.lst

файл l.bat:

echo on

<буква диска>:\TASM\BIN\TLINK /m /M /s /l /i /Tde /v %1.obj,%1.exe,%1.map;

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

  2. Создайте (или проверьте его наличие) файл proba.asm:

STK SEGMENT STACK

DW 64 DUP (?)

STK ENDS CODE SEGMENT PUBLIC           ASSUME CS:CODE START PROC FAR           PUSH DS ; СЕГМЕНТ АДРЕСА ВОЗВРАТА           MOV AX,0 ; СМЕЩЕНИЕ АДРЕСА ВОЗВРАТА           PUSH AX           CLD ; УСТАНОВКА НАПРАВЛЕНИЯ           MOV AX,CS ; УСТАНОВКА СЕГМЕНТНОГО РЕГИСТРА           MOV DS,AX           ASSUME DS:CODE           LEA DX,MESSAGE           MOV AH,9H           INT 21H          RET MESSAGE db 'Hello...ххххххх.',10,13, '$' START    ENDP CODE     ENDS             END START  

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

a prob

и ее сборку

l proba.

  1. Изучите и объясните что находится в файлах *.lst, *.map, *.obj?

Какие программы создали эти файлы? Это наиболее удобно выполнить с использованием FAR менеджера.

  1. Выполните программу proba.

  2. Измените программу так, что бы они выводили другой текст - например Ваше имя и фамилия.

  3. Изучите файлы *.lst.

  4. Вызовите и ознакомитесь с «справочными» программами HELP, asm-help программами - справочниками по операционной системе  и assembler.

Оформите отчет по проделанной работе используя Microsoft WORD.

Требование к оформлению отчета.

Отчет подготавливается на машинном носителе в формате Microsoft Word. Титульная страница оформляется по обще принятым правилам. На ней в обязательном порядке указывается тема работы. В текст отчета необходимо включить постановку задачи, листинг (снимок экрана, текст файла и т.п.) разработанного файла и результат тестирования.

В отчет включите описание

  1. проделанных шагов работы,

  2. листинги ваших программ и

  3. "Снимки" сеанса командной строки с результатами выполнения программ.

Примечание - все указанные в задании файлы Вы можете найти на странице

Основные контрольные вопросы.

- Что содержит файл исходного модуля?

- что содержит файл объектного модуля?

- что содержит файл загружаемого (абсолютного) модуля?

- что содержит файл листинга?

- какие программы используются для создания выше перечисленных файлов?

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

 

Тема 2: изучение электронного справочника и отладчика программ.

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

.Данная работа рассчитана на два этапа выполнения. В первой части необходимо изучить электронную справочную систему Tech Help, которая на ~70% облегчает процесс написания программ на Ассемблере, предоставляя данные об операторах, служебных программных блоках и т.д. А так же изучение других, предложенных на паре преподавателем, справочных систем и электронных учебников.

Перейдем к практической части данной работы:

На сетевом диске m: в каталоге help (m:\help, он же \\l41-serv\edrive\help\) необходимо запустить файл help.exe и ознакомиться со следующими понятиями и разделами:

  • - понятие .COM- , .EXE - файла и их различие;

  • - префикс программного сегмента;

  • - заголовок исполняемого файла;

  • - команды процессора (арифметические, пересылки данных, строковые и т.д.);

  • - ASCII – таблица кодировок символов;

  • - прерывания DOS и BIOS и их функции.

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

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

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

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

Компилятор, рассматриваемый в данном пособии, носит имя tasm.exe (Turbo assembler). «Сборщик», он же редактор связей – tlink.exe.

Во второй части работы необходимо:

На диске D:\ создать каталог по номеру вашей группы и все дальнейшие действии по созданию программ, написанию отчетов и пр. осуществлять только в этом каталоге. Например, d:\8225-1\.

Далее необходимо с диска m: каталог m:\LECTIONS\ARCH&ASM\ скопировать в свою папку файл с именем Ascii.asm или набрать текст программы в текстовом редакторе (см. прил. А.1).

Это программа на ассемблере, которую вы должны откомпилировать и собрать в .com модуль.

Для этого в командном режиме ОС (или в Far-коммандере), предварительно сделав текущим «свой» каталог, Вы набираете следующее (курсивом выделена подсказка командной строки, которую набирать не надо!):

d:\8225-1>tasm Ascii.asm

где d:\8225-1> - подсказка командной строки (набирать не надо!)

Та же команда с ключом /l позволяет получить дополнительно файл протокол компиляции (листинг) (см. прил. А.2).

d:\8225-1>tasm /l Ascii.asm

Результатом работы компилятора является объектный модуль Ascii.obj, содержащий перевод программы на машинный язык и управляющие таблицы, в которых находится информация о процедурах и функциях, код которых не содержится в тексте Вашей программы.

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

D:\821…\>tlink /x /t Ascii.obj

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

/x – говорит, что не надо создавать .map файл,

/t – указывает, должен получиться файл с расширением .com.

Примечание: Для получения полной информации о ключах какой-либо команды, достаточно в командной строке набрать её имя с ключом /?.

После выполнения этой команды в Вашем каталоге должен появиться файл с расширением .com - Ascii.com.

Запустите его:

D:\821…\>Ascii.com

В результате выполнения программы в левом верхнем углу экрана появится следующая таблица ( 256 символов из таблицы ASCII кодов):

☺ ☻ ♥ ♦ ♣ ♠ • ◘ ○ ◙ ♂ ♀ ♪ ♫ ☼

► ◄ ↕ ‼ ¶ § ▬ ↨ ↑ ↓ → ← ∟ ↔ ▲ ▼

! " # $ % & ' ( ) * + , - . /

0 1 2 3 4 5 6 7 8 9 : ; < = > ?

@ A B C D E F G H I J K L M N O

P Q R S T U V W X Y Z [ \ ] ^ _

` a b c d e f g h i j k l m n o

p q r s t u v w x y z { | } ~ ⌂

А Б В Г Д Е Ж З И Й К Л М Н О П

Р С Т У Ф Х Ц Ч Ш Щ Ъ Ы Ь Э Ю Я

а б в г д е ж з и й к л м н о п

░ ▒ ▓ │ ┤ ╡ ╢ ╖ ╕ ╣ ║ ╗ ╝ ╜ ╛ ┐

└ ┴ ┬ ├ ─ ┼ ╞ ╟ ╚ ╔ ╩ ╦ ╠ ═ ╬ ╧

╨ ╤ ╥ ╙ ╘ ╒ ╓ ╫ ╪ ┘ ┌ █ ▄ ▌ ▐ ▀

р с т у ф х ц ч ш щ ъ ы ь э ю я

Ё ё Є є Ї ї Ў ў ° ∙ · √ № ¤ ■

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

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

D:\821…\>td Ascii.com

где td – имя программы отладчика (turbo debugger, bug - жук).

Это программа имеет собственную оболочку и набор команд для выполнения отладочных действий. Необходимый минимум – это:

F8 – выполнить одну команду,

F7 – выполнить одну команду, с заходом в процедуру,

F4 – выполнить все команды до курсора,

F6 – переключение между окошками отладчика,

F5 – распахнуть внутреннее окошко до размеров рабочей области,

Alt+F5 – переключиться между рабочей областью отлаживаемой программ и окном отладчика,

Ctrl+F2 – прервать выполнение программы и начать с начала,

Alt+Х – выход из отладчика.

Все остальные команды - во встроенном справочнике по нажатию F1!

Рис. 1

На рисунке 1 в центре код отлаживаемой программы, внизу – содержимое сегмента данных, вверху справа – содержимое регистров процессора, тонкая полоска справа – состояние флагов регистра флагов, снизу справа содержимое сегмента стека.

Задание:

Необходимо изменить программу таким образом, чтобы таблица выводилась посреди экрана. Для этого обязательно использовать: комментарии к программе, справочник и отладчик. Основным при выполнении данной лабораторной работы является изучение работы с отладчиком и справочной системой. А также изучение всех использованных в программе операторов и функций.

Примечание:

В текстовом режиме рабочая область окна программы состоит из 80-ти знакомест в строке и 25-ти строк. Нумерация начинается с координат 0,0 в левом верхнем углу экрана. Т.о., экран – это матрица размерностью 25Х80, каждый элемент которой содержит какой-то символ. Каждый символ имеет свои атрибуты: цвет, яркость, способ вывода (мигает или нет), место и т.д.

Какой символ будет напечатан, задается кодом из ASCII таблицы, а где – координатами курсора перед его печатью. Символ печатается только в позиции курсора! После печати символа на экран изменяются и координаты курсора, он перемещается в следующую за символом позицию в строке.

Литература.

В качестве необходимых для самостоятельного изучения разделов предлагается [4]:

ГЛАВА 1. Введение в семейство персональных компьютеров IBM PC.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]