Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Метод.Указания к Лаб.Раб по АВС.doc
Скачиваний:
9
Добавлен:
05.03.2016
Размер:
2.2 Mб
Скачать

Министерство образования и науки Украины

Приазовский государственный технический университет

Факультет информационных технологий

Кафедра информатики

Долгая М.В.

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

Архитектура вычислительных систем ”

для студентов специальности 6.040302 «Информатика»

Мариуполь, 2010

УДК 681.3.06(083)

Методические указания к выполнению лабораторных работ по дисциплине "Архитектура вычислительных систем (для студентов специальности 6.040302 – Информатика) / Составила Долгая М.В. - Мариуполь: ПГТУ, 2010 - с.

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

Рецензенты: ст.преподаватель Володин С.И.,

ст.преподаватель Мальцева А.Ф.

Составитель ст. преподаватель Долгая М.В.

Ответственный

за выпуск доцент Чичкарев Е.А.

Утверждено на заседании кафедры информатики

Протокол №__6__ от “_22_” ___декабря___2009г.

Рекомендовано учебно-методической комиссией факультета информационных технологий

Протокол №__4_ от “__6_” ____января____2010г.

График проведения

лабораторных занятий

и перечень лабораторных работ

по дисциплине

«Архитектура вычислительных систем»

( в соответствии с рабочей программой дисциплины)

занятий

Тема

Кол-во часов

1

2

3

1

Входной контроль

2

2,3

Лабораторная работа №1 Этапы компьютерной реализации программы на Assembler-е.

4

4

Лабораторная работа №2 Изучение структур заголовка .exe файла и префикса программного сегмента (PSP).

2

5,6

Лабораторная работа №3 Изучение директив декларации простых данных и способов адресации.

4

7,8

Лабораторная работа №4 Изучение команд пересылки данных

4

9

Аттестация

2

10,11

Лабораторная работа №5 Работа с командами двоичной арифметики

4

12-14

Лабораторная работа №6 Работа с цепочечными командами

6

15-17

Лабораторная работа №7 Обработка одномерных и двухмерных массивов в ассемблер-программах

6

18

Зачетное занятие

2

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

Тема: этапы компьютерной реализации программы на Assembler-е.

Цель:

Научиться:

  • выполнять трансляцию (ассемблирование), компоновку (линкование) и пошаговое выполнение ассемблер-программы в среде Турбоотладчика (td.exe) с одновременным анализом состояния регистров и памяти;

  • читать листинг ассемблер-программы.

Ознакомиться со структурой среды Турбоотладчика.

Общие сведения

Необходимые термины

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

Компиляция — преобразование программой-компиляторомисходного текста какой-либо программы, написанного на языке программирования высокого уровня, в язык, близкий к машинному, или в объектный код.

Трансляция — преобразование программы, представленной на одном из языков программирования, в программу на другом языке и, в определённом смысле, равносильную первой. Выполняется транслятором.Транслятор — программа, которая принимает на вход программу на одном языке (он в этом случае называетсяисходный язык, а программа — исходный код), и преобразует её в программу, написанную на другом языке (соответственно, целевой язык и объектный код).

Интерпретация -вид трансляции, неявный пооператорный (покомандный) переводисходного текстанаязыке высокого уровняв исполняемый код наязыке низкого уровняво время её исполнения.

Ассемблирование – процесс компиляции программы на языке ассемблера в объектный код.

Существует одно-, двух- и многопроходное ассемблирование.

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

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

Если адресное поле имеет переменную длину, определение адреса метки может привести к изменению длины ссылающегося на нее кода, поэтому на таких архитектурах оказывается целесообразным трех- и более, то есть многопроходное ассемблирование.

Компоновка – сборка программы из модулей или связывание программных модулей в один исполняемый модуль. Компоновщик (также редактор связей, англ. linker, link editor) — программа, которая производит компоновку, принимая на вход один или несколько объектных модулей и формируя по ним исполняемый модуль. Действие компоновки называют еще линкованием.

Исполняемый модуль или .exe – файл – (также исполняемый файл, от англ. executable file) - разновидность файла, содержимое которого является готовой к непосредственному исполнению компьютерной программой.

Отладка — этап разработки компьютерной программы, на котором обнаруживают, локализуют и устраняют ошибки. Есть различные подходы и средства отладки; в качестве основного средства используются отладчики, которые включают в себя пользовательский интерфейс для пошагового выполнения программы: оператор за оператором, функция за функцией, с остановками на некоторых строках исходного кода или при достижении определённого условия.

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

Жизненный цикл программы – время существования программного продукта от принятия решения о его проектировании до полного изъятия из пользования. В жизненный цикл программного продукта входят и этапы компьютерной реализации.

Этапы компьютерной реализации программы на языке Assembler

Реализация программ на языке ассемблер состоит из 4-х этапов (рис.1.1):

  • набора исходного текста программы;

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

  • компоновки программы;

  • отладки исполняемого файла с помощью турбоотладчика.

