Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторні роботи Степаненко.doc
Скачиваний:
3
Добавлен:
01.03.2025
Размер:
2.5 Mб
Скачать

Текст програми

#include <dos.h>

#include <alloc.h>

#include <conio.h>

#include <stdio.h>

void wait7bit (void)

{

while ((inportb (0x3F4) & 0x80) == 0);

}

void ngmd (unsigned char byte)

{

wait7bit ();

outportb (0x3F5, byte);

}

void main (void)

{

unsigned char *buf;

int i, k;

long addrbuf;

unsigned hbuf, lbuf;

unsigned z_es, z_bx;

buf = (unsigned char*) malloc (512);

addrbuf = 16L * (long) FP_SEG (buf) + (long) FP_OFF (buf);

hbuf = addrbuf >> 16;

lbuf = addrbuf & 0xFFFF;

26

// ввімкнення електродвигуна НГМД диска A

outportb (0x3F2, 0x1C);

// затримка 0,5 с для розгону двигуна

delay (450);

// встановлення магнітної голівки НГМД:

// F – код команди пошуку

// 0 – номер накопичувача А

// 30 – номер доріжки

ngmd (0xF);

ngmd (0);

ngmd (30);

// очікування встановлення біта 7 регістра статусу НГМД

wait7bit ();

// затримка для встановлення магнітних головок на доріжку

delay (225);

outportb (0xB, 0x46);

outportb (0xC, 0x46);

outportb (0x4, (unsigned char) lbuf & 0xFF);

outportb (0xC, (unsigned char) ((lbuf & 0xFF00) >> 8));

outportb (0x5, 0xFF); outportb (0x5, 0x1); outportb (0xA, 0x2);

// вимкнення електродвигуна НГМД диска A

outportb (0x3F2, 0xC);

k = 0;

for (i = 0; i < 512; i++) {

printf (“%3d | %X\n”, i, buf[i]);

if ((k % 24) == 0) getch ();

k++;

}

}

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

1. Дайте визначення системи прямого доступу до пам’яті.

2. Перелічіть основні програмно доступні регістри та лічильники КПДП

i8237A.

3. Призначення та характеристики циклічного зсуву пріоритетів каналів.

4. Вкажіть послідовність дій при ініціалізації ПКП.

5. В який функціональний елемент КПДП записується кількість байтів, що передається? Покажіть, де це передбачено в програмі.

27

Лабораторна робота № 4

ДОСЛІДЖЕННЯ МЕТОДІВ ПРОГРАМНОГО ДОСТУПУ

ДО РЕГІСТРІВ ПКП ТА РЕЖИМУ МАСКУВАННЯ ПЕРЕРИВАНЬ

Мета роботи:

вивчити методи програмного доступу до регістрів ПКП;

 навчитись розробляти програми, що аналізують стан регістрів IRR, ISR, IMR контролера переривань;

навчитись ідентифікувати коди станів регістрів ПКП;

 з’ясувати, яку роль відіграє режим маскування при керуванні системою переривань.

ТЕОРЕТИЧНІ ВІДОМОСТІ

1. Принципи організації системи переривань

Можливість переривання програм – важлива архітектурна властивість ЕОМ,

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

відноситься до організації паралельної в часі роботи процесора та периферійних пристроїв машини, а також до використання ЕОМ для керування в реальному часі технологічними процесами.

Щоб ЕОМ могла, не вимагаючи великих зусиль від програміста, реалізувати з високою швидкістю переривання програм, машині необхідно надати відповідні апаратурні та програмні засоби, сукупність яких отримала назву системи

переривань програм. Основними функціями системи переривань є:

 запам’ятовування стану програми, що переривається, та здійснення переходу до перериваючої програми;

відновлення стану програми, яка переривається, та повернення до неї.