Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Otvety2.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
244.94 Кб
Скачать

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 и т.д.

- Открытые форматы - общедоступные форматы для хранения цифровых файлов.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]