На рисунке 1.1. показаны программные продукты, с помощью которых мы выполняем реализацию ассемблер- программы. Это: текстовый редактор, Assembler, Linker и Turbo Debugger (Турбоотладчик). Блоки прямоугольной формы на рис.1.1 отображают действия, выполняемые на разных этапах реализации программы с помощью соответствующих программных продуктов (текстовый редактор – создание или редактирование текста программы, Assembler – ассемблирование и т.д.). На выходе действий изображены файлы, получаемые в результате выполнения действия. Причем, выход в виде сплошной линии со стрелкой указывает на основной (целевой) файл данного действия (prog.asm, prog.obj и prog.exe), а выход обозначенный пунктирной линией со стрелкой – вспомогательные файлы (prog.lst, prog.crf и prog.map). Основные файлы передаются далее для обработки на следующем этапе реализации программы.

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

Рисунок 1.1 – Этапы компьютерной реализации

программы на Assembler-е

Для выполнения лабораторных работ удобнее всего использовать Far Manager. При работе Вы открываете Far Manager на весь экран и делаете активным каталог TASM, который содержит необходимые программы и библиотеки для работы на ассемблере. Вот перечень необходимого содержимого каталога TASM:

1) Основные файлы:

  • Tasm.exe – турбоассемблер;

  • Tlink.exe – компоновщик (линкер);

  • Td.exe – тубоотладчик;

2) Файлы необходимых библиотек:

  • Tasm2msg.exe;

  • Dmiload.exe;

  • Dmimem.dll.

Ниже, в качестве напоминания, приведены «горячие» клавиши и клавишные сочетания, используемые в Far Manager, которые понадобятся Вам для организации быстрой работы:

Alt + Enter – развернуть окно Far Manager на весь экран;

Tab – переключение между левой и правой панелями;

Alt + F1 – вывод списка носителей в левой панели;

Alt + F2 – вывод списка носителей в правой панели;

Shift + F4 – открытие окна встроенного текстового редактора для создания нового текста;

F4 – редактирование текста из файла, имя которого выбрано в текущей панели;

F2 – сохранение текста из окна текстового редактора в файле на диске (внутри текстового редактора);

Ctrl + Enter – копирование имени файла, выбранного в текущей панели в командную строку;

Ctrl + E – вызов отображения в командной строке выполненных ранее команд.

Нажатием клавиш Shift+F4 активизируется встроенный редактор текста для создания нового текстового файла. Имя файла, которое вводится в строке ввода диалогового окна, может содержать символы латинского алфавита (не кириллицы), символ подчеркивания и цифры. Расширение имени файла обязательно должно быть - .asm. Ниже приведен исходный текст первой программы, который необходимо будет набрать в открывшемся окне редактора.

; Исходный текст программы

; Сегмент данных

Data SEGMENT

text DB 'Привет всем ВТ !!!'

textlen EQU $ - text

Data ENDS

; Сегмент кода программы

Code SEGMENT

ASSUME DS:Data, CS:Code, ES:Data, SS:Stack1

Start: mov AX, Data

mov DS, AX

; Изменение цвета экрана

mov AH,06h ; Функция инициализации окна

mov AL,0 ; Не прокручивать

mov BH,30h ; Бирюзовый фон

mov CH, 0 ; Y - левый верхний

mov CL, 0 ; X - левый верхний

mov DH, 24 ; Y - правый нижний

mov DL, 79 ; X - правый нижний

int 10h

; Нарисуем пустое окно

mov AH, 06h

mov AL, 0

mov BH,14h

mov CH, 10

mov CL, 28

mov DH, 14

mov DL, 51

int 10h

; Выведем в окно текст

mov AX, seg text ; настройка регистра ES

mov ES,AX ; на адрес сегмента данных

mov AH,13h ; функция вывода строки

mov AL, 0 ; задание режима

mov BH,0 ; страница

mov BL,14h ; атрибуты символов строки

mov CX,textlen ; длина строки

mov DH, 12 ; строка

mov DL, 30 ; столбец

mov BP, offset text ; адрес строки

int 10h

; Завершение программы

mov AH, 4ch

int 21h

Code ENDS

; Сегмент стека

Stack1 SEGMENT 'Stack'

DB 128 dup ( 0 )

Stack1 ENDS

END Start ; Точка входа в программу

После набора исходного текста программы и сохранения его в файле, допустим, с именем prog.asm, выполняется ассемблирование исходного текста с помощью программы Tasm.exe. Эта программа создает объектный файл prog.obj. Кроме того, мы можем задать при ассемблировании создание файла листинга программы prog.lst. Листинг программы позволяет проанализировать структуру программы, шестнадцатеричные значения адресов смещения внутри программных сегментов, а также сообщения о синтаксических ошибках, которые размещаются после ошибочных строк. Ниже приведен листинг программы prog.asm.

Turbo Assembler Version 3.2 23/02/06 15:49:44 Page 1 prog.asm

