Порядок виконання роботи

Для виконання завдання №1 необхідно вибрати свій варіант із табл. 3.3 та записати тільки число X зі знаками.

 

Таблиця 3.3 – Варіанти завдань

Завдання Завдання Завдання
±X ±Y ±X ±Y ±X ±Y

Наприклад, для 1-го варіанта цілі числа будуть такі:

+ 200 – 200

Написати програму з використанням всіх директив визначення даних. Правильність одержаних результатів необхідно проконтролювати. Як приклад, напишемо програму з ім’ям Lab1.asm (лістинг 3.3).

Лістинг 3.3.Програма подання цілих чисел:

.386 ; директива визначення команд мікропроцесора

.MODEL flat ; завдання лінійної моделі пам’яті

.DATA ; початок сегмента даних

; цілі числа в пам’яті розміром у байт (8 розрядів)

db 80 ;

db -80 ;

byte 80 ;

byte -80 ;

sbyte 80 ;

sbyte -80 ;

; цілі числа в пам’яті розміром у слово (16 розрядів)

dw 80 ;

dw -80 ;

word 80 ;

word -80 ;

sword 80 ;

sword -80 ;

; цілі числа в пам’яті розміром у подвійне слово (32 розряди)

dd 80 ;

dd -80 ;

dword 80 ;

dword -80 ;

sdword 80 ;

sdword -80 ;

; цілі числа в пам’яті розміром у 48 розрядів

fword 80 ;

fword -80 ;

; цілі числа в пам’яті розміром у 64 розряди

dq 80 ;

dq -80 ;

qword 80 ;

qword -80 ;

; цілі числа в пам’яті розміром у 80 розрядів

dt 80 ;

dt -80 ;

tbyte 80 ;

tbyte -80 ;

.CODE ; початок сегмента команд

_start: ; мітка початку основного тіла програми

ret ; вихід із ОС Windows

end _start ; закінчення програми з ім’ям _start

 

Для одержання лістингу програми в асемблері MASM32 (опція Fl – file) необхідно викликати файловий менеджер FAR, відкрити

C:masm32bin

та поставити курсор на файл ml.exe. Натиснути Ctrl + <Enter>. В результаті цього в командний рядок буде скопійовано:

C:masm32bin> ml.exe

Потім необхідно добрати додаткові опції компілятора та натиснути <Enter>:

Ml.exe /c /coff /Fl Lab1.asm <Enter>

 

Командний рядок у програмі FAR наведено на рис. 3.3.

 
 


Опції компілятора MASM, які використовуються в цьому командному рядку, означають:

с – компілювати без компонування;

сoff – генерувати об’єктний файл у форматі COFF.

Файловий менеджер FAR зручний тим, що дозволяє контролювати виниклі помилки при трансляції. Для видимості результату трансляції необхідно натиснути клавіші Ctrl + F1 або Ctrl + F2. Повторне натиснення цих клавіш поверне зображення вікон файлового менеджеру в початковий стан.

 

Лістинг програми Lab1.asm може мати такий вигляд:

Microsoft (R) Macro Assembler Version 6.14.8444 09/03/08 13:44:50

Lab1.asm Page 1 - 1

.386 ; директива визначення команд мікропроцесора

.MODEL flat ; завдання лінійної моделі пам’яті

00000000 .DATA ; початок сегмента даних

; цілі числа в пам’яті розміром у байт (8 розрядів)

00000000 50 db 80 ;

00000001 B0 db -80 ;

00000002 50 byte 80 ;

00000003 B0 byte -80 ;

00000004 50 sbyte 80 ;

00000005 B0 sbyte -80 ;

; цілі числа в пам’яті розміром у слово (16 розрядів)

00000006 0050 dw 80 ;

00000008 FFB0 dw -80 ;

0000000A 0050 word 80 ;

0000000C FFB0 word -80 ;

0000000E 0050 sword 80 ;

00000010 FFB0 sword -80 ;

; цілі числа в пам’яті розміром у подвійне слово (32 розряди)

00000012 00000050 dd 80 ;

00000016 FFFFFFB0 dd -80 ;

0000001A 00000050 dword 80 ;

0000001E FFFFFFB0 dword -80 ;

00000022 00000050 sdword 80 ;

00000026 FFFFFFB0 sdword -80 ;

; цілі числа в пам’яті розміром у 48 розрядів

0000002A 000000000050 fword 80 ;

00000030 FFFFFFFFFFB0 fword -80 ;

; цілі числа в пам’яті розміром у 64 розряди

00000036 0000000000000050 dq 80 ;

0000003E FFFFFFFFFFFFFFB0 dq -80 ;

00000046 0000000000000050 qword 80 ;

0000004E FFFFFFFFFFFFFFB0 qword -80 ;

; цілі числа в пам’яті розміром у 80 розрядів

00000056 00000000000000000050 dt 80 ;

00000060 FFFFFFFFFFFFFFFFFFB0 dt -80 ;

0000006A 00000000000000000050 tbyte 80 ;

00000074 FFFFFFFFFFFFFFFFFFB0 tbyte -80 ;

00000000 .CODE ; початок сегмента команд

00000000 _start: ; мітка початку основного тіла програми

00000000 C3 ret ; вихід із ОС Windows

end _start ;

 

Microsoft (R) Macro Assembler Version 6.14.8444 09/03/08 13:44:50

Lab1.asm Symbols 2 - 1

Segments and Groups:

N a m e Size Length Align Combine Class

FLAT . . . . . . . . . .GROUP

_DATA . . . . . . . .32 Bit 0000007E DWord Public ‘DATA’

_TEXT . . . . . . . . 32 Bit 00000001 DWord Public ‘CODE’

Symbols:

N a m e Type Value Attr

@CodeSize . . . . . . . . . . Number 00000000h

@DataSize . . . . . . . . . . Number 00000000h

@Interface . . . . . . . . . . Number 00000000h

@Model . . . . . . . . . . . . Number 00000007h

@code . . . . . . . . . . . . Text _TEXT

@data . . . . . . . . . . . . Text FLAT

@fardata? . . . . . . . . . . Text FLAT

@fardata . . . . . . . . . . . Text FLAT

@stack . . . . . . . . . . . . Text FLAT

_start . . . . . . . . . . . . . L Near 00000000 _TEXT Public

0 Warnings

0 Errors

 

Порядок розміщення цілих чисел у пам’яті необхідно також проконтролювати за допомогою налагоджувача OllyDbg. Для цього спочатку слід одержати .exe-файл за допомогою команди