- •Программы и программное обеспечение
- •5) Программирование на ассемблере.
- •10) Элементарные конструкции языка ассемблера:
- •11) Элементарные конструкции языка ассемблера:
- •16) Описание данных в ассемблер.
- •17) Команды пересылки данных общего назначения в ассемблере.
- •18) Команды загрузки адресных значений.
- •19) Команды ввода-вывода
- •21) Сложение двоичных чисел со знаком
- •22) Умножение двоичных чисел без знака
- •23) Деление двоичных чисел без знака
- •27) Логические команды языка ассемблер. Синтаксис. Примеры.
- •33) Кросс-система
- •34) Средства и виды отладки в ассемблер и кросс-системах
- •35) Отладка с помощью программы – интерпретатор
- •4. Модель времени
- •5. Модель системы прерываний
- •6. Модель системы ввода/вывода
10) Элементарные конструкции языка ассемблера:
Любой язык программирования имеет стандартную структуру, которая позволяет осуществлять структурированное изучение языка.
Все конструкции языка делятся на 4 уровня:
- алфавит.
- элементарные конструкции (лексемы) - это элементарные конструкции языка,
т. е. слова.
- предложения;
- программные единицы.
- алфавит - это набор символов, который используется в конструкциях языка, а не только в комментариях.
- ключевые (зарезервированные) слова – это сочетания символов, которые имеют определенный смысл и соответственно воспринимаются Ассемблером.
- целые числа могут быть записаны в десятичной, восьмеричной или 16-ричной системах счисления, на это указывает буква в конце числа, называемая спецификатором
Примечания:
- для 16-чной ПСС, если число начинается с цифры от A до F, то перед ней записывается ноль,
- в числах можно использовать заглавные или строчные латинские буквы.
- символьные данные заключаются в одинарные либо двойные кавычки, но левый и правый ограничители должны быть одинаковыми.
Примечания:
- в качестве символов можно использовать любые изображаемые символы и буквы;
- заглавные и строчные буквы различаются;
- если внутри строки символов нужно использовать кавычки, то есть 2 возможности: или удвоить символ, например, ‘Don’’t’;
или использовать другой вариант ограничителя строки, например, «Don’t» или ‘кафе «МИР»’
11) Элементарные конструкции языка ассемблера:
- Имя – ссылка на адрес первого байта, содержащего данные (константы или переменные). Имена описываются директивой декларации.
Пример: FATAL DB 13. Это имя имеет атрибут (тип) BYTE, WORD и т. д.
- Метка – идентификатор инструкций или директивы, которая используется для передачи управления.
Метки сегментов и процедур:
LAD SEGMENT
………………….
ENDS
FUN PROC
……………
ENDP.
Метки команд (инструкции) располагаются в начале строки и отличаются от МНК двоеточием. Метка имеет атрибут NEAR или FAR.
В языке ассемблера допускается только одна метка на строке, но можно поместить метку на отдельной строке, что позволяет пометить инструкцию, расположенную на следующей строке. Запрещены метки, состоящие из одного? или $.
Одну и ту же инструкцию можно выполнять дважды:
NACHALO:
LAB:ADD AX, DX
…………………..
JMM NACHALO
………………….
JMP LAB.
- Выражения - в языке ассемблера состоят из чисел и\или символов, обозначающих числа. Выражение определяет операнд или его адрес.
В инструкциях выражения используются только для вычисления адресов операндов, при этом возможны виды адресации:
- Косвенная
- Индексная
- Базовая
- Базово – индексная.
12) РЕГИСТРЫ – это специальные ячейки памяти, расположенные непосредственно в процессоре. Работа с регистрами выполняется намного быстрее, чем с ячейками оперативной памяти, поэтому регистры активно используются как в программах на языке ассемблера, так и компиляторами языков высокого уровня.
Регистры можно разделить на регистры общего назначения, указатель команд, регистр флагов и сегментные регистры.
РЕГИСТРЫ ОБЩЕГО НАЗНАЧЕНИЯ (AX, BX, CX, DX)
К регистрам общего назначения относится группа из 8 регистров, которые можно использовать в программе на языке ассемблера. Все регистры имеют размер 32 бита и могут быть разделены на 2 или более частей.
Как видно из рисунка, регистры ESI, EDI, ESP и EBP позволяют обращаться к младшим 16 битам по именам SI, DI, SP и BP соответственно, а регистры EAX, EBX, ECX и EDX позволяют обращаться как к младшим 16 битам (по именам AX, BX, CX и DX), так и к двум младшим байтам по отдельности (по именам AH/AL, BH/BL, CH/CL и DH/DL).
Названия регистров происходят от их назначения:
EAX/AX/AH/AL (accumulator register) – аккумулятор;
EBX/BX/BH/BL (base register) –регистр базы;
ECX/CX/CH/CL (counter register) – счётчик;
EDX/DX/DH/DL (data register) – регистр данных;
ESI/SI (source index register) – индекс источника;
EDI/DI (destination index register) – индекс приёмника (получателя);
ESP/SP (stack pointer register) – регистр указателя стека;
EBP/BP (base pointer register) – регистр указателя базы кадра стека.
СЕГМЕНТНЫЕ РЕГИСТРЫ (CS, DS, SS, ES)
Процессор имеет 6 так называемых сегментных регистров: CS, DS, SS, ES, FS и GS. Их существование обусловлено спецификой организации и использования оперативной памяти.
Сегментные регистры использовались для хранения адреса начала сегмента кода (CS – code segment), сегмента данных (DS – data segment) и сегмента стека (SS – stack segment). Регистры ES, FS и GS были добавлены позже. Существовало несколько моделей памяти, каждая из которых подразумевала выделение программе одного или нескольких сегментов кода и одного или нескольких сегментов данных: tiny, small, medium, compact, large и huge.
13) Регистры – это специальные ячейки памяти, расположенные непосредственно в процессоре. Работа с регистрами выполняется намного быстрее, чем с ячейками оперативной памяти, поэтому регистры активно используются как в программах на языке ассемблера, так и компиляторами языков высокого уровня.
Регистры можно разделить на регистры общего назначения, указатель команд, регистр флагов и сегментные регистры.
Регистровые указатели и индексные регистры (SP, BP, SI, DI)
Указатель базы BP обычно адресует переменные, хранимые в стеке. Индекс источника SI и индекс назначения DI известны под названием строковых регистров. Обычно SI и DI служат для выполнения операции над байтовыми строками.
14) Регистры – это специальные ячейки памяти, расположенные непосредственно в процессоре. Работа с регистрами выполняется намного быстрее, чем с ячейками оперативной памяти, поэтому регистры активно используются как в программах на языке ассемблера, так и компиляторами языков высокого уровня.
Регистр командного указателя (IP)
Специальный регистр командного указателя IP (instruction pointer) указывает на следующую исполняемую машинную команду относительно определенного в CS сегмента. Для его изменения используются команды перехода.
Флаговый регистр.
Флаги (OF, DF, IF, TF, SF, ZF, AF, PF, CF)
Регистр флагов состоит из 16 бит, из них используются только 9 остальные 7 бит программами не используются. Отдельные биты флагов представляются одиночными буквами o, d, i, t, s, z, a, p, с. В таблице содержатся полные имена для каждого битового флага.
-
Символ
Полное имя
0 или of
Флаг переполнения
d или df
Флаг направления
i или if
Флаг прерывания
t или tf
флаг трассировки
s или sf
Флаг знака
z или zf
Флаг нуля
а или af
Вспомогательный флаг
р или pf
Флаг четности
с или cf
Флаг переноса
В битах регистра флагов процессора 8086 отражаются результаты выполнения различных команд и операций. Например, после сложения флаг переноса cf показывает, получился ли в результате перенос. Флаг переполнения указывает, может ли результат сложения чисел со знаком быть правильно представлен с помощью заданного количества битов. По мере изучения команд языка ассемблера вы также узнаете о той важной роли, которую играют флаги в работе программ.
15) СТРОКА-это цепочка байтов, для которой известен алгоритм определения ее длины. В языках программирования прописывают процедуру определения длины строки, а также вводят ограничение на то, какие байты могут содержаться в строке, а также в какой кодировке должны интерпретироваться строки - сколько байтов кодирует символ, и какая таблица будет использоваться для сопоставления байтов и символов. В языке Си под строкой понимается последовательность байтов, заканчивающаяся байтом со значением 0.
Строковые операции работают с одним элементом строки: байтом, словом, двойным словом. Для того чтобы команда манипулировала последовательностью таких элементов, используются команды-префиксы:
REP-повторять, пока содержимое ECX не обратится в 0
REPE/REPZ-повторять пока равно/нуль. Данный префикс заставляет выполнять строковую команду до тех пор, пока содержимое ECX не обратится в 0
REPNE/REPZ-повторять пока не равно/не нуль. Данный префикс заставляет выполнять строковую команду до тех пор, пока содержимое ECX не обратится в 0
Строковые команды считают, что строка - источник находится по адресу DS:ESI (для нас это просто ESI),а строка-приемник по адреса ES:EDI(для нас просто EDI). Все строковые команды можно разделить на шесть групп:
1. Команды пересылки
MOVSB - копирование строки байтов.
MOVSW - копирование строки слов.
MOVSD - копирование строки двойных слов
2. Команды сравнения
CMPSB - сравнение строк байтов.
CMPSW - сравнение строк слов.
CMPSD - сравнение строк двойных слов
3. Команды поиска(сканирования)
SCASB - сканирование строки байтов.
SCASW - сканирование строки слов
SCASD - сканирование строки двойных слов
4. Команды чтения из строки
LODSB - чтение байта из строки.
LODSW - чтение слова из строки.
LODSD - чтение двойного слова из строки.
5. Команда записи в строку
STOSB - запись байта в строку.
STOSW - запись слова в строку.
STOSD - запись двойного слова в строку.
6. Команды чтения/записи строки из порта
При использовании префиксов (REP, REPZ/REPE, REPNZ/REPNE) действие команд распространяется на цепочки байтов.
КОНСТАНТЫ - способ адресации данных, изменение которых рассматриваемой программой не предполагается или запрещается. Не все языки программирования позволяют защищать от изменения косвенно адресуемые области памяти. Такая возможность обычно имеется в языках программирования высокого уровня, что повышает надёжность кода и возможность его повторного использования.
ФОРМАТЫ - В информатике используется формат файла. Это характеристика структуры данных в файле.
Различают такие форматы:
- Графические форматы - форматы хранения графических файлов (фото, картинки, рисунки): JPEG, TIFF, PNG и т. д.
- Текстовые форматы - форматы хранения текстовых документов: TXT, PDF, DJVu и т. д.
- Форматы видео - форматы видеофайлов (FLV, MPEG, MOV и т. д.); соотношение сторон экрана.
- Цифровые аудиоформаты - форматы, которые используются для хранения звуковых файлов: mp3, WAV, FLAC и т.д.
- Открытые форматы - общедоступные форматы для хранения цифровых файлов.
