Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ассемблер.doc
Скачиваний:
2
Добавлен:
22.11.2019
Размер:
152.06 Кб
Скачать

Міністерство освіти і науки, молоді та спорту України

Дніпропетровський коледж ракетно-космічного машинобудування

Дніпропетровського національного університету імені Олеся Гончара

ЗВІТ

з лабораторних робіт

з дисципліни «Системне програмування»

Спеціальність 5.05010201

Група КС-10-1

Виконав Гаращук І. А.

Перевірив Усіченко В. І.

2012

ЗМІСТ

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

Лабораторна робота № 2 6

Лабораторна робота № 3 9

ЛАБОРАТОРНА РОБОТА № 1

Написання найпростіших асемблерних програм

Мета: засвоєння структури асемблер них .exe та .com файлів. Придбання практичних навичок компіляції .asm файлів

Короткі теоретичні відомості

Створення будь-якої асемблерної програми розпочинається з таких дій:

  • створення нової програми

  • редагування вихідного коду

  • асемблювання

  • компоновка

  • виконання програми

Будь-яка асемблерна програма в стандарті IDEAL і не тільки в ньому зазвичай включає в себе заголовок, макровизначення, сегмент даних, сегмент коду, процедури, точки входу та виходу з програми. Практично всі ці складові за винятком заголовка, макровизначень та процедур є обов’язковим. Іноді програма може мати порожній сегмент даних. Область ОП для зберігання даних, що записуються підпрограмами або передаються їм називаються стеком.

Хід роботи

  1. Запускаємо програму CMD.EXE за допомогою команди «Виконати».

  2. В вікні MS-DOS вписуємо команду Edit.

  3. Завантажиться DOS редактор синього кольору в якому ми запускаємо шаблон асемблера для exe – файлів.

  4. Вводимо наступний код:

%TITLE "My first program to asembler "

IDEAL

MODEL small

STACK 256

DATASEG ; Сегмент даних

exCode DB 0

Sentence DB 'Garaschuk Igor','$'

CODESEG ; Сегмент коду

Start:

mov ax, @data ; Встановлення у DS адресу

mov ds, ax ; Сегмент даних

mov ah,09 ; Виклик функції DOS виводу на екран

lea dx,[Sentence] ;

int 21h

Exit:

mov ah, 04Ch ; Функція DOS: вихід з підпрограми

mov al, [exCode] ; Повернення значення коду виходу 

int 21h ; Виклик DOS. зупинка програми

END Start ; Кінець програми/ точка входу

  1. Зберігаємо файл з ім’ям FIRST.ASM і виходимо з редактору Edit.

  2. В вікні MS-DOS вводимо команду TASM та вказуємо шлях до файлу та його ім’я I:\TASM\TASM\FIRST.ASM.

  3. Після виконання цієї команди і якщо не позникає помилок вводимо наступну команду TLINK та ім’я файлу FIRST.

  4. Якщо не з’явиться помилок то можна запускати файл на виконання для цього треба ввести ім’я файлу та натиснути клавішу ENTER

  1. З

    Початкове/кінцеве значення та кількість комірок пам’яті використаних для:

    – сегменту коду

    – сегменту даних

    – стеку

    находимо файл FIRST.MAP відчиняємо його за допомогою редактору тексту:

Start

Stop

Length

Name

Class

00000H

00012H

00013H

_TEXT

CODE

00020H

0002FH

00010H

_DATA

DATA

00030H

0012FH

00100H

STACK

STACK

Program entry point at 0000:0000

Висновок: написавши першу простішу програму на асемблері я навчився виводити повідомлення на екран, більше дізнався про структуру асемблерної програми. Дізнався що, програма-компоновщик створює крім файлу з розширенням .OBJ також формує таблицю реально отриманого розподілу пам’яті з розширенням .MAP в який поміщується інформація про взаємне розташування зібраних сегментів у пам’яті. Цей файл дозволяє контролювати ініціалізацію початкових адресів і кількість комірок пам'яті, використовуваних для зберігання програми і даних в процесорі, а також правильність розташування і з'єднання секцій програми.

ЛАБОРАТОРНА РОБОТА № 2

Організація обміну даними та організація роботи з переривання BIOS/DOS

