
- •2) Работа с файлами в с
- •3) Регистры процессора Intel x86
- •1) Основные команды процессора Intel x86 Расширение операндов
- •Работа с битами
- •Работа с флагами процессора
- •3) Простые типы данных в Паскеле
- •1) Составные типы данных в паскале
- •2) Циклические конструкции в с
- •3) Арифметические операции ассемблера
- •1)Условные переходы
- •2) Условные операторы в с
- •1) Массивы и строки в с
- •3) Работа с памятью в с
- •2) Составные типы данных с. Структуры
- •3) Условные Операторы в паскале
- •1) Математический сопроцессор
- •2) Циклические конструкции Паскаля
- •1) Процедуры и Функции в паскале
- •2) Простые типы данных в с
- •3) Массивы и строки в ассемблере
- •2) Общая структура программы с
- •3) Видеобуфер
- •1) Циклические конструкции в с
- •2) Работа с видеопамятью
- •3) Процедуры и функции в паскале
- •1) Простые типы данных в с
- •2) Строки в ассемблере
- •3) Условные Операторы в паскале
- •1) Работа с файлами в с
- •2) Условные переходы
- •3) Массивы и строки в паскале
- •2) Флаги
- •3) Организация сложных структур данных в паскале. Списки.
- •1) Работа с памятью в с
- •3) Составные типы данных в паскале
- •1) Массивы и строки в с
- •2) Регистры процессора Intel x86
- •1) Простые типы данных в с
- •2) Математический сопроцессор
- •3) Файлы в паскале
- •1) Условные операторы в с
- •2) Регистры процессора Intel x86
- •1) Типы данных в с
- •3) Условные Операторы в паскале
- •1) Общая структура программы с
- •2) Основные команды процессора Intel x86 Расширение операндов
- •Работа с битами
- •Работа с флагами процессора
- •3) Файлы в паскале
3) Работа с памятью в с
Функция 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 */…
Билет 7
1) Прерывание– это событие, при возникновении которого процессор прекращает выполнение текущей программы и передаёт управление процедуре, называемой обработчиком прерывания.
Прерывание может быть вызвано как внешним событием (таймер, клавиатура), так и программно (команда int). Всего прерываний 256
Адреса обработчиков находятся в таблице 4-байтных элементов. Каждый элемент представляет собой пару смещение – сегмент (т.е., сначала идет смещение, а потом сегмент). Сама таблица находится по физическому адресу 0.
При работе с таблицей прерываний нужно отключать прерывания командой cli. Включить их назад можно командойsti. При этом будут запрещены только аппаратные прерывания, командаintбудет оставаться разрешенной
При входе в обработчик прерывания процессор
запрещает прерывания (точнее, устанавливает регистр флагов в константу 2);
кладёт на стек значение регистра флагов, csиip.
Для выхода из обработчика прерывания используется команда iret, восстанавливающая со стека эти три значения. Обработчик прерывания должен восстановить значения всех регистров, с которыми он работал, в противном случае выполнение прерванной программы будет нарушено.
В этом случае функции клавиатуры окажутся заблокированными, так как окажется затертым адрес отвечающего за её функционирование обработчика. Чтобы этого не происходило, вместо выхода из обработчика прерывания нужно передавать управление старому обработчику, предварительно сохранив его адрес. Для дальнего косвенного перехода (т.е., перехода в другой сегмент) используется команда jmpdword[x], где в переменнойxхранится пара смещение-сегмент
Для организации ввода-вывода процессор использует порты ввода-вывода. За многими устройствами зарезервирован один или более портов. У каждого порта есть номер. Для чтения из порта используется команда in(al|ax|eax), номер порта, а для записи в порт –outномер порта, (al|ax|eax).
При нажатии на клавишу её скан-код помещается в буфер клавиатуры. Для чтения из него используется порт 96 (60h). Если результатом чтения из порта является 0, это значит, что больше символов в буфере нет. При входе в 9 прерывание в буфере может лежать более одного символа.