- •Назовите цели и задачи дисциплины. Дайте определение понятиям ‘программы’, ‘программное обеспечение’, ‘системное программирование’. Перечислите и опишите этапы подготовки программы.
- •Перечислите команды работы с битами. Опишите синтаксис каждой команды и принцип ее работы. Приведите примеры использования команд работы с битами.
- •Перечислите команды загрузки элемента цепочки в аккумулятор. Опишите синтаксис каждой команды и принцип ее работы. Приведите примеры использования команд загрузки элемента цепочки в аккумулятор.
- •Перечислите команды циклического сдвига. Опишите синтаксис каждой команды и принцип ее работы. Приведите примеры использования команд циклического сдвига.
- •Дайте определение понятия «синтаксис ассемблера» как правила написания программных кодов. Представьте формат предложения ассемблера. Представьте общий формат команд и макрокоманд ассемблера.
- •Обоснуйте необходимость организации циклов. Перечислите средства организации циклов. Опишите способы организации циклов. Приведите примеры использования команд организации циклов.
- •Дайте определение понятия «директива» в ассемблере. Представьте общий формат директив ассемблера. Перечислите существующие директивы.
- •Дайте определение понятия “операнд”. Приведите классификацию операндов, поддерживаемых транслятором ассемблера. Поясните на примерах каждый перечисленный пункт классификации.
- •Перечислите этапы создания программы на языке ассемблера. Опишите результат, получаемый на каждом этапе от редактирования до отладки. Отобразите на схеме все этапы процесса разработки программы.
- •Компоновка программы
- •Перечислите возможные типы операторов ассемблера. Опишите синтаксические правила формирования выражений ассемблера. Приведите примеры, поясняющие правила формирования выражений.
- •Приведите синтаксис директивы model. Опишите функциональное назначение и принцип ее работы. Перечислите модели памяти с описанием назначения модели и указанием типа кода и типа данных.
- •Назовите команды условного перехода. Укажите источники условия перехода. Опишите синтаксис каждой команды и принцип ее работы. Приведите примеры использования команд условного перехода.
- •Команды условного перехода(несколько): jcc,jcxz/jecxz, je, jz, jg, jge, jl, jle
- •Приведите структуру машинной команды. Опишите назначение полей машинной команды.
- •Назовите команды сравнения. Опишите синтаксис каждой команды и принцип ее работы. Приведите пример встраивания в код программы на ассемблере команд сравнения. Команды сравнения: cmp, test
- •Назовите виды адресации операндов в памяти и принципы организации каждого вида адресации. Дайте описание синтаксиса каждого вида адресации. Приведите пример каждого вида адресации.
- •Перечислите команды преобразования типов. Приведите синтаксис каждой команды. Приведите примеры использования команд преобразования типов при выполнении арифметических операций.
- •Перечислите команды сложения и вычитания двоичных чисел. Опишите синтаксис каждой команды и принцип ее работы. Приведите примеры сложения и вычитания двоичных чисел.
- •Перечислите логические команды языка ассемблер. Опишите синтаксис каждой команды и принцип ее работы. Приведите примеры использования логических команд.
- •Перечислите команды умножения двоичных чисел. Опишите синтаксис каждой команды и принцип ее работы. Приведите примеры умножения двоичных чисел.
- •Поясните механизм формирования локальных переменных программы на ассемблере (masm32) при трансляции.
- •Дайте определение понятию «таблица», «прямой табличный доступ». Опишите, как происходит процесс прямого табличного доступа в таблице.
- •Поясните механизм формирования системного времени в среде os Windows.
- •Опишите механизм вызова процедур win32, принадлежащих api-интерфейсу. Приведите пример формирования участка кода программы на ассемблере (masm32) при трансляции.
- •Опишите, как формируется стековый фрейм процедуры. Приведите пример формирования кода программы на ассемблере (masm32) при трансляции.
- •Поясните отличие директив «.Data» и «.Data?» (masm32). Обоснуйте необходимость применения представления данных именно с такими различиями.
- •Опишите функциональное назначение и суть соглашения «stdcall» (masm32).
- •Опишите директиву «model flat» (masm32). Функциональное назначение и принцип ее работы. Перечислите модели памяти с описанием назначения модели и указанием типа кода и типа данных.
- •Поясните механизм формирования локальных переменных программы на ассемблере (masm32) при трансляции.
- •Опишите функциональное назначение и способ представления нуль-терминированной строки в программе на ассемблере (masm32).
- •Поясните механизм воздействия на порядок выполнения инструкций программы на ассемблере (masm32) при использовании директивы «.Start».
- •Назовите этапы трансляции. Опишите общую схему работы компилятора.
- •Дайте понятие прохода. Назовите отличия многопроходных трансляторов от однопроходных. Укажите, от чего зависит количество проходов.
Перечислите команды преобразования типов. Приведите синтаксис каждой команды. Приведите примеры использования команд преобразования типов при выполнении арифметических операций.
Команды преобразования типов: CBW, CWD, CWDE, CDQ.
CBW — команда преобразования байта (в регистре AL) в слово (в регистре АХ) путем распространения значения старшего бита AL на все биты регистра АН;
CWD — команда преобразования слова (в регистре АХ) в двойное слово (в регистрах DX:AX) путем распространения значения старшего бита ах на все биты регистра DX;
CWDE — команда преобразования слова (в регистре АХ) в двойное слово (в регистре ЕАХ) путем распространения значения старшего бита АХ на все биты старшей половины регистра ЕАХ;
CDQ — команда преобразования двойного слова (в регистре ЕАХ) в учетверенное слово (в регистрах EDX:EAX) путем распространения значения старшего бита ЕАХ на все биты регистра EDX;
Пример:
xor ax,ax
mov al,a_
cbw
Приведите функциональную классификацию машинных команд. Перечислите команды пересылки данных. Опишите синтаксис каждой команды и принцип ее работы. Приведите примеры использования команд пересылки.
Общего назначения: mov, xchg.
Синтаксис:
mov <операнд назначения>,<операнд-источник>
xchg <операнд1>,<операнд2>
mov - это основная команда пересылки данных. Она реализует самые разнообразные варианты пересылки. Алгоритм работы: копирование второго операнда в первый операнд.
xchg - обмен двух значений между регистрами или между регистрами и памятью. Алгоритм работы: обмен содержимого операнд_1 и операнд_2.
Команды работы со стеком: push, pop.
Синтаксис:
push источник
pop назначение
pop - запись значения из вершины стека по месту, указанному операндом назначение.
push - запись значения источник в вершину стека.
Команды преобразования данных: xlat
xlat - подмена байта в регистре al байтом из последовательности (таблицы) байтов в памяти. Вычисляется адрес, равный ds:bx+(al), выполняется замена байта в регистре al байтом из памяти по вычисленному адресу.
Пример:
mov ah,1h
push ds
pop es
xchg ax,bx
Перечислите команды переноса элемента из аккумулятора в цепочку. Опишите синтаксис каждой команды и принцип ее работы. Приведите примеры использования команд переноса элемента из аккумулятора в цепочку.
stos -- Эта команда позволяет произвести действие, обратное команде lods, т.е. сохранить значение из регистра-аккумулятора в элементе цепочки. Эту операцию удобно использовать вместе с операциями поиска (сканирования) и загрузки с тем, чтобы, найдя нужный элемент, извлечь его в регистр и записать на его место новое значение. Команды, поддерживающие эту операцию, могут работать с элементами размером 8, 16 или 32 бита. Микропроцессор предоставляет четыре команды сохранения элемента цепочки из регистра-аккумулятора, работающие с элементами разного размера:
сохранить элемент из регистра-аккумулятора al /ax /eax в цепочке:
stos адрес_приемника
сохранить байт из регистра-аккумулятора al в цепочке:
stosb адрес_приемника
сохранить слово из регистра-аккумулятора ax в цепочке:
stosw адрес_приемника
сохранить двойное слово из регистра-аккумулятора еax в цепочке:
stosw адрес_приемника
Команда пересылает элемент из аккумулятора в элемент цепочки по адресу, соответствующему содержимому пары регистров es : edi / di . При этом содержимое edi / di подвергается инкременту или декременту (что зависит от состояния флага df ) на значение, равное размеру элемента цепочки.
Дайте определение понятия «стек». Перечислите команды работы со стеком. Опишите синтаксис каждой команды и принцип ее работы. Приведите примеры использования команд работы со стеком.
Стек - форма организации памяти.
Команды работы со стеком Push, Pop.
Синтаксис:
pop приемник
Выгружает из стека 2байта(4байта) и помещает их в приёмник.
push источник
Погружает в стек 2байта(4байта) из источника
пример:
push ax
pop bx
Перечислите команды сравнения цепочек. Опишите синтаксис каждой команды и принцип ее работы. Опишите результат использования префиксов повторения. Приведите примеры использования команд сравнения цепочек.
1)CMPS адрес_приемника,адрес_источника — сравнить строки (CoMPare String);
2)CMPSB — сравнить строку байтов (CoMPare String Byte);
3)CMPSW — сравнить строку слов (CoMPare String Word);
4)CMPSD — сравнить строку двойных слов (CoMPare String Double word).
Синтаксис команды CMPS:cmps адрес_приемника,адрес_источника
Здесь: адрес_источника определяет цепочку-источник в сегменте данных, адрес цепочки должен быть заранее загружен в пару ds:esi/si; адрес_приемника определяет цепочку-приемник, которая должна находиться в дополнительном сегменте, а ее адрес должен быть заранее загружен в пару регистров es:edi/di Алгоритм работы команды cmps заключается в последовательном выполнении вычитания (элемент цепочки-источника - элемент цепочки-получателя) над очередными элементами обеих цепочек.
