- •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) Файлы в паскале
Билет 1
1) - Общая структура программы: PROGRAM Имя_Программы; USES Список используемых библиотек (модулей); LABEL Список меток в основном блоке программы; CONST Определение констант; TYPE Описание типов; VAR Определение глобальных переменных программы; ОПИСАНИЕ ПРОЦЕДУР; ОПИСАНИЕ ФУНКЦИЙ; BEGIN Основной блок программы (операторы) END.
- Модули: Crt, graph, strings - Объявление переменных: Var Переменная: тип данных;
целые типы - ShortInt, integer, LongInt, Byte, Word;
вещественные типы - Single, real, Double, Extended, Comp;
Булевский тип - Boolean;
Символьный тип - Char;
Строковый тип - String; - Объявление типов: Type имя_типа={значение1, зн2,…, знN}
2) Работа с файлами в с
Файлпредставляет собой последовательность байтов, хранящуюся на каком-либо физическом носителе информации.
Открытие файла – fopen(имя, режим)
Открыть файл для чтения – “r” “rb”
Для записи – “w” “wb”
Добавить информацию в файл – “A” “AB”
Режимы: “R+” “W+” “A+”
“R+B” “W+B” “A+B”
Закрытие файла – fclose(ф.п.)
Запись информации в файл – Putc(символ, ф.п.) иFputc()
Вывод инф-ции из файла – getc()
3) Регистры процессора 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-ти битных регистров)
Билет 2
1) Основные команды процессора Intel x86 Расширение операндов
Иногда нужно бывает произвести операцию над операндами разного размера (а большинство полезных команд принимают операнды одного размера). Для этого меньший операнд нужно расширить. Есть два вида расширения:
Без учета знака. Старшие биты забиваются нулями.
movzx
С учетом знака. Если число положительное, то старшие биты забиваются нулями, иначе единицами.
movsx
cbw – al ax; cwde – ax eax.
cwd – ax dx|ax; cdq – eax edx|eax. Обычно используются перед делением.
Работа с битами
and, or, xor – побитовая операция над двумя операндами. Результат, как обычно, заносится в первый из них.
test– то же самое, что иand, но не изменяет первый операнд (то есть, влияет только на регистр флагов)
shl/shr – побитовый сдвиг влево/вправо без учета знака (старшие биты забиваются 0). Сдвигать можно на константу, либо наcl
sal/sar – побитовый сдвиг влево/вправо с учетом знака (старшие биты забиваются 0 или 1 в зависимости от знака)
Работа с флагами процессора
pushfd / popfd– занести содержимое флагов процессора в стек / занести вершину стека в регистр флагов.
adc – x1 + x2 + cf
sbb – x1 – x2 - cf
cmov*- вместо * можно писать всё то же, что и послеj*. Заносит значение второго операнда в первый если условие выполняется. Операнды могут быть оба 16- или 32-битными (но не 8-битными). Первый операнд – регистр, второй – регистр или ячейка памяти (наоборот нельзя, константы тоже нельзя)
set* – имеет единственный операнд размеров 8 бит. Заносит в него 1 если условие выполняется и 0 если нет.
Lea регистр, адрес – записывает в регистр значение адреса
2) Функции в С Прототип функции описывает тип ее возвращаемого значения, имя и аргументы. В общем виде прототип задается так:
тип_возвращаемого_значения имя_функции(тип_1_параметра имя_1_параметра, тип_2_параметра имя_2_параметра, ...);
Если у функции нет возвращаемого значения, то вместо типа должно быть указано ключевое слово "void".