
- •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) Составные типы данных в паскале
Запись– это структура данных, состоящая из фиксированного числа компонентов, называемых полями записи. В отличие от массива, компоненты (поля) записи могут быть различного типа. Чтобы можно было ссылаться на тот или иной компонент записи, поля именуются.Структура объявления типа записи такова: <имя типа> =RECORD<список полей>END
Память компьютера представляет собой набор ячеек памяти размером 1 байт. Ячейки нумеруются с 0, номер каждой ячейки называется её адресом. Адресом переменной называется адрес первого её байта. Для хранения адресов переменных в Паскале используется специальный типа данных–указатели. Объявление указателя: var p: ^integer; гдеpпредназначен для хранения адреса переменной типаinteger.
Билет 16
1) Массивы и строки в с
Массив– это тип данных, описывающий упорядоченный набор однотипных элементов.
Массив задается так: int a[10]; // массив из 10 целых чисел. Нумеруется от 0 до 9 Статическиемассивы можно объявлять синициализацией, перечисляя значения их элементов в {} через запятую. Если задано меньше элементов, чем длина массива остальные элементы считаются нулями:
int a10[10] = { 1, 2, 3, 4 }; /* и 6 нулей */
Строка в Си - это последовательность байт (букв, символов), завершающаяся в конце специальным признаком - байтом '\0'.
char s[размер строки]
2) Регистры процессора Intel x86
Регистр процессора — память внутри процессора, предназначенная для хранения промежуточных результатов вычисления (регистр общего назначения) или содержащая данные, необходимые для работы процессора — смещения базовых таблиц, уровни доступа и т. д. (специальные регистры).IP— регистр, обозначающий смещение следующей команды относительно кодового сегмента.IP— 16-битный (младшая часть EIP)EIP— 32-битный аналог (младшая часть RIP)
Сегментные регистры— Регистры указывающие на сегменты.CS,DS,SS,ES,FS,GSCS — указатель на кодовый сегмент. Связка CS:IP указывает на адрес в памяти следующей команды.Регистры данных— служат для хранения промежуточных вычислений.EAX,EBX,ECX,EDX,EBP,ESI,EDI,ESP — 32-битные AX, BX, CX, DX — 16-битные AH, AL, BH, BL, CH, CL, DH, DL — 8-битные (половинки 16-ти битных регистров)3) Связанный список представляет собой упорядоченный набор переменных, в котором предыдущий элемент хранит указатель на следующий. Обычно для реализации списка вводят новый тип данных:
type
plist_entry = ^list_entry;
list_entry = record
next: plist_entry;
value: integer;
End;
В линейномсписке признаком последнего элемента служитнулевой указатель. Вкольцевомсписке последний элемент указывает на первый.
Для перечисления элементов списка используется следующий шаблон:
var current, head: ^list_entry;
...
current := head;
while current <> nil do begin
{ работа с элементом current }
current := current^.next;
end;
Головойсписка называется первый его элемент.Хвостомсписка называется последний его элемент. Очевидно, что все элементы списка доступны через его голову, поэтому список характеризуется указателем на его головуДвусвязным спискомназывается список, каждый элемент которого содержит указатель не только на следующий, но и на предыдущий элемент. В кольцевом двусвязном списке обратный указатель головы содержит адрес хвоста.
Файлы в паскале
Для работы с файлами в Паскале используются файловые переменные. Файловые переменные бывают трех типов:
var f1: file; { нетипизированные }
var f2: file of integer; { содержащие набор данных заданного типа, в данном случае integer }
var f3: text; { содержащие набор строк }
Нетипизированные файловые переменные могут содержать данные смешанных типов и в данном занятии не рассматриваются.
Работа с файлом любого типа разбивается на следующие этапы:
Связывание файловой переменной с конкретным файлом на диске. Выполняется процедурой Assign. Например,Assign(f3, ‘a:\data.txt’).
Открытие файла. Для открытия файла в режиме чтения используется процедура Reset(f), записи –Rewrite(f), добавления информации в конец –Append(f), последнее только для текстовых файлов.
Чтение и запись в файл. Осуществляется командами Read(f,var1,var2, …) иWrite(f,var1,var2, …) для типизированных файлов иReadLn(f,str1,str2, …) /WriteLn(f,str1,str2, …) для текстовых.
Завершение работы с файлом. Close(f).
При чтении данных из файла неизвестного размера полезно пользоваться функцией Eof(f), которая возвращаетTrueв случае, если достигнут конец файла. Типовой констркуцией для чтения файла является
while not eof(f) do begin
read(f, x);
…
end;
Билет 17