- •Назовите цели и задачи дисциплины. Дайте определение понятиям ‘программы’, ‘программное обеспечение’, ‘системное программирование’. Перечислите и опишите этапы подготовки программы.
- •Перечислите команды работы с битами. Опишите синтаксис каждой команды и принцип ее работы. Приведите примеры использования команд работы с битами.
- •Перечислите команды загрузки элемента цепочки в аккумулятор. Опишите синтаксис каждой команды и принцип ее работы. Приведите примеры использования команд загрузки элемента цепочки в аккумулятор.
- •Перечислите команды циклического сдвига. Опишите синтаксис каждой команды и принцип ее работы. Приведите примеры использования команд циклического сдвига.
- •Дайте определение понятия «синтаксис ассемблера» как правила написания программных кодов. Представьте формат предложения ассемблера. Представьте общий формат команд и макрокоманд ассемблера.
- •Обоснуйте необходимость организации циклов. Перечислите средства организации циклов. Опишите способы организации циклов. Приведите примеры использования команд организации циклов.
- •Дайте определение понятия «директива» в ассемблере. Представьте общий формат директив ассемблера. Перечислите существующие директивы.
- •Перечислите этапы создания программы на языке ассемблера. Опишите результат, получаемый на каждом этапе от редактирования до отладки. Отобразите на схеме все этапы процесса разработки программы.
- •Компоновка программы
- •Дайте определение понятия “операнд”. Приведите классификацию операндов, поддерживаемых транслятором ассемблера. Поясните на примерах каждый перечисленный пункт классификации.
- •Перечислите возможные типы операторов ассемблера. Опишите синтаксические правила формирования выражений ассемблера. Приведите примеры, поясняющие правила формирования выражений.
- •Приведите синтаксис директивы 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».
- •Назовите этапы трансляции. Опишите общую схему работы компилятора.
- •Дайте понятие прохода. Назовите отличия многопроходных трансляторов от однопроходных. Укажите, от чего зависит количество проходов.
Перечислите команды загрузки элемента цепочки в аккумулятор. Опишите синтаксис каждой команды и принцип ее работы. Приведите примеры использования команд загрузки элемента цепочки в аккумулятор.
Эта операция позволяет извлечь элемент цепочки и поместить его в регистр- аккумулятор al, ax или eax. Эту операцию удобно использовать вместе с поиском (сканированием), с тем, чтобы, найдя нужный элемент, извлечь его, разместив в регистр-аккумулятор загрузить элемент из цепочки в регистр-аккумулятор al/ax/eax: lods адрес_источника Команда извлекает элемент из цепочки по адресу, соответствующему содержимому пары регистров ds : esi/si, и поместить его в регистр eax / ax / al . При этом содержимое esi / si подвергается инкременту или декременту на значение, равное размеру элемента. загрузить байт из цепочки в регистр- аккумулятор al: lodsb адрес_источника определяемых элементов, в этом случае не обязательно обозначать запятыми поля со значениями которых мы согласны. Ситаксис: Имя_ переменной имя_записи имя поля 1 = выражение1:..Имя поля N= выражение N
Назовите регистры состояния и управления для микропроцессоров архитектуры IA-32. Укажите разрядность перечисленных регистров. Охарактеризуйте каждый регистр с точки зрения его использования и функционального назначения. Приведите структуру регистра состояния.
К этим регистрам относятся:
регистр флагов eflags/flags;
регистр указателя команды eip/ip.
eflags/flags (flag register) — регистр флагов. Разрядность eflags/flags — 32/16 бит. Отдельные биты данного регистра имеют определенное функциональное назначение и называются флагами. Младшая часть этого регистра полностью аналогична регистру flags для i8086. Исходя из особенностей использования, флаги регистра eflags/flags можно разделить на три группы: 8 флагов состояния отражают особенности результата исполнения арифметических или логических операций. 1 флаг управления. Обозначается df (Directory Flag). Значение флага df определяет направление поэлементной обработки в этих операциях: от начала строки к концу (df = 0) либо наоборот, от конца строки к ее началу (df = 1). 5 системных флагов, управляющих вводом/выводом, маскируемыми прерываниями, отладкой, переключением между задачами и виртуальным режимом 8086. eip/ip (Instraction Pointer register) — регистр-указатель команд, содержит смещение следующей подлежащей выполнению команды относительно содержимого сегментного регистра cs в текущем сегменте команд.
Перечислите команды циклического сдвига. Опишите синтаксис каждой команды и принцип ее работы. Приведите примеры использования команд циклического сдвига.
Команды циклического сдвига: ROL, ROR, RCL, RCR
Синтаксис:
ROL операнд, счетчик_сдвигов
ROR операнд, счетчик_сдвигов
RCL операнд, счетчик_сдвигов
RCR операнд, счетчик_сдвигов
ROL — циклический сдвиг влево. Содержимое операнда сдвигается влево на количество битов, определяемое операндом счетчик_сдвигов. Сдвигаемые влево биты записываются в тот же операнд справа. ROR — циклический сдвиг вправо. Содержимое операнда сдвигается вправо на количество битов, определяемое операндом счетчик_сдвигов. Сдвигаемые вправо биты записываются в тот же операнд слева. RCL — циклический сдвиг влево через перенос. Содержимое операнда сдвигается влево на количество битов, определяемое операндом счетчик_сдвигов. Сдвигаемые биты поочередно становятся значением флага переноса CF; RCR — циклический сдвиг вправо через перенос. Содержимое операнда сдвигается вправо на количество битов, определяемое операндом счетчик_сдвигов. Сдвигаемые биты поочередно становятся значением флага переноса CF.
Пример:
rcl eax, 1
rol eax,16
ror eax,1