1 ; Сегмент данных

2 0000 Data SEGMENT

3 0000 8F E0 A8 A2 A5 E2 20+ text DB 'Привет всем ВТ !!!'

4 A2 E1 A5 AC 20 82 92+

5 20 21 21 21

6 =0012 textlen EQU $ - text

7 0012 Data ENDS

8 ; Сегмент кода

9 0000 Code SEGMENT

10 ASSUME DS:Data,CS:Code,ES:Data,SS:Stack1

11 0000 B8 0000 Start: mov AX, Data

12 0003 8E D8 mov DS, AX

13 ; Изменение цвета экрана

14 0005 B4 06 mov AH,06h ;Функция инициализации окна

15 0007 B0 00 mov AL,0 ; Не прокручивать

16 0009 B7 30 mov BH,30h ; Бирюзовый фон

17 000B B5 00 mov CH, 0 ; Y - левый верхний

18 000D B1 00 mov CL, 0 ; X - левый верхний

19 000F B6 18 mov DH, 24 ; Y - правый нижний

20 0011 B2 4F mov DL, 79 ; X - правый нижний

21 0013 CD 10 int 10h

22 ; Нарисуем пустое окно

23 0015 B4 06 mov AH, 06h

24 0017 B0 00 mov AL, 0

25 0019 B7 14 mov BH,14h

26 001B B5 0A mov CH, 10

27 001D B1 1C mov CL, 28

28 001F B6 0E mov DH, 14

29 0021 B2 33 mov DL, 51

30 0023 CD 10 int 10h

31 ; Выведем в окно текст

32 0025 B8 0000s mov AX, seg text ;настройка регистра ES

33 0028 8E C0 mov ES,AX ; на адрес сегмента данных

34 002A B4 13 mov AH,13h ; функция вывода строки

35 002C B0 00 mov AL, 0 ; задание режима

36 002E B6 0C mov DH, 12 ; строка

37 0030 B2 1E mov DL, 30 ; столбец

38 0032 BD 0000r mov BP, offset text ; адрес строки

39 0035 CD 10 int 10h

40 ; Завершение программы

41 0037 B4 4C mov AH, 4ch

42 0039 CD 21 int 21h

43 003B Code ENDS

44 ; Сегмент стека

45 0000 Stack1 SEGMENT 'Stack'

46 0000 80*(00) DB 128 dup ( 0 )

47 0080 Stack1 ENDS

48 END Start ; Точка входа в программу

Turbo Assembler Version 3.2 23/02/06 15:49:44 Page 2

Symbol Table

Symbol Name Type Value

??DATE Text "23/02/06"

??FILENAME Text "prog"

??TIME Text "15:49:44"

??VERSION Number 0314

@CPU Text 0101H

@CURSEG Text STACK1

@FILENAME Text MY_FIRST

@WORDSIZE Text 2

START Near CODE:0000

TEXT Byte DATA:0000

TEXTLEN Number 0012

Groups & Segments Bit Size Align Combine Class

CODE 16 003B Para none

DATA 16 0012 Para none

STACK1 16 0080 Para none STACK

Листинг программы состоит из двух частей – собственно листинга и дополнительной информации, содержащей таблицу символов и описание групп и сегментов.

Листинг имеет следующую структуру (см.рис.1.2):

  • первая область - номера строк программы (включая комментарии);

  • вторая область - относительные адреса внутри сегментов в шестнадцатеричном формате;

  • третья область представляет собой группу данных – шестнадцатеричные коды данных в сегменте данных и шестнадцатеричные коды команд в кодовом сегменте;

  • четвертая область – текст программы c комментариями.

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

Рисунок 1.2 – Структура листинга программы

программы - тип и значение. Для сегментов и групп (если одноименные сегменты объединены в группы): разрядность сегмента (Bit), размер сегмента (Size), способ выравнивания сегментов внутри .exe файла (Align), объединение одноименных сегментов (Combine) и класс сегмента (Class).

После получения файла prog.obj выполняется его линкование (или компоновка) при помощи программы tlink.exe. В результате формируется файл prog.exe.

Для анализа работы программы по шагам этот файл запускаем в турбоотладчике - td.exe (см.. Приложение А).

Ниже приведен набор самых необходимых команд для работы в td.exe и соответствующие им «горячие» клавиши:

  • вход в главное меню – F10;

  • открытие файла – File/Open;

  • изменение размера окна – F5;

  • переключение между открытыми окнами (например, программы и дампа памяти) – F6;

открытие информационного окна дампа памяти – View/Dump

  • или F10 - V - D;

  • выполнение программы по шагам без входа в процедуры (процедура выполняется как одна команда) – Run/Step Over или F8;

  • выполнение программы по шагам со входом в процедуры (процедуры выполняются также по шагам) Run/Trace into или F7;

  • просмотр окна вывода (если в программе выполняется вывод данных) – Alt + F5 (возвращение к окну Турбоотладчика – Esc);

  • выход из td.exe -Alt+X.