Студопедия Главная Случайная страница Обратная связь

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

Работа с памятью в С





Функция malloc выделяет указанное число байт памяти и возвращает их адрес в виде значения типа «void*» (нетипизированный указатель). Чтобы им можно было воспользоваться, оно приводится к типу «int*». Наконец, ключевое слово sizeof позволяет узнать размер типа данных (разные компиляторы могут генерировать разный размер для типа int, поэтому пользоваться константой неразумно).

Если в системе недостаточно памяти, функция malloc возвращает NULL (0). Каждый раз при выделении памяти это обстоятельство следует проверять, и в случае ошибки производить ее обработку (в простейшем случае печатать сообщение и выходить из программы).

Указатели. Имеется два специальных оператора для работы с указателями - * и &;. Оператор &; - это унарный оператор, возвращающий адрес операнда. пример: … int main (void) { int num, q; int *p; num = 100; /* num равно 100 */ p = # /* p получает адрес num */ q = *p; /* q получает значение num через указатель p */…

2) Прерывание – это событие, при возникновении которого процессор прекращает выполнение текущей программы и передаёт управление процедуре, называемой обработчиком прерывания.

Прерывание может быть вызвано как внешним событием (таймер, клавиатура), так и программно (команда int). Всего прерываний 256

Адреса обработчиков находятся в таблице 4-байтных элементов. Каждый элемент представляет собой пару смещение – сегмент (т.е., сначала идет смещение, а потом сегмент). Сама таблица находится по физическому адресу 0.

При работе с таблицей прерываний нужно отключать прерывания командой cli. Включить их назад можно командой sti. При этом будут запрещены только аппаратные прерывания, команда int будет оставаться разрешенной

При входе в обработчик прерывания процессор

  • запрещает прерывания (точнее, устанавливает регистр флагов в константу 2);
  • кладёт на стек значение регистра флагов, cs и ip.

Для выхода из обработчика прерывания используется команда iret, восстанавливающая со стека эти три значения. Обработчик прерывания должен восстановить значения всех регистров, с которыми он работал, в противном случае выполнение прерванной программы будет нарушено.

В этом случае функции клавиатуры окажутся заблокированными, так как окажется затертым адрес отвечающего за её функционирование обработчика. Чтобы этого не происходило, вместо выхода из обработчика прерывания нужно передавать управление старому обработчику, предварительно сохранив его адрес. Для дальнего косвенного перехода (т.е., перехода в другой сегмент) используется команда jmp dword [x], где в переменной x хранится пара смещение-сегмент

Для организации ввода-вывода процессор использует порты ввода-вывода. За многими устройствами зарезервирован один или более портов. У каждого порта есть номер. Для чтения из порта используется команда in (al|ax|eax), номер порта, а для записи в порт – out номер порта, (al|ax|eax).

 

При нажатии на клавишу её скан-код помещается в буфер клавиатуры. Для чтения из него используется порт 96 (60h). Если результатом чтения из порта является 0, это значит, что больше символов в буфере нет. При входе в 9 прерывание в буфере может лежать более одного символа.







Дата добавления: 2015-06-15; просмотров: 352. Нарушение авторских прав; Мы поможем в написании вашей работы!




Кардиналистский и ординалистский подходы Кардиналистский (количественный подход) к анализу полезности основан на представлении о возможности измерения различных благ в условных единицах полезности...


Обзор компонентов Multisim Компоненты – это основа любой схемы, это все элементы, из которых она состоит. Multisim оперирует с двумя категориями...


Композиция из абстрактных геометрических фигур Данная композиция состоит из линий, штриховки, абстрактных геометрических форм...


Важнейшие способы обработки и анализа рядов динамики Не во всех случаях эмпирические данные рядов динамики позволяют определить тенденцию изменения явления во времени...

Виды нарушений опорно-двигательного аппарата у детей В общеупотребительном значении нарушение опорно-двигательного аппарата (ОДА) идентифицируется с нарушениями двигательных функций и определенными органическими поражениями (дефектами)...

Особенности массовой коммуникации Развитие средств связи и информации привело к возникновению явления массовой коммуникации...

Тема: Изучение приспособленности организмов к среде обитания Цель:выяснить механизм образования приспособлений к среде обитания и их относительный характер, сделать вывод о том, что приспособленность – результат действия естественного отбора...

Условия приобретения статуса индивидуального предпринимателя. В соответствии с п. 1 ст. 23 ГК РФ гражданин вправе заниматься предпринимательской деятельностью без образования юридического лица с момента государственной регистрации в качестве индивидуального предпринимателя. Каковы же условия такой регистрации и...

Седалищно-прямокишечная ямка Седалищно-прямокишечная (анальная) ямка, fossa ischiorectalis (ischioanalis) – это парное углубление в области промежности, находящееся по бокам от конечного отдела прямой кишки и седалищных бугров, заполненное жировой клетчаткой, сосудами, нервами и...

Основные структурные физиотерапевтические подразделения Физиотерапевтическое подразделение является одним из структурных подразделений лечебно-профилактического учреждения, которое предназначено для оказания физиотерапевтической помощи...

Studopedia.info - Студопедия - 2014-2025 год . (0.201 сек.) русская версия | украинская версия