Мета: придбати навички роботи командами передачі даних та виклику функцій переривання BIOS/DOS

Короткі теоретичні відомості

Функції BIOS чи DOS викликаються за допомогою відповідних програмних переривань. Коли викликано переривання, то виклик тієї чи іншої BIOS/DOS функції визначається станом регістрів загального призначення (РЗП). Отже, підготувавши належним чином необхідні регістри, а потім викликати потрібне переривання, асемблерна програма може забезпечити умови для виконання необхідної функції BIOS/DOS. Тобто асемблер використовує можливості ОС, «примушуючи» її функції працювати в своїх програмах.

Хід роботи

  1. Запускаємо програму cmd.Exe за допомогою команди «Виконати».

  2. В вікні ms-dos вписуємо команду Edit.

  3. Завантажиться dos редактор синього кольору в якому ми запускаємо шаблон асемблера для exe – файлів.

  4. Змінюємо код відповідно:

%TITLE "peremeshenie kursora"

IDEAL

MODEL small

STACK 256

DATASEG

exCode DB 0

;--- Здесь описать другие переменные с помощью DB, DW и т.п.

;--- Здесь описать другие переменные типа EXTRN

CODESEG

;--- Здесь описать все подпрограммы типа EXTRN

Start:

mov ax, @data ;установка в DS адреса

mov ds, ax ;сегмента данных

mov es, ax ;Установка es=ax

mov ah,2h ; Встановлюємо позиціювання курсору

mov bh,0h

mov dh,13h

mov dl,25h

int 10h

mov ah,1h ; Встановлюємо форму курсору

mov ch,0h

int 10h

Exit:

mov ah, 04Ch ;Функция DOS: выход из подпрограммы

mov al, [exCode] ;Возврат значения кода выхода

int 21h ;DВызов DOS.Останов программы

END Start ; Конец программы/точка входа

  1. Зберігаємо файл з ім’ям KURSOR.ASM і виходимо з редактору Edit.

  2. В вікні MS-DOS вводимо команду TASM та вказуємо шлях до файлу та його ім’я I:\TASM\TASM\ KURSOR.ASM.

  3. Після виконання цієї команди і якщо не позникає помилок вводимо наступну команду TLINK та ім’я файлу KURSOR.

  4. Якщо не з’явиться помилок то можна запускати файл на виконання для цього треба ввести ім’я файлу та натиснути клавішу enter

  1. З

    Початкове/кінцеве значення та кількість комірок пам’яті використаних для:

    – сегменту коду

    – сегменту даних

    – стеку

    находимо файл KURSOR.MAP відчиняємо його за допомогою редактору тексту:

Start

Stop

Length

Name

Class

00000H

0001DH

0001EH

_TEXT

CODE

00020H

00020H

00001H

_DATA

DATA

00030H

0012FH

00100H

STACK

STACK

Program entry point at 0000:0000

Висновок: виконавши цю лабораторну роботу я навчився використовувати функції BIOS/DOS за допомогою програмних переривань, зрозумів як переміщувати курсор по екрану та змінювати його форму.

ЛАБОРАТОРНА РОБОТА № 3

Логічні операції в регістрах

Мета: придбати навички роботи командами передачі даних та виклику функцій переривання BIOS/DOS

Короткі теоретичні відомості

Логічні команди призначені для виконання логічних операцій над байтами та словами. Логічні команди поділяються на команди, пов’язані з виконанням основних логічних функцій та команди зрушення.

До першої з цих двох категорій команд відносяться :

  • and [Destination],[Source] логічне І

  • not [Destination] логічне НЕ

  • or [Destination],[Source] логічне ІЛІ

  • xor [Destination],[Source] логічне ІЛІ-НЕ

Серед логічних команд взагалі найвищим пріоритетом користується команда not, вона ж і є найпростішою.

Друга категорія логічних команд представлена командами зрушення. До їх числа належать:

  • shl [destination],[quantity]

  • shr [destination],[quantity]

Вони здійснюють зрушення-ротацію бітів. З цієї групи команд нас будуть цікавити лише команди простих зрушень вправо (shr=ShiftRight) та вліво (shl=ShiftLeft). Зрушення двійкового числа на 1 біт вліво означає його збільшення в 2 рази, а вправо – зменшення в 2 рази.

Хід роботи