- •"Снимки" сеанса командной строки с результатами выполнения программ.
- •Тема 2: изучение электронного справочника и отладчика программ.
- •Глава 2. Выполнение программ.
- •Тема 2. Работа с экраном и клавиатурой.
- •В качестве необходимых для самостоятельного изучения разделов предлагается [4]:
- •В качестве необходимых для самостоятельного изучения разделов предлагается [4]:
- •Дополнительная.
- •Приложение а
- •1.Текст программы
- •2.Файл протокол компиляции данной программы
- •Приложение б.
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ,
МОЛОДЕЖИ И СПОРТАУКРАИНЫ
ГОСУДАРСТВЕННОЕ ВЫСШЕЕ УЧЕБНОЕ ЗАВЕДЕНИЕ
ЗАПОРОЖСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ
МЕТОДИЧЕСКОЕ ПОСОБИЕ
К ЛАБОРАТОРНИМ РАБОТАМ
ПО КУРСУ
“Архитектура ЭВМ и "Ассемблер”
Для студентов специальностей: «Прикладная математика»;
«Информатика»
Утверждено ученым советом ЗНУ
Протокол № от .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 - файл библиотеки объектных модулей.
Подготовка «рабочего места»
Создайте на указанном преподавателем или лаборантом дисплейного класса диске в корневом каталоге папку с именем «номер_группы». Если методика работы в компьютерном классе предполагает у вас наличие индивидуальной папки, то возможно работать в ней.
Вызовите новое окно «Интернет браузера» по следующей ссылке
Сохраните файлы TASM.zip, a.bat, l.BAT, proba.asm, asm-help.zip, HELP.zip (правая кнопка мышки на имя файла, выбор из меню - „сохранить как...”) в созданной Вами папке «номер_группы»
Разархивируйте сохраненные архивы:
TASM.zip - в корень диска D:
asm-help.zip, HELP.zip - в папку «номер_группы». Будьте внимательны - в указанных папках не должна появляться папка с именем архива, а должен быть записан набор файлов и папок с другими именами)
Вызовите консоль («сеанс MSdos» - command.com или «Командная строка» - CMD). Настройте удобное для Вас разрешение экрана и величину шрифта.
Сделайте папку «номер_группы» текущей (D: <Enter>- смена диска, CD \имя_папки <Enter> - смена текущей директории).
Создайте (или проверьте наличие в Вашей рабочей папке) двух командно - процедурных файлов:
файл 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;
Эти файлы уже есть в Вашей папке, и если Вы разместили систему программирования ассемблера не на диске С:, то их необходимо откорректировать.
Создайте (или проверьте его наличие) файл 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
Выполните компиляцию программы, используя команду
a prob
и ее сборку
l proba.
Изучите и объясните что находится в файлах *.lst, *.map, *.obj?
Какие программы создали эти файлы? Это наиболее удобно выполнить с использованием FAR менеджера.
Выполните программу proba.
Измените программу так, что бы они выводили другой текст - например Ваше имя и фамилия.
Изучите файлы *.lst.
Вызовите и ознакомитесь с «справочными» программами HELP, asm-help программами - справочниками по операционной системе и assembler.
Оформите отчет по проделанной работе используя Microsoft WORD.
Требование к оформлению отчета.
Отчет подготавливается на машинном носителе в формате Microsoft Word. Титульная страница оформляется по обще принятым правилам. На ней в обязательном порядке указывается тема работы. В текст отчета необходимо включить постановку задачи, листинг (снимок экрана, текст файла и т.п.) разработанного файла и результат тестирования.
В отчет включите описание
проделанных шагов работы,
листинги ваших программ и
"Снимки" сеанса командной строки с результатами выполнения программ.
Примечание - все указанные в задании файлы Вы можете найти на странице
Основные контрольные вопросы.
- Что содержит файл исходного модуля?
- что содержит файл объектного модуля?
- что содержит файл загружаемого (абсолютного) модуля?
- что содержит файл листинга?
- какие программы используются для создания выше перечисленных файлов?
- какие системные программы и в какой последовательности используются для получения рабочей программы?
Тема 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.