Главная Случайная страница


Полезное:

Как сделать разговор полезным и приятным Как сделать объемную звезду своими руками Как сделать то, что делать не хочется? Как сделать погремушку Как сделать так чтобы женщины сами знакомились с вами Как сделать идею коммерческой Как сделать хорошую растяжку ног? Как сделать наш разум здоровым? Как сделать, чтобы люди обманывали меньше Вопрос 4. Как сделать так, чтобы вас уважали и ценили? Как сделать лучше себе и другим людям Как сделать свидание интересным?


Категории:

АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника






Завдання на роботу. 1 Написати програму на Turbo Assembler для виконання завдання відповідно до заданого варіанту





1 Написати програму на Turbo Assembler для виконання завдання відповідно до заданого варіанту.

Крім того для усіх завдань передбачити коректне завершення роботи програми після натискання клавіші [Esc].

 

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

Варіант Завдання
   
  Написати програму-годинник, яка показує поточний час (з секундами) та дату (включно із днем тижня)
  Написати програму-будильник, яка спрацює через 1 хв. Після запуску програми
  Показати скільки тіків (коливань) системного таймера пройшло з моменту запуску програми (при виході з неї)
  Відобразити рух букви “о” по периметру екрану зі швидкістю 1 знакомісце/секунду
  Написати програму вводу паролю. Якщо пароль не введено протягом 15сек., видати повідомлення і завершити роботу програми. Робота програми не повинна перериватись при натисканні [Ctrl]+[Break] та [Ctrl]+[C]
  Виводити символи на екран зі швидкістю від 1 символ за 3 сек. до 3 символів/сек. Швидкість виведення регулювати за допомогою клавіш [+] та [-]
  Генерувати поперемінно звук уз частотою 100 та 1000Гц. Тривалість кожного інтервалу 1сек.
  Виводити на екран поточне значення регістру лічильника 0
  Вивести в якому режимі працює кожен із лічильників
  Програма-світлофор. На екрані відображаються вертикально три букви “О” на чорному фоні (світлофор). Активний сигнал світлофора відображається за допомогою зміни фону символу на колір, що відповідає кольору світлофора. Переключення здійснюється з інтервалом в 8 сек.

Продовження таблиці 20.5

   
  Якщо протягом 10сек. натискається одна і та ж клавіша здійснити вихід з програми
  Відобразити рух букви “о” на екрані зі швидкістю 2 знакомісця/сек.
  Вивести на екран скільки тіків та секунд виконується цикл на 100000 кроків
  Написати програму, яка при виході, за допомогою повторного запуску себе (внісши необхідні коди клавіш в буфер клавіатури), забезпечує неможливість завершити роботу з нею до заданого часу
  Написати програму, яка здійснює зворотній відлік часу (від 59 до 0 сек), відображає його на екрані, та здійснює вихід після завершення відліку

 

2 Здійснити компіляцію програм.

3 Виконати трасування програми за допомогою Turbo Debugger.

4 Зробити висновки за результатами роботи.

 

20.4 Контрольні запитання

 

1 Чим відрізняється годинник реального часу і системний таймер?

2 Назвіть переривання системного таймера та годинника реального часу.

3 Назвіть мінімальний часовий інтервал, що можна від слідкувати за допомогою системного таймера та годинника реального часу.

 


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

 

РЕЗИДЕНТНІ ПРОГРАМИ

 

21.1 Мета роботи

 

Навчитися створювати прості резидентні програми для перехоплення та обробки подій з портів периферійних пристроїв.

 

21.2 Теоретичні відомості

 

Програми, що залишаються в пам’яті, після того як керування повертається в DOS, називаються резидентними. Для того, щоб залишити програму (або її частину) в пам’яті використовують функції DOS 27h та 31h переривання 21h.

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

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

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

Спрощену структуру резидентної програми на мові Assembler подано нижче:

.286

code segment

org 100h

assume cs:code, ds:code

intNumber equ …;номер периравання, що перехоплюється

 

start:

jmp install

 

intMyFunc proc

push ds

push cs;забезпечити звертання до змiнних

pop ds;без використання префiксу cs:

;текст резидентної частини до стандартного обробника переривання

 

pushf

call [dword ptr old_ip]

;текст резидентної частини після стандартного обробника переривання

 

pop ds

iret

endp

 

old_int:;змiннi для збереження старої адреси

old_ip dw 0;вектора intNumber

old_cs dw 0

 

install:

mov ah, 35h

mov al, intNumber

int 21h;отримати адресу попереднього вектора

;переривання intNumber

mov [old_ip], bx;зберегти молодше слово адреси в old_ip

mov [old_cs], es;зберегти старше слово адреси в old_cs

 

mov ah, 25h

mov al, intNumber

mov dx, offset intMyFunc

int 21h;встановити нову адресу вектора

 

mov dx, offset install;завершити роботу i залишити резидентною

int 27h;частину програми по мiтку install

ends

end start

 

Date: 2015-12-12; view: 345; Нарушение авторских прав; Помощь в написании работы --> СЮДА...



mydocx.ru - 2015-2024 year. (0.007 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию