Лабораторна робота №1
Приображенський А.А.
Мета: Навчитися використовувати можливості системних програм, що обслуговують програми на асемблері.
Індивідуальне завдання: Використовуючи текстовий редактор, створити файл із вихідним модулем на асемблері. Викликати на виконання системні програми masm, link і cref, приймаючи в увагу повідомлення цих програм після завершення їхньої роботи. Вивчити структуру всіх створених текстових файлів і зафіксувати ці зведення в звіті. Виконати створений завантажувальний модуль за посередництвом програми debug. Представити текст програми на асемблері (обов'язково з коментарями) і стосовно до неї інші текстові файли (.lst, .ref, .map).
Текст програми ( laba1.asm ):
data segment
s1 db 'Program working correctly', 10, 13, '$'
data ends
code segment
assume cs: code, ds: data
start:
mov ax, data ; Установити регістр сегмента
mov ds, ax ; даних на сегмент дані програми
mov ah, 9h ; Висновок
mov dx, offset s1 ; трасуючого повідомлення
int 21h ; про завершення програми
mov ah, 4ch ; Вихід
int 21h ; у DOS
code ends
end start
Хід роботи:
1. Використовуючи стандартний текстової редактор edit.exe, створюю вихідний модуль на асемблері. У наслідку одержую вихідний файл laba1.asm .
2. Викликаю на виконання системну програму masm.exe (c:\olimp\masm\masm.exe laba1.asm). Яка не знайшовши помилок створює три файли з різними розширеннями: laba2.lst (лістинг), laba2.obj (об'єктний модуль), laba2.crf (файл перехресних посилань). Виконання masm.exe:
Microsoft (R) Macro Assembler Version 5.10
Copyright (C) Microsoft Corp 1981, 1988. All rights reserved.
Object filename [laba1.OBJ]:
Source listing [NUL.LST]: laba1.lst
Cross-reference [NUL.CRF]: laba1.crf
47324 + 406720 Bytes symbol space free
0 Warning Errors
0 Severe Errors
3. Викликаю на виконання системну програму cref.exe (c:\olimp\masm\cref.exe laba1.crf). Яка створює, на відміну від нечитабельного laba1.crf, читабельний текстової файл laba1.ref.
4. Викликаю на виконання системну програму link.exe (c:\olimp\masm\link.exe laba1.obj). Яка, видавши повідомлення “Warning: no stack segment”, створює ще два файли laba1.exe ( модуль, що власне виконується,) і laba1.map (текстової файл, у якому містяться зведення про структурні особливості вихідного модуля) і вхідний файл .lib (бібліотека об'єктних модулів). У даній лабораторній роботі файл .lib використовувати не будемо, тобто повідомлення “Warning: no stack segment” вивелося саме через це. Виконання link.exe:
Microsoft (R) 8086 Object Linker Version 3.05
Copyright (C) Microsoft Corp 1983, 1984, 1985. All rights reserved.
Run File [LABA1.EXE]:
List File [NUL.MAP]: laba1.map
Libraries [.LIB]:
Warning: no stack segment
5. Викликаю на покрокове виконання(команда t) системну програму debug.exe (c:\olimp\masm\debug.exe laba1.exe) при цьому просліджую стан усіх регістрів і прапорів:
-t
AX=15CB BX=0000 CX=0030 DX=0000 SP=0000 BP=0000 SI=0000 DI=0000
DS=15BB ES=15BB SS=15CB CS=15CD IP=0003 NV UP EI PL NZ NA PO NC
15CD:0003 8ED8 MOV DS,AX
-t
AX=15CB BX=0000 CX=0030 DX=0000 SP=0000 BP=0000 SI=0000 DI=0000
DS=15CB ES=15BB SS=15CB CS=15CD IP=0005 NV UP EI PL NZ NA PO NC
15CD:0005 B409 MOV AH,09
-t
AX=09CB BX=0000 CX=0030 DX=0000 SP=0000 BP=0000 SI=0000 DI=0000
DS=15CB ES=15BB SS=15CB CS=15CD IP=0007 NV UP EI PL NZ NA PO NC
15CD:0007 BA0000 MOV DX,0000
-t
AX=09CB BX=0000 CX=0030 DX=0000 SP=0000 BP=0000 SI=0000 DI=0000
DS=15CB ES=15BB SS=15CB CS=15CD IP=000A NV UP EI PL NZ NA PO NC
15CD:000A CD21 INT 21
-p
Program working correctly
X=0924 BX=0000 CX=0030 DX=0000 SP=0000 BP=0000 SI=0000 DI=0000
S=15CB ES=15BB SS=15CB CS=15CD IP=000C NV UP EI PL NZ NA PO NC
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.