У нас: 141825 рефератів
Щойно додані Реферати Тор 100
Скористайтеся пошуком, наприклад Реферат        Грубий пошук Точний пошук
Вхід в абонемент


файлу

lea dx,cs:sym ; в dx – адрес буферу, що містить інформацію для

; запису

mov cx,01h ; в cx – кількість байт, що мають бути записані

int 21h ;переривання

mov ah,3eh ; закриття файлу

mov bx,cs:des ; в bx – дескриптор

int 21h ;переривання

;===========================================

;повертаєм значення регістрів із стеку:

pop es ;значення регістру es

;значення регістру ds

popa ;значення всіх регістрів оперативного призначення

iret ; передаємо управління перерваній програмі

real_start:

push es ;зберігаємо значення регістра es

mov ax,3517h

;в AH – 35h (номер функції отримання вектора)

;в AL - 17 h (номер необхідного перервання)

int 21h ;переривання

mov old_int17_cs,es ;зберігаємо сегмент в змінній old_int8_cs

mov old_int17_ip,bx ;зберігаємо зміщення в змінній old_int8_ ip

lea dx,interrupt ;DS:DX – нова підпрограма обробки переривання

mov ax,2517h

; AH - 25h номер функції установки вектора

; AL – 17h номер необхідного переривання

int 21h ;переривання

pop es ;відновлюєм es

;================================

;створюєм файл із іменем "coded.txt"

mov ah,3ch ; в ah - 3c -номер функції створення файлу

lea dx,filename ; в dx - адрес строки з іменем файлу

xor cx,cx ; в сх - атрибут файлу-(0)

int 21h ;переривання

mov des,ax ;зберігаємо дескриптор файлу в des

 

 

lea dx,real_start ;зміщення команди, починаючи з якої пам'ять буде

; звільнено

int 27h ;передаємо управління DOS

ends

end start

ОПИС РОБОТИ

Програма складається з двох частин : резидентної, в якій виконуються безпосередньо завдання роботи і загрузчика, який заносить резидентну частину в пам’ять.

На початку програми вибирається тип процесора і вказується номер переривання за яким слідкуватиме програма. Виконання програми починається із мітки start.

Резидентна частина починається із задання функції переривання

int 17h, яка здійснює перекодування символів у близькі по звучанню латинські літери.

Далі відбувається перевірка перекодування символів Для цього користуємось командою порівняння cmp, за допомогою якої зрівнюєм значення регістрів у яких містяться поточні значення символів. Якщо символи співпадають - продовжуєм перевірку, поки всі символи не будуть перевірені. За допомогою команди mov.

Наступною йде команда витягнення всіх основних регістрів зі стеку - pusha. Також задаються змінні для тимчасового збереження старої адреси вектора .

Загрузчик починається від мітки real start.

Спочатку отримуємо адресу попереднього вектора переривання Pnr , далі зберігаєм старші і молодші 16 біт адреси у відповідні змінні old_cs та old_ip.

Завершуємо програму установкою нової адреси вектора переривання, присвоївши старшому байту регістру АХ змінну dec.

ВИСНОВКИ

В результаті виконання курсового проектування було написано резидентну програму, що забезпечує перекодування символів у близькі по звучанню латинські літери. Наведено блок-схему програми, подано її опис функціонування. Текст резидентної частини програми і загрузчика написано на мові Assembler, з докладним описом використаних функції та ремарками.

ПЕРЕЛІК ВИКОРИСТАНИХ ЛІТЕРАТУРНИХ ДЖЕРЕЛ

1. Зубков СВ. Assembler для DOS, Windows и UNIX -3-е изд., стер. -К Пресс; СПб.гПитер, 2005.-608с.

2. Фролов А.В, Фролов Г.В. Апаратное обеспечение IBM PC: В 2-х ч. Часть 1 - 2-е изд., стер. - М.: „ДИАЛОГ-МИФИ”, 1992.-208 с.

3. Велихов А.В. Макроассемблер: Создание и отладка программ.- М-:Майор, 2001.-192с.

4. Системное программное обеспечение. Учебник для вузов/ А. Ю. Молчанов.- СПб.:Питер, 2ООЗ.-396с.


Сторінки: 1 2