IV. Четвертая группа вопросов: Ассемблер




  1. Архитектура процессоров семейства IA-32.

1. Режимы работы процессора (защищенный, виртуальный, реальный, управления системой). Различия в адресации и моделях памяти для этих режимов.

2. Регистры процессора

1. Регистры общего назначения (EAX, EBX, ECX, EDX, EBP, ESP, ESI, EDI).

2. Особенности обращения к РОН (к 8-ми, к 16-ти и к 32-х разрядным).

3. Особенности использования РОН при выполнении команд процессором.

4. Сегментные регистры (CS, DS, ES, FS, GS, SS).

5. Регистр указателя команд (EIP) и регистр состояния процессора (EFLAGS).

6. Управляющие флаги. Флаги состояния (CF, OF, SF, ZF, AF, PF).

7. Регистры для выполнения операций с плавающей запятой, регистры, используемые в MMX-командах, XMM-регистры для выполнения команд потоковой обработки данных (SIMD).

  1. Основные элементы языка ассемблера.

1. Арифметические операции и операторы (), унарные + или -, *, /, MOD, + или -.

2. Целочисленные, вещественные, символьные и строковые константы. Значения суффиксов h, q, o, d, b, r, t, y. Использование кавычек внутри констант.

3. Зарезервированные слова, идентификаторы, директивы, метки, команды (мнемоника, операнды, комментарии).

4. Структура программы на языке ассемблера. Директивы TITLE, INCLUDE, LOCAL,.MODEL,.CODE,.DATA,.STACK, PROC, INVOKE, ENDP, END.

  1. Типы данных. Определение данных.

1. Директивы BYTE, SBYTE, WORD, SWORD, DWORD, SDWORD, FWORD, QWORD, TBYTE, REAL4, REAL8, REAL10.

2. Множественная инициализация переменных, определение строк, использование оператора DUP.

3. Примеры инициализации переменных различных типов. Прямой и обратный порядок следования байтов.

4. Операторы (OFFSET, PTR, TYPE, LENGTHOF, SIZEOF, TYPEDEF) и директивы (ALIGN, LABEL) для работы с данными.

5. Структуры. Объявления структурных переменных. Обращение к структурным переменным. Директивы STRUCT и ENDS.

2. Символические константы. Директива присваивания =. Определение размера массивов и строк, директивы EQU и TEXTEQU.

  1. Команды и операнды.

1. Типы операндов и адресации.

1. Непосредственно заданное значение, регистр, память (r8, r16, r32, reg, sreg, imm8, imm16, imm32, imm, r/m8, r/m16, r/m32, mem).

2. Операнды с непосредственно заданным адресом.

3. Операнды с непосредственно заданным смещением.

4. Косвенные операнды, массивы, операнды с индексом, указатели (NEAR, FAR).

5. Базово-индексный режим адресации.

6. Базово-индексный режим адресации со смещением.

2. Команды пересылки данных.

1. Команда MOV.

2. Команды расширения целых чисел: MOVZX, MOVSX.

3. Команды загрузки флагов состояния LAHF и SAHF.

4. Команда обмена данным XCHG.

5. Операции со стеком. Команды PUSH и POP.

6. Команды загрузки указателей LDS, LES, LFS, LGS, LSS.

7. Команда загрузки текущего адреса LEA.

3. Арифметические команды.

1. Команды сложения и вычитания: INC, DEC, ADD, SUB, NEG.

2. Команды умножения и деления: MUL, IMUL, DIV, IDIV.

3. Сложение и вычитание чисел с произвольной точностью. Команды ADC и SBB.

4. Арифметические операции с упакованными десятичными числами и ASCII‑строками: AAA, AAS, AAM, AAD.

4. Команды простого и циклического сдвигов: SHL, SHR, SAL, SAR, ROL, ROR, RCL, RCR, SHLD, SHRD.

5. Булевы операции и команды сравнения: AND, OR, XOR, NOT, TEST, CMP. Установка и сброс отдельных флагов состояния процессора.

6. Команды передачи управления.

1. Команда безусловного перехода JMP.

2. Команды условного перехода в зависимости от значения флагов состояния процессора: JZ, JNZ, JC, JNC, JO, JNO, JS, JNS, JP, JNP.

3. Команды условного перехода в зависимости от равенства операндов: JE, JNE, JCXZ, JECXZ.

4. Команды условного перехода, использующиеся после команд сравнения беззнаковых операндов: JA, JNBE, JAE, JNB, JB, JNAE, JBE, JNA.

5. Команды условного перехода, использующиеся после команд сравнения операндов со знаком: JG, JNLE, JGE, JNL, JL, JNGE, JLE, JNG.

6. Команды организации цикла: LOOP, LOOPZ, LOOPE, LOOPNZ, LOOPNE.

7. Команда обращения к процедуре (подпрограмме) CALL и команда возврата из процедуры (подпрограммы) RET. Передача параметров через регистры и стек. Вложенные вызовы процедур.

8. Команда прерывания INT.

7. Команды обработки строковых примитивов: MOVSB (MOVSW, MOVSD), CMPSB (CMPSW, CMPSD), SCASB (SCASW, SCASD), STOSB (STOSW, STOSD), LODSB (LODSW, LODSD).

8. Команды перекодировки байтов XLAT, XLATB.

  1. Компиляция программы.

1. Трансляция, компоновка и запуск программы.

2. Макрокоманды. Определение макрокоманды. Вызов макрокоманды. Передача параметров. Директивы MACRO и ENDM. Директива ECHO. Вложенные макрокоманды.

3. Директивы условного ассемблирования: IF, IFB, IFNB, IFIDN, IFIDNI, IFDIF, IFDIFI, IFDEF, IFNDEF, ENDIF, ELSE, EXITM.

4. Операторы отношения языка ассемблера (LT, GT, EQ, NE, LE, GE).

5. Специальные операторы: & (оператор подстановки), < > (оператор выделения текста),! (оператор выделения символа), % (оператор подстановки).

6. Создание повторяющихся блоков программы. Директивы WHILE, REPEAT, FOR, FORC.

 



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2019-05-16 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: