- •Назовите цели и задачи дисциплины. Дайте определение понятиям ‘программы’, ‘программное обеспечение’, ‘системное программирование’. Перечислите и опишите этапы подготовки программы.
- •Перечислите команды работы с битами. Опишите синтаксис каждой команды и принцип ее работы. Приведите примеры использования команд работы с битами.
- •Перечислите команды загрузки элемента цепочки в аккумулятор. Опишите синтаксис каждой команды и принцип ее работы. Приведите примеры использования команд загрузки элемента цепочки в аккумулятор.
- •Перечислите команды циклического сдвига. Опишите синтаксис каждой команды и принцип ее работы. Приведите примеры использования команд циклического сдвига.
- •Дайте определение понятия «синтаксис ассемблера» как правила написания программных кодов. Представьте формат предложения ассемблера. Представьте общий формат команд и макрокоманд ассемблера.
- •Обоснуйте необходимость организации циклов. Перечислите средства организации циклов. Опишите способы организации циклов. Приведите примеры использования команд организации циклов.
- •Дайте определение понятия «директива» в ассемблере. Представьте общий формат директив ассемблера. Перечислите существующие директивы.
- •Перечислите этапы создания программы на языке ассемблера. Опишите результат, получаемый на каждом этапе от редактирования до отладки. Отобразите на схеме все этапы процесса разработки программы.
- •Компоновка программы
- •Дайте определение понятия “операнд”. Приведите классификацию операндов, поддерживаемых транслятором ассемблера. Поясните на примерах каждый перечисленный пункт классификации.
- •Перечислите возможные типы операторов ассемблера. Опишите синтаксические правила формирования выражений ассемблера. Приведите примеры, поясняющие правила формирования выражений.
- •Приведите синтаксис директивы 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».
- •Назовите этапы трансляции. Опишите общую схему работы компилятора.
- •Дайте понятие прохода. Назовите отличия многопроходных трансляторов от однопроходных. Укажите, от чего зависит количество проходов.
Назовите виды адресации операндов в памяти и принципы организации каждого вида адресации. Дайте описание синтаксиса каждого вида адресации. Приведите пример каждого вида адресации.
Прямая адресация: Эффективный адрес операнда содержится в самой команде и берется непосредственно из поля смещения машинной команды, т.е. для его формирования не используется никаких дополнительных источников или регистров. Полученное значение однозначно определяет ячейку памяти в сегменте данных. 1Относительная прямая адресация - Используется для команд условных переходов, для указания относительного адреса перехода. Эффективный адрес берется непосредственно из поля смещения машинной команды, 2Абсолютная прямая адресация. Эффективный адрес является частью машинной команды и формируется из значения поля смещения в команде. Для формирования физического адреса операнда в памяти микропроцессор складывает это поле со сдвинутым на 4 бита значением сегментного регистра. 2Косвенная адресация: Косвенная базовая регистровая адресация Эффективный адрес операнда может находитья в любом из регистров общего назначения (исключая регистры sp/esp,bp/ebp). Т.к. содержимое регистра легко изменить в ходе работы программы, данный способ адресации позволяет динамически назначить адрес операнда для некоторой машинной команды (mov ax, [ecx]), Косвенная базовая регистровая адресация со смещением (mov ax, [edx+3h]), Косвенная индексная адресация со смещением (mov ax, mas[esi*2]), Косвенная базовая индексная адресация (mov eax, [esi] [edx]), Косвенная базовая индексная адресация сосмещением (mov eax, [esi+5] [edx]).
Перечислите команды линейного сдвига. Опишите синтаксис каждой команды и принцип ее работы. Укажите отличие команд арифметического линейного сдвига от команд логического сдвига. Приведите примеры использования команд линейного сдвига.
Команды линейного сдвига: SHL, SHR
Синтаксис:
SHL операнд,счетчик_сдвигов
SHR операнд,счетчик_сдвигов
SHL — логический сдвиг влево. Содержимое операнда сдвигается влево на количество битов, определяемое значением счетчик_сдвигов. Справа в позицию младшего бита вписываются нули.
SHR — логический сдвиг вправо. Содержимое операнда сдвигается вправо на количество битов, определяемое значением счетчик_сдвигов. Слева в позицию старшего (знакового) бита вписываются нули.
Команды арифметического линейного сдвига отличаются от команд логического сдвига тем, что они особым образом работают со знаковым разрядом операнда:
Пример:
shl ah,4
shr bx,6
Перечислите директивы резервирования и инициализации данных простых типов. Охарактеризуйте каждый тип с точки зрения формата представления и диапазона принимаемых значений. Приведите примеры использования директив резервирования и инициализации данных.
db — резервирование памяти для данных размером 1 байт. Директивой db можно задавать следующие значения: выражение или константу, принимающую значение из диапазона;8-битовое относительное выражение, использующее операции HIGH и LOW; символьную строку из одного или более символов. dw — резервирование памяти для данных размером 2 байта. Директивой dw можно задавать следующие значения: выражение или константу, принимающую значение из диапазона; выражение, занимающее 16 или менее бит, в качестве которого может выступать смещение в 16-битовом сегменте или адрес сегмента; 1- или 2-байтовую строку, заключенная в кавычки. dd — резервирование памяти для данных размером 4 байта. Директивой dd можно задавать следующие значения: выражение или константу, принимающую значение из диапазона; относительное или адресное выражение, состоящее из 16-битового адреса сегмента и 16-битового смещения; строку длиной до 4 символов, заключенную в кавычки. Df , dp — резервирование памяти для данных размером 6 байт. Директивами df и dp можно задавать следующие значения: выражение или константу, принимающую значение из диапазона; относительное или адресное выражение, состоящее из 32 или менее бит (для i80386) или 16 или менее бит (для младших моделей микропроцессоров Intel); адресное выражение, состоящее из 16-битового сегмента и 32-битового смещения; константу; строку длиной до 6 байт, заключенную в кавычки.
Очень важно уяснить себе порядок размещения данных в памяти. Он напрямую связан с логикой работы микропроцессора с данными. Микропроцессоры Intel требуют следования данных в памяти по принципу: младший байт по младшему адресу.