
- •Введение в системное программирование Основные понятия и определения Программы и программное обеспечение
- •Системное программирование
- •Этапы подготовки программы
- •Системное программирование
- •Лекция 1
- •1. Язык Си: Общая характеристика, историческая справкаи основные достоинства
- •2. Подготовка к выполнению и выполнение программ
- •3. Элементы языка с
- •Лекция 2
- •1. Понятие типа данных. Переменные и константы. Операция присваивания
- •2.Типы данных в языке си. Описание данных в программе
- •3. Константы в языке Си
- •4. Арифметические операции и арифметические выражения
- •5. Операции отношения, логические операции и логические выражения
- •6. Автоматическое преобразрвание типов и операция приведения
- •7. Простейшие операторы языка си. Составной оператор
- •Лекция 3
- •3. Инициализация переменных и массивов
- •4. Управляющие конструкции языка си
- •Лекция 4
- •1. Адреса и указатели
- •2. Отождествление массивов и указателей.Адресная арифметика
- •3. Указатели на массивы. Массивы указателей и многомерные массивы
- •4. Динамическое выделение памяти под массивы
- •5. Инициализация указателей
- •Лекция 5
- •1. Функции в языке си. Формальные и фактические параметры. Механизм передачи параметров. Возвращаемые значения
- •2. Использование указателей в качестве аргументов функций
- •3. Предварительное описание функций
- •4. Аргументы командной строки
- •Лекция 6
- •1. Ввод и вывод в языке си: Общие концепции
- •2. Файлы данных и каталоги. Внутренняя организация и типы файлов
- •3. Стандартные функции для работы с файлами и каталогами
- •4. Внешние устройства как специальные файлы. Организация обмена со стандартными внешними устройствами
- •5. Операции ввода/вывода через порты микропроцессоров intel 8086/80286
- •Лекция 7
- •1. Общая структура программы на языке си. Время существования и видимость переменных. Блоки
- •2. Классы памяти
- •3. Рекурсивные вызовы функций. Реализация рекурсивных алгоритмов
- •4. Препроцессор языка Си
- •5. Модели памяти, поддерживаемые компилятором ibm c/2
- •Лекция 8
- •1. Структуры в языке си: основные понятия
- •2. Массивы структур
- •3. Указатели на структуры
- •4. Вложение структур
- •5. Структуры и функции
- •6. Объединения
- •7. Перечисления
- •8. Определение и использование новых типов данных
- •9. Классы имен
5. Операции ввода/вывода через порты микропроцессоров intel 8086/80286
Все периферийные устройства и внешняя память подключены к системной шине микро-ЭВМ через специальные интерфейсы. Каждый такой интерфейс имеет набор встроенных регистров, называемых портами ввода/вывода, через которые центральный процессор и память взаимодействуют с соответствующими внешними устройствами. Одни порты предназначены для буферирования данных и называются буферными портами или портами данных. Другие служат для хранения информации о состоянии устройства или интерфейса и носят название портов состояния. Третьи, называемые портами управления, используются для получения команд от центрального процессора.
В некоторых компьютерах адреса памяти и портов включены в единое адресное пространство и все команды с обращением к памяти могут обращаться и к портам. В системах же построенных на базе микропроцессоров Intel 8086/80286 допускается организация двух адресных пространств: памяти и ввода/вывода. В этом случае всякий порт снабжается индивидуальным номером, однозначно идентифицирующим его среди всего множества выходных портов. Стандартная библиотека компилятора IBM C/2 предоставляет пользователям две функции с именами inp() и outp(), осуществляющие прямой обмен информацией с портами микропроцессора. Возможность выполнения операций ввода/вывода столь низкого уровня необходима при разработке программных драйверов устройств, однако она может оказаться полезной и при подготовке прикладных программ, требующих взаимодействия с периферийным оборудованием в реальном масштабе времени. Предварительные описания функций inp() и outp() помещены в файл conio.h.
Имя функции и назначение: inp - читает один информационный байт через входной порт с заданным номером
Формат и описание аргументов:
int inp(port)
unsigned port; /* Номер опрашиваемого порта */
Пример использования:
#include <conio.h>
main()
{ char result;
unsigned port = 0x64;
result = inp(port);
printf("Содержимое порта 64H равно %0x\n", (int)result);
}
Имя функции и назначение: outp - записывает один информационный байт в выходной порт с заданным номером
Формат и описание аргументов:
int outp(port, value)
unsigned port; /* Номер выходного порта */
int value; /* Выводимое значение */
Возвращаемое функцией outp значение равно параметру value.
Пример использования:
#include <conio.h>
main()
{ unsigned port = 0x64;
outp(port, 0x03);
}
Лекция 7
Общая структура программы на языке Си. Время существования и видимость переменных. Блоки. Классы памяти. Автоматические, внешние, статические и регистровые переменные. Рекурсивные функции. Реализация рекурсивных алгоритмов. Препроцессор языка Си: включаемые файлы, символические имена и макроопределения. Модели памяти, поддерживаемые компилятором IBM C/2.