БЕСПЛАТНАЯ ПОДГОТОВКА К ЕГЭ ПО ПРОФИЛЬНОЙ МАТЕМАТИКЕ
Подготовься к ЕГЭ-2026 по профильной математике самостоятельно с помощью сервиса "1С:Репетитор"!
Понятная теория и эффективные тренажеры с объяснением! Вы успеете подготовиться к экзамену! Начните занятия прямо сейчас!
design_arrow

Команды процессора

Команда (инструкция) процессора – минимальная единица работы ЦП, описывающая, что сделать (код операции, opcode) и с чем это сделать (операнды: регистры, адреса памяти, непосредственные значения). Любая программа – это последовательность машинных команд, которые процессор выполняет по циклу fetch–decode–execute: выборка → декодирование → исполнение.

В ЕГЭ тема встречается в заданиях на:

  • кодирование и формат команд, мощность полей (сколько разных опкодов/регистров/ячеек памяти возможно);

  • режимы адресации и вычисление эффективного адреса;

  • анализ простых программ на гипотетическом процессоре (значения регистров, флагов, ячеек памяти);

  • побитовые операции, сдвиги, работа со стеком;

  • оценку объёма памяти под программу, длины команд.

Базовые понятия и терминология

  1. Формат команды

    Общий вид (на примере):
    [ opcode | mode | reg | address/immediate ]

    • opcode – код операции (сложить, загрузить, сравнить и т.п.).

    • mode – режим адресации (как понимать операнд).

    • reg – код регистра(ов).

    • address / immediate – адрес в памяти или непосредственное число.

    Правило ЕГЭ №1. Если поле имеет k бит, то число различных значений = 2^k.
    Пример: поле opcode 5 бит 2^5 = 32 разных операции.

  2. Операнды и режимы адресации (минимум, который нужен)

    • Непосредственная (immediate): ADD A, #5 – операнд «5» хранится в самой команде.

    • Прямая (direct): LOAD R1, [100] – взять из ячейки памяти №100.

    • Регистровая (register): ADD R1, R2.

    • Косвенная (indirect): LOAD R1, [R2] – адрес в R2.

    • Базовая с смещением (base+disp): LOAD R1, [R2 + disp].

    • Индексная: LOAD A, [Base + Index*Scale + disp] (в олимпиадных задачах встречается упрощённый вариант base+index).

    Правило ЕГЭ №2. Эффективный адрес (EA) при base+disp = Base + disp (с учётом знака смещения, если оно знаковое).

  3. Основные классы команд

    • Пересылка данных: LOAD/STORE, MOV, PUSH/POP.

    • Арифметика: ADD, SUB, INC, DEC, MUL, DIV.

    • Логика/биты: AND, OR, XOR, NOT, SHL, SHR, ROL, ROR.

    • Сравнение/флаги: CMP (обновляет флаги), TEST.

    • Переходы: JMP (безусловный), JZ/JNZ/JC/JNC и др. (условные).

    • Подпрограммы: CALL, RET (работают со стеком).

    • Ввод/вывод: IN, OUT (в учебных моделях – абстрактно).

  4. Регистры и флаги

    • Регистры общего назначения (R0…R7 и т.п.).

    • SP (Stack Pointer), PC/IP (Program Counter/Instruction Pointer).

    • Флаги: Z (Zero), C (Carry), S/N (Sign/Negative), V/O (Overflow).

      • Z=1, если результат равен 0.

      • C=1 при переносе/заёме из старшего бита (беззнаковая арифметика).

      • S=1, если старший бит результата равен 1 (знаковый признак).

      • V=1 при знаковом переполнении (например, 127 + 1 в 8 бит).

    Правило ЕГЭ №3. Отдельно отличайте перенос (C) и переполнение (V): первое – про беззнаковую арифметику, второе – про знаковую.

Информатика–схема команд процессора

Как считать в задачах: «линейка» проверенных правил

  1. Мощность поля: k бит → 2^k вариантов (опкодов/регистров/адресов).

  2. Адресуемая память: если поле адреса – n бит и адресует байты, то максимум 2^n байт (или 2^n ячеек).

  3. Длина команды: сложите биты всех полей → переведите в байты (делите на 8, учитывайте округление вверх).

  4. Эффективный адрес: строго по режиму; при знаковом смещении – двухкомплементарное представление (например, 0xF6 в 8 бит = –10).

  5. Сдвиги: логические сдвиги заносят нули; циклические вращают биты; «бит, ушедший за предел», часто попадает в C.

  6. Стек: обычно растёт вниз (SP уменьшается при PUSH, увеличивается при POP), слово – 2 байта (в учебных задачах это оговаривается).

  7. Порядок байтов: если сказано «little-endian», младший байт хранится по меньшему адресу.

Связь с ЕГЭ: где это встречается

  • Расчёт количества команд/регистров/ячеек по разметке полей.

  • Вычисление эффективного адреса при различных режимах.

  • Симуляция короткой программы: конечные значения регистров, ячеек, флагов.

  • Побитовые операции и сдвиги (часто – в шестнадцатеричном представлении).

  • Стековые задачи: как меняется SP, что записано в память после PUSH/CALL.

  • Оценки объёма (длина n команд, объём адресуемой памяти и т.п.).

Практика: 5 упражнений в стиле ЕГЭ (с пошаговым разбором)

Упражнение 1. Эффективный адрес с 8-битным смещением

Условие. Формат адресации EA = Rb + disp, где disp – 8-битное знаковое смещение (доп. код). Пусть Rb = 1200 (десятичное), disp = 0xF6. Найдите EA.

