- •Понятие алгоритма: рекурсивные функции, системы текстовых замен.
- •Системы счисления, переводы чисел из одной позиционной системы в другую.
- •Передача параметров в подпрограмму, параметры входные и выходные, параметры, передаваемые по значению и по адресу.
- •Использование подпрограмм, параметры формальные, локальные, глобальные, обращения к подпрограммам, фактические параметры.
- •Статические и динамические переменные, динамическая память, работа с динамическими переменными.
- •Понятие линейного связного списка, типы списков, представление стека с помощью массива, пример использования стека.
- •Использование динамических переменных для представления и работы со стеком.
- •Очередь, реализация очереди массивом.
- •Очередь, представление и реализация основных операций с помощью динамических переменных.
- •Реализация основных операций со списком: добавление, удаление, поиск.
- •Деревья, основные операции над деревьями, представление дерева массивом.
- •Двусвязные линейные списки, построение и обход бинарного дерева.
- •Операции поиска и удаления в бинарном дереве.
- •Понятие графа, представление графа на эвм.
- •Представление графа списком инцидентности, алгоритм обхода графа в глубину.
- •Представление графа списком списков, алгоритм обхода графа в ширину.
- •Технологии программирования, концепции, заложенные в ооп.
- •Основные понятия ооп: абстракция, инкапсуляция, полиморфизм.
- •Понятие объекта, его состояние и поведение, классы, определение класса и объявление класса.
- •Статические, дружественные и виртуальные поля и методы, особенности их использования.
- •Абстрактные классы, их назначение и использование.
- •Понятие области видимости: общие, личные, защищённые и опубликованные поля и методы объекта.
- •Указатель this и перегрузка методов.
- •Использование классов, различные способы инициализации.
- •Использование классов, работа с массивами и указателями на обьекты.
- •Наследование, пример использования наследования.
- •Конструкторы и деструкторы, их назначение и использование.
- •Архитектура пк, основные функциональные устройства и их назначение.
- •Мп с точки зрения программиста, регистры общего назначения.
- •Оперативная память, понятие исполняемого и физического адреса, сегментные регистры.
- •Регистр флажков, его назначение и использование.
- •Форматы данных и форматы команд, машинный формат двухадресной машины.
- •Адресация операндов, способы адресации, примеры команд с различными способами адресации.
- •Понятие команды и директивы в Ассемблере, формат команды и директивы.
- •Структура программы на Ассемблере с использованием стандартных директив сегментации.
- •Основные элементы языка Ассемблер: имена, константы, переменные, выражения.
- •Директивы определения данных и памяти, примеры.
- •Команда прерывания, команды работы со стеком.
- •Упрощённые директивы сегментирования, структура программы с использованием точечных директив, пример программы.
- •Этапы выполнения Ассемблерной программы на эвм, понятие com-файла.
- •Различие между exe - и com – файлами, требования, предъявляемые к исходному модулю, предназначенному для создания com – файла, примеры программ.
- •Понятие структурного программирования, этап проектирования – композиция и декомпозиция, понятие статической и динамической структуры программы, спецификация программы.
- •Понятие частичной и полной корректности программы, правила вывода – общий вид, правила консеквенции.
- •Правила вывода для операторов: пустого, присваивания, составного.
- •Правила вывода для операторов ветвления.
- •Правила вывода циклов с предусловием и посусловием.
Этапы выполнения Ассемблерной программы на эвм, понятие com-файла.
Ассемблер - язык низкого уровня, поэтому программа на нем должна пройти как минимум 3 этапа обработки. Процесс подготовки и отладки программы на языке ассемблера включает этапы подготовки файла с исходным текстом, его трансляции и компоновки и, наконец, отладки программы с помощью специальной программы интерактивного отладчика.
Подготовка исходного текста программы выполняется с помощью любого текстового редактора. Файл с исходным текстом должен иметь расширение ASM.
Трансляция исходного текста программы состоит в преобразовании предложений
исходного языка в коды машинных команд и выполняется с помощью транслятора с
языка ассемблера (т. е. с помощью программы ассемблера). Трансляторы различных разработчиков имеют некоторые различия, в основном в части описания макросредств. Однако входной язык (т. е. мнемоника машинных команд и других операторов и правила написания предложений ассемблера) для всех ассемблеров одинаков. В результате трансляции образуется объектный файл с расширением .OBJ
Компоновка объектного файла выполняется с помощью программы компоновщика
(редактора связей). Эта программа получила такое название потому, что ее основное
назначение - подсоединение к файлу с основной программой файлов с
подпрограммами и настройка связей между ними. Однако компоновать необходимо даже простейшие программы, не содержащие подпрограмм. Дело в том, что у компоновщика есть и вторая функция - изменение формата объектного файла и преобразование его в выполнимый файл, который может быть загружен в оперативную память и выполнен.
Однако существует возможность создания другого вида исходного файла - <имя>.COM
Чтобы получить исполняемый COM-файл необходимо выполнить еще один этап обработки(exe->COM). Нужно учитывать, что не любой исходный exe может быть преобразован в COM - для этого должны выполняться определенные условия, т.к COM - файлы отличаются от exe(необходимо сделать некоторые преобразования исходного текста, чтобы создать корректный COM-файл).
Различие между exe - и com – файлами, требования, предъявляемые к исходному модулю, предназначенному для создания com – файла, примеры программ.
Различие между ЕХЕ – и СОМ:
1)Пред COM-файлом не располагается блок начальной загрузки и, соответственно, программа созданная как COM-файл занимает меньше места, чем exe.
2) EXE-файл может занимать произвольное кол-во сегментов, а COM-только 1.
3)Сегмент стека создается ОС автоматически, значит программисту не нужно выделять под него место.
4)Программа занимает 1 сегмент, значит данные располагаются в том же сегменте, т.е. не нужно выопределять адрес сегмента данных
5)Перед началом выполнения программы все сегментные регистры в качестве адреса имеют адрес специального блока PSP - это 256-байтовый блок, который располагается непосредственно и перед exe- и перед COM-файлом.
6)Т.к. начало программы отстоит от начала сегмента на 256 байт, то 1-й директивой в COM-файле должна быть директива обхода блока PSP:
org 100h; 100h(16-я сист.счисл.)=256 - обходит префикс программного сегмента
Пример создания COM-файла:
1) TITLE Prog_Com-file
Page 60,85; 60 строк по 85 символов
CSeg Segment Para 'Code'
ASSUME SS:CSeg, DS:CSeg, CS:CSeg
org 100h
Start: JMP Main; передача управления на метку Main
St1 DB 'String 1',13,10,'$'
St2 DB 'String 2','$'
Main Proc
MOV AH,9
LEA DX,St1
int 21h
LEA DX,St2
int 21h
Main endp
CSeg ends
End Start
2)С помощью точечных директив
.MODEl tiny
.CODE
JMP Met; передача управления на метку Met - пропускаем описания данных
St1 DB 'String 1','$'
Met: MOV AH, 09h
LEA DX,St1
int 21h
MOV AH,4Ch
int 21h
End Met
Данные можно было расположить в конце.
ЗАМЕЧАНИЯ:
-Не каждый исходный файл удовлетворяет условиям COM-файла
-Небольшие по размеру программы лучше создавать как COM-файлы
-Если программа написана как COM-файл, то exe из нее сделать не получится.