Міністерство освіти і науки України
НТУУ «Київський політехнічний інститут ім. Ігоря Сікорського»
Кафедра АПЕПС
Лабораторна робота №2
з дисципліни «Операційні системи»
«Технологія роботи з системними засобами при створенні програм»
Гр. ТР-15
Турлака Сергія
Перевірила
д.т.н., проф. Левченко Л.О.
КИЇВ 2022
Мета роботи:
Ознайомитися з технологією роботи створення асемблерної програми.
Порядок роботи:
1. Створити код асемблерної програми в середовищі текстового редактора Блокнот.
2. Виконати трансляцію створеної програми.
3. Проаналізувати лістинг програми, визначити поля лістингу, віднайти відповідні сегменти програми, виправити помилки. У разі виявлення помилок повторити трансляцію програми та отримати об’єктний модуль програми.
4. Викликати компонувальника та отримати виконуваний модуль програми.
5. Запустити виконуваний модуль на виконання.
6. Скопіювати лістинг трансляції та результат роботи програми у командному рядку у лабораторну роботу.
7. Результати надати викладачу
Теоретична частина
Асемблери зазвичай виконують два або більше проходів по тексту програмипри трансляції. При першому проході асемблер проглядає усю вхіднупрограму та створює таблицю символів, яка містить імена та мітки, щозустрічаються в програмі. При другому проході асемблер використовуєтаблицю символів, в якій відома довжина кожної команди та її відноснерозташування, а також формує об’єктний код для кожної інструкції. Післяцього асемблер створює об’єктний файл (*.obj), файл лістингу (*.lst) та файлперехресних посилань (*.crt).
Процес підготовки та відладки програми на мові Асемблер включає такі етапи:підготовка у текстовому редакторі Notepad файлу за шаблоном *.asm, йоготрансляцію, компоновку, відладку програми за допомогою інтерактивноговідладчика.
Трансляція вхідного тексту програми полягає у перетворенні речень вхідноїмови у коди машинних команд та виконується за допомогою програми TASMВ результаті трансляції створюється утворюється об’єктний файл зрозширенням *.obj. Процес підготовки програми до виконання має такийвигляд:
Для виконання трансляції використовується пакет TASM.EXE (програмаасемблер). В командному рядку ця програма запускається наступним чином:TASM.EXE [ключі] ім’я_вхідного_файлу [, ім’я_об’єктного_файла][, ім’я_файла_лістингу] [, ім’я_файла_перехресних_посилань].
Таким чином, результатом роботи транслятора є створення трьох модулів:*.lst (лістингу), *.crf (таблиці перехресних посилань: таблиці символічнихмен змінних, які використовуються в програмі, та таблиці відносних посилань, вякій вказується у якому операторі визначено ім’я і де зустрічається), *.obj(об’єктного), (Замість * - ім’я_вхідного_файлу).
Запуск компоновщика (редактора зв’язку) здійснюється в командному рядку:TLINK [ключі] список об’єктних модулів [, ім’я завантажувального модуля]Ключі можна подивитися просто запустивши tlink без параметрів.При запуску компоновщика треба використовувати два ключа:
/х – не створювати файл з розширенням *.map (подавляється формування файлулістингу компоновки, в якому відображається карта завантаження, без цьогофайла можна обійтись),
/v – передає у завантажувальний файл символьну інформацію, яка дозволяєвідладчику TD виводити на екран повний текст вхідної програми, включаючимітки, коментарі та ін.
Результат роботи
Файл *.asm
/
Файл лістингу
Turbo Assembler Version 3.1 02/22/22 12:57:44 Page 1
LAB2.ASM
1 0000 code segment
2 assume CS:code, DS:data
3
4 0000 begin:
5 0000 B8 0000s mov AX, data
6 0003 8E D8 mov DS, AX
7 0005 B4 09 mov AH, 09h
8 0007 BA 0000r mov DX, offset mesg
9 000A CD 21 int 21h
10 000C B4 4C mov AH, 4Ch
11 000E B0 00 mov Al, 0
12 0010 CD 21 int 21h
13 0012 code ends
14
15 0000 data segment
16 0000 50 52 4F 47 52 41 4D+ mesg db "PROGRAM IS RUNNED $"
17 20 49 53 20 52 55 4E+
18 4E 45 44 20 24
19 0013 data ends
20
21 0000 stk segment stack
22 0000 0100*(00) db 256 dup (0)
23 0100 stk ends
24 end begin
_Turbo Assembler Version 3.1 02/22/22 12:57:44 Page 2
Symbol Table
Symbol Name Type Value
??DATE Text "02/22/22"
??FILENAME Text "LAB2 "
??TIME Text "12:57:44"
??VERSION Number 030A
@CPU Text 0101H
@CURSEG Text STK
@FILENAME Text LAB2
@WORDSIZE Text 2
BEGIN Near CODE:0000
MESG Byte DATA:0000
Groups & Segments Bit Size Align Combine Class
CODE 16 0012 Para none
DATA 16 0013 Para none
STK 16 0100 Para Stack
_
Скомпанований та виконаний файл EXE
/