Pascal и прерывания

  • Автор темы -
  • Дата начала

Гость
#1
7. Подготовьте текстовое сообщение в двух страницах памяти. Используя прерывание 10Н, осуществите переключение между страницами.

15. Используя прямой доступ к видеопамяти, напишите и протестируйте функции очистки экрана заданным цветом, вывода символа и атрибута в заданную позицию, вывода строки заданным цветом, начиная с заданной позиции.

17. Последовательно переключая режимы 0х3–0х13, выведите в каждом из них строку.

38. Используя область данных BIOS, напишите программу, определяющую:
базовый адрес порта первого адаптера RS-232 (COM1);
порт для COM2;
порт для COM3;
порт для COM4;
базовый адрес порта для 1-го адаптера параллельн. принтера (LPT1);
порт для LPT2;
порт для LPT3;
порт для LPT4;
общую память в K-байтах;
биты состояния клавиатуры;
текущее (накопленное) значение ввода Alt+цифровая клавиатура;
адрес головы буфера клавиатуры;
адрес хвоста буфера клавиатуры;
текущий видео режим;
ширину экрана в текстовых колонках;
длина (в байтах) видео области;
смещение в видео сегменте активной страницы видео памяти;
положение курсора;
размер (форму) курсора;
номер текущей активной видео страницы;
адрес порта для чипа 6845 видеоконтроллера;
дату издания ROM-BIOS в коде ASCII.

39. Завершите работу программы, используя прерывание 20H.

43. Используя прерывание 21Н, определите системное время.
49. Используя прерывание 21Н, узнайте, используется ли проверка на CTRL-BREAK.

51. Используя прерывание 21Н, создайте файл.

54. Используя прерывание 21Н, отобразите строку на стандартном устройстве вывода.

58. Используя функцию 7H прерывания 21H, составьте программу для ввода пароля.

84. Используя расширенную память, составьте программу копирования дискет.




Друга попросил его друг, а тот попросил меня... Есть примеры, но они на С++. Сделать тоже можно либо на Pascal, либо на С++. Можна с ассемблерными вставками:) Если можете, напишите программы - с меня, если будете в Киеве, пиво;) Если лень писать и есть какие-либо мануалы по прерываниям в Pascal, буду также рад... Всем, кто отзовется, наперед спасибо.
 

Гость
#2
54. Используя прерывание 21Н, отобразите строку на стандартном устройстве вывода.

Написал вот так:

uses crt;
var message:string;
begin
clrscr;
message:='Stroka na standartnom ustroystve vivoda$';
asm
mov ah,9
mov dx, offset message
int 21h
end;
readln
end.

С остальным туго... :)

Люди, выручайте...
 

malor

Active Member
30.04.2007
27
0
#3
В чем отличие "базового адреса порта" от просто "базового адреса"?
Встретил в книге "Последовательные интерфейсы ПК" Агуров П.
Еще какой-то бит DLAB упоминается, непонятно откуда возникший. Стр. 319-320.
 
S

semenov-aks

Гость
#4
Рекомендую поискать С.А.Немнюгин "Turbo Pascal" (учебник). Очень неплохо описана работа с прерываниями.
 

malor

Active Member
30.04.2007
27
0
#5
Э.Таненбаум “Современные операционные системы”, стр.309:
“Как работают все эти схемы? Во всех случаях, когда центральный процессор хочет прочитать слово данных либо из памяти, либо из порта ввода-вывода, он выставляет нужный адрес на адресную шину, после чего выставляет сигнал READ на управляющую шину. Вторая сигнальная линия позволяет отличить обращение к памяти от обращения к порту. В зависимости от состояния линии этой шины управления на запрос процессора реагирует устройство(контроллер) ввода-вывода или память. Если пространство адресов общее(как на рис. 5.1б), то каждый модуль памяти и каждое устройство ввода-вывода сравнивает выставленный на шину адрес с обслуживаемым им диапазоном адресов. Если выставленный на шину адрес попадает в этот диапазон, то соответствующее устройство реагирует на запрос процессора. Поскольку выделенные внешним устройствам адреса удаляются из памяти, память не реагирует на них и конфликта адресов не происходит.
Что за `диапазон адресов` у устройств ввода-вывода?