- •Понятие алгоритма: рекурсивные функции, системы текстовых замен.
- •Системы счисления, переводы чисел из одной позиционной системы в другую.
- •Передача параметров в подпрограмму, параметры входные и выходные, параметры, передаваемые по значению и по адресу.
- •Использование подпрограмм, параметры формальные, локальные, глобальные, обращения к подпрограммам, фактические параметры.
- •Статические и динамические переменные, динамическая память, работа с динамическими переменными.
- •Понятие линейного связного списка, типы списков, представление стека с помощью массива, пример использования стека.
- •Использование динамических переменных для представления и работы со стеком.
- •Очередь, реализация очереди массивом.
- •Очередь, представление и реализация основных операций с помощью динамических переменных.
- •Реализация основных операций со списком: добавление, удаление, поиск.
- •Деревья, основные операции над деревьями, представление дерева массивом.
- •Двусвязные линейные списки, построение и обход бинарного дерева.
- •Операции поиска и удаления в бинарном дереве.
- •Понятие графа, представление графа на эвм.
- •Представление графа списком инцидентности, алгоритм обхода графа в глубину.
- •Представление графа списком списков, алгоритм обхода графа в ширину.
- •Технологии программирования, концепции, заложенные в ооп.
- •Основные понятия ооп: абстракция, инкапсуляция, полиморфизм.
- •Понятие объекта, его состояние и поведение, классы, определение класса и объявление класса.
- •Статические, дружественные и виртуальные поля и методы, особенности их использования.
- •Абстрактные классы, их назначение и использование.
- •Понятие области видимости: общие, личные, защищённые и опубликованные поля и методы объекта.
- •Указатель this и перегрузка методов.
- •Использование классов, различные способы инициализации.
- •Использование классов, работа с массивами и указателями на обьекты.
- •Наследование, пример использования наследования.
- •Конструкторы и деструкторы, их назначение и использование.
- •Архитектура пк, основные функциональные устройства и их назначение.
- •Мп с точки зрения программиста, регистры общего назначения.
- •Оперативная память, понятие исполняемого и физического адреса, сегментные регистры.
- •Регистр флажков, его назначение и использование.
- •Форматы данных и форматы команд, машинный формат двухадресной машины.
- •Адресация операндов, способы адресации, примеры команд с различными способами адресации.
- •Понятие команды и директивы в Ассемблере, формат команды и директивы.
- •Структура программы на Ассемблере с использованием стандартных директив сегментации.
- •Основные элементы языка Ассемблер: имена, константы, переменные, выражения.
- •Директивы определения данных и памяти, примеры.
- •Команда прерывания, команды работы со стеком.
- •Упрощённые директивы сегментирования, структура программы с использованием точечных директив, пример программы.
- •Этапы выполнения Ассемблерной программы на эвм, понятие com-файла.
- •Различие между exe - и com – файлами, требования, предъявляемые к исходному модулю, предназначенному для создания com – файла, примеры программ.
- •Понятие структурного программирования, этап проектирования – композиция и декомпозиция, понятие статической и динамической структуры программы, спецификация программы.
- •Понятие частичной и полной корректности программы, правила вывода – общий вид, правила консеквенции.
- •Правила вывода для операторов: пустого, присваивания, составного.
- •Правила вывода для операторов ветвления.
- •Правила вывода циклов с предусловием и посусловием.
Структура программы на Ассемблере с использованием стандартных директив сегментации.
Обычно программа на Ассемблере состоит из 3-х сегментов:
; сегмент стека Sseg Segment
………………………………
Sseg ends
; сегмент данных Dseg Segment
………………………………..
Dseg ends
; сегмент кода Cseg Segment
……………………………
Cseq ends
Каждый сегмент начинается директивой начала сегмента-segment и заканчивается директивой конца-Ends.
Существует специальная директива, устанавливающая соответствие между сегментными регистрами и именами в директиве сегмент.
ASSUME SS:Sseg,DS:Dseg,CS:Cseg,ES:Dseg.
Кодовый сегмент оформляется как процедура:
Cseq Segment
ASSUME SS:Sseg,DS:Dseq,CS:Cseg,CS:Dseg
Pr1 proc …./…..
Pr2 proc …./….
Pr2 endp …./….
Pr1 endp
Cseg ends.
В сегменте стека выделяется место под стек.
В сегменте данных описываются данные, используемые в программе, выделяется место под промежуточные и окончательные результаты. Кодовый сегмент содержит программу решения задач.
;Prim1.ASM
;сегмент стека Sseg Segment… DB256 DUP(?)
Sseg ends
;сегмент данных Dseg Segment… X DB ‘A’
Y DB ‘B’ Z DB ‘C’
Dseg Ends
Cseg Segment
ASSUME SS:Sseg, DS:Dseg. CS:Cseg
Start Proc FAR
Push DS/ Push AX / MOV DX,Dseg/ MOV DS,DX
Call MAIN
Ret
Start endp
MAIN Proc Near
ADD Al,X
MOV AX,Y
……../………..
Ret
Main endp
Cseg ends
End start
Основные элементы языка Ассемблер: имена, константы, переменные, выражения.
Алфавит состоит из латинских букв, цифр и символов. Строчные и прописные не различаются. Цифра не может быть на первом месте в имени.
В программе на Ассемблере используются константы:
-целые двоичные- последовательности 0 и 1 со следующим за ними символом “b”: 1010101b.
-целые десятичные- обычные 10-ые числа м.б с буквой “d”: 128 или 78d
-целые 16-ые : должны начинаться с цифры и заканчиваться ‘h’ если первый символ A,B,C,D,E,F, то перед ним надо поставить 0.
-действительные с плавающей точкой(мантисса и порядок):34.567e+02
-символьные- послед-сти символов заключенные в апострофы или “”
Именованные константы- директива EQU: M EQU 27
Определение переменных V1 DB(байт); V2 DW(слово) или V3=100
Выражения состоят из операндов, операторов и ( ).
Операторы:
1)арифметические + - * / mod
2) логические or not and xor
3)операции отношений : LT(<) LE(<=) EQ(=) NE(!=) GT(>) GE(>=)
4)операции сдвига: влево-SHL, вправо-SHP.
5)специальные: offset<имя>- смещение операнда относительно начала, а операнд PTR-определяет тип операнда метка или переменная.
Директивы определения данных и памяти, примеры.
Общий вид директивы определения:[<имя>]DX<операнды><;комменты>,
Где X-это B,W,D,F,Q или Т
В поле операндов м.б. ‘?’, 1 или несколько констант, разделенных запятой.
Имя(если есть) определяет адрес 1-ого байта выделенной области. Директива выделяет указанное кол-во байт и указанные операнды пересылаются в эти поля памяти. Если
Операнд ‘?’ то в поле ничего не заносится.
Примеры:
1)если операнд- символическое имя JM1, которое соответствует смещению в сегменте
O3AC1H, то после выполнения M DP JM1 будет выделено 4 байта памяти. Адрес М-значение O3AC1H
2) если надо выделить 100 байт памяти и заполнить 1.
D DB 100 DUP(1)
3)определение 1-мерного массива слов и адрес 1-ого элемента массива- имя MAS и значение его 1: MAS DW 1,7,35,75,84
4)определение 2-ух мерного массива: Arr DB 7,94,11,5
DB 5,0,1,2
DB 5,0,15,12
В директиве определения байта(слова) максимально допустимо 255.