Решение.

  • 0xF6 в 8 бит → двоично 1111 0110. Это отрицательное число.

  • Значение: 256 − 0xF6 = 256 − 246 = 10, значит disp = −10.

  • EA = 1200 + (−10) = 1190.

Ответ: 1190.

Упражнение 2. Симуляция 8-битной арифметики и флагов

Условие. 8-битные регистры, флаги Z и C. Исходно: A = 0x3C (60), B = 0xA7 (167), Z=0, C=0. Выполнить:

  1. ADD A, B (A := A + B);

  2. AND A, #0x3F;

  3. SHL A, 2 (логический сдвиг влево на 2 бита).

Определить A, Z, C после каждой команды (для SHL считайте, что C принимает значение «последнего вытолкнутого» бита; при двойном сдвиге – по второй операции).

Решение.

  1. ADD: 60 + 167 = 227 = 0xE3. 8-битный диапазон не переполнен ( < 256 ), C=0. Z=0 (результат ≠ 0).
    → A=0xE3, Z=0, C=0.

  2. AND 0x3F: 0xE3 (1110 0011) & 0x3F (0011 1111) = 0010 0011 = 0x23 (35).
    → A=0x23, Z=0, C не меняем (если по условию не определено – оставим прежним 0).

  3. SHL A,2: 0x23 = 0010 0011.

    • Первый сдвиг: 0100 0110 (0x46), вытолкнутый бит = 0 → C=0.

    • Второй сдвиг: 1000 1100 (0x8C), вытолкнутый бит = 0 → итоговый C=0.
      Результат не нулевой → Z=0.
      → A=0x8C, Z=0, C=0.

Ответ: после трёх команд A=0x8C, Z=0, C=0.

Упражнение 3. Стек: PUSH/POP и порядок байтов

Условие. 16-битное слово, little-endian, стек растёт вниз. Исходно SP = 0x1000. Выполнить:
PUSH 0xABCD; PUSH 0x0102; POP R1. Указать конечные SP, значение R1 и какие байты лежат по адресам 0x0FFC…0x0FFF.

Решение.

  • PUSH 0xABCD: сохраняем слово по адресам SP−2…SP−1, затем SP:=SP−2.
    • Новые адреса хранения: 0x0FFE..0x0FFF.
    • little-endian: [0x0FFE] = 0xCD, [0x0FFF] = 0xAB.
    • SP = 0x0FFE.
  • PUSH 0x0102:
    • Пишем по 0x0FFC..0x0FFD: [0x0FFC]=0x02, [0x0FFD]=0x01.
    • SP = 0x0FFC.
  • POP R1: читаем слово с SP..SP+1, затем SP:=SP+2.
    • Чтение: младший байт 0x02 (по 0x0FFC), старший 0x01 (по 0x0FFD) → R1 = 0x0102.
    • SP = 0x0FFE.

Ответ: SP=0x0FFE, R1=0x0102. В памяти:
0x0FFC=0x02, 0x0FFD=0x01, 0x0FFE=0xCD, 0x0FFF=0xAB.

Упражнение 4. Сколько опкодов, регистров и памяти адресуемо?

Условие. Формат 16-битной команды:
[ opcode:5 | reg:3 | addr:8 ]. Адресует байты.
а) Сколько различных операций поддерживает процессор?
б) Сколько регистров общего назначения возможно?
в) Сколько адресуемых ячеек памяти?
г) Какова длина одной команды в байтах?

Решение.

  • а) opcode:5 → 2^5 = 32 операции.

  • б) reg:3 → 2^3 = 8 регистров.

  • в) addr:8 → 2^8 = 256 байт адресуемой памяти.

  • г) 16 бит = 2 байта.

Ответ: 32 опкода; 8 регистров; 256 адресуемых байтов; длина команды 2 байта.

Упражнение 5. Мини-программа с разными режимами адресации

Условие. Аккумулятор AC=0. Память: [10]=7, [11]=3, [12]=0. Выполнить:

  1. LOAD AC, [10] (прямая);

  2. ADD AC, [11] (прямая);

  3. STORE AC, [12] (прямая);

  4. SUB AC, #4 (непосредственная).
    Найти конечные AC и [12].

Решение.

  1. LOAD: AC := 7.

  2. ADD: AC := 7 + 3 = 10.

  3. STORE: [12] := 10.

  4. SUB #4: AC := 10 − 4 = 6.

Ответ: AC = 6, [12] = 10.

Частые ловушки и как их обходить на ЕГЭ

  • Смещение со знаком. Всегда проверяйте, знаковое ли поле disp. Для 8 бит: значения 0x80…0xFF – отрицательные.

  • Перенос vs переполнение. Не путайте C и V. В задачах обычно спрашивают именно C (беззнаковый перенос).

  • Сдвиги. Логический сдвиг влево/вправо заполняет нулями; арифметический вправо – копирует старший бит (если явно сказано).

  • Стек и эндированность. Внимательно читайте, как растёт стек и какой порядок байтов принят.

  • Единицы измерения. Адресует ли поле байты или слова? Если слова – умножайте адрес на размер слова при расчёте байтового адреса.

Итог

Понимание формата команд, режимов адресации, флагов и базовых классов инструкций позволяет уверенно решать задачи ЕГЭ на машинный уровень: считать мощности полей, длины команд, эффективные адреса, имитировать выполнение коротких программ и анализировать стек/флаги. Освоив перечисленные правила и отработав 5 типовых упражнений, вы закроете основные риск-зоны экзамена и получите фундамент, на котором строится дальнейшее изучение архитектуры вычислительных систем.