Лабораторна робота№1
з системного програмування
на тему:
“Процес асемблювання”
Виконав:
студент групи АП – 30б
Чумаков М. М.
Перевірив:
Межерицький С.Г.
Харків 2002 р.
Тема: "АСЕМБЛЕРИ"
Мета:
Освоїти принципи побудови і функціонування асемблеров і одержати практичні навички розробки програми асемблювання вихідного модуля (файлу), написаного мовою асемблера.
Постановка задачі для лабораторної роботи.
Розробити мовою високого рівня асемблюючу програму, яка формує протокол (файл лістингу) асемблювання вихідного тексту асемблерної програми, поміщеному у вхідному файлі.
Хід виконання роботи.
За допомогою текстового редактора (ncedit.exe, vcedit.exe, qedit.exe) створюємо вихідний файл, що містить фрагмент програми мовою ассмблера відповідно до індивідуального завдання.
Одержуємо розширений лістинг цього фрагмента шляхом набору в командному рядку рядка "tasm /la <ім'я вихідного файлу>".У результаті в поточному каталозі отримали файл із цим же ім’ям, але розширенням ".lst", що містить розширений лістинг нашого вихідного фрагмента.
Розробляємо схему алгоритму рішення задачі.
Складаємо текст програми і налагоджуємо програму так, щоб вона виконувала поставлену задачу.
Вибір перемінних.
Тут розглядаються тільки основні перемінні, котрі являются найбільш основними для даної програми.
Імена перемінних, їхній тип і функціональне призначення приведені в таблиці 7.
Таблиця 7.
________________________________________________________________________
ім'я тип призначення
________________________________________________________________________
*mnemonics[] char Покажчик на елемент масиву
mnemonics.Цей масив містить
найменування команд мови асем-
блера, що зустрічаються у вихідному
тексті.
*directives[] char - -//- -
*registers[] char - -//- -
opcode int індекс для масиву mnemonics
op1num int -і//-і directives і registers
op2num int -і//-і registers
*mnem[] char Покажчик на елемент масиву,
утримуючого об'єктні коду команд
cop1[] char -і//-і першого операнду
команди
cop2[] char -і//-і другого операнду
команди
*F,*F1 file Покажчики на вихідний файл і
файл розширеного лістингу
________________________________________________________________________
Опис структури програми.
Імена функцій, їхній тип і призначення приведені в таблиці 8.
Таблиця 8.
________________________________________________________________________
ім'я тип призначення
________________________________________________________________________
strtoi int Порівняння виділеної лексеми
з десятковим числом.У випадку
позитивного результату повертає
значення 0.
strupcase void Перетворення рядкових символів
у прописні.
strcomp char Порівняння двох рядків.
*parse char Виділення лексеми з рядка.
findstr int Пошук рядка у масиві рядків.
У випадку присутності повертає
її індекс у масиві,у противному
випадку:-1.
findsym int -і- у таблиці символів -і-
main void Головна програма.
________________________________________________________________________
Результатом виконання програми є файл "test.lst"
1 0000 DATA SEGMENT PARA
2 0000 0022 AS DW 34
3 0002 38 K DB 56
4 0003 11B8 W DW 4536
5 0005 00 M DB 0
6 0006 0057 DFGHA DW 87
7 0008 DATA ENDS
8 0000 CODE SEGMENT;
9 0000 42 INC DX
10 0001 8B 16 0003r MOV AX,W
11 0003 3D CF CMP CX,DI
12 0005 00 A DB 0
13 0006 8B 16 0000r MOV BX,AS
14 LAB:
15 0008 3D D8 CMP BX,AX
16 000A 8B 4C MOV DX,76
17 ZN:
18 000C 4A DEC DX
19 000D 8B D9 MOV BX,CX
20 000F 8B 10 MOV AX,16
21 0011 3D C3 CMP AX,BX
22 0013 CODE ENDS
23 END
===================table of segment=========================
DATA 0008
CODE 0013
====================symbol table=============================
AS WORD DS:0000
K BYTE DS:0002
W WORD DS:0003
M BYTE DS:0005
DFGHA WORD DS:0006
A BYTE CS:0005
LAB NEAR CS:0008
ZN NEAR CS:000C
Висновки з проробленої роботи.
У процесі лабораторної роботи були вивчені принципи асемблювання програм, а також методи розробки асемблерів. Був розглянен двохпроходовий асемблер та основні дії кожнго проходу.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.