Симулятор ассемблера онлайн

Бесплатный симулятор ассемблера для учебного 8-битного процессора: пишете программу, компилируете в ROM и исполняете по тактам с отладчиком. Процессор не нарисован картинкой — он собран из вентилей в симуляторе схем, и вы можете заглянуть в любой его узел.

Открыть процессор с программой →

Что это такое

Внутри «Компьютера Ершова» на 25-м уровне курса вы собираете настоящий 8-битный процессор из отдельных узлов: тактовый генератор, счётчик команд, два ROM, RAM, АЛУ, регистр-аккумулятор, дешифратор команд. Песочница предлагает этот процессор одной кнопкой, вместе с ассемблером и отладчиком.

Формат команд — двухбайтовое слово: первый байт хранит опкод, второй — операнд от 0 до 255. Программа компилируется в ROM с опкодами, данные живут в RAM на 256 ячеек. Всего ассемблер знает 15 команд.

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

Программа-шаблон: числа Фибоначчи

По кнопке ниже открывается песочница с процессором и готовой программой. Цикл считает ряд Фибоначчи до 55, параллельно собирает две свёртки ряда: OR (какие биты встречались хоть раз) и AND (какие биты есть у всех членов). Ровно этот листинг откроется в редакторе:

;  ЧИСЛА ФИБОНАЧЧИ — классическая первая программа
;  с циклом: 1, 1, 2, 3, 5, 8, 13, 21, 34, 55
;
;  Переменные:
;    RAM[32] = a, RAM[33] = b, RAM[34] = t (a + b)
;    RAM[35] = счётчик, RAM[36] = OR-свёртка ряда,
;    RAM[37] = AND-свёртка ряда, RAM[38] = константа 1
LDA 1
STA 32            ; a = F(1) = 1
STA 33            ; b = F(2) = 1
STA 36            ; OR-свёртка = 1
STA 38            ; константа 1 (для декремента)
LDA 255
STA 37            ; AND-свёртка = 0xFF
LDA 7             ; 8 итераций (счётчик дойдёт 7→0→выход)
STA 35
loop:
  LDA 0
  ADD 32          ; ACC = a
  ADD 33          ; ACC = a + b — следующее число
  STA 34          ; t = a + b
  LDA 0
  ADD 36
  OR 34           ; OR-свёртка: какие биты встречались
  STA 36
  LDA 0
  ADD 37
  AND 34          ; AND-свёртка: какие биты общие у всех
  STA 37
  LDA 0
  ADD 33
  STA 32          ; a = b — сдвиг окна
  LDA 0
  ADD 34
  STA 33          ; b = t
  LDA 0
  ADD 35
  SUB 38          ; счётчик − 1
  STA 35
  JN done         ; 0−1 = 255 (бит 7 = 1) — цикл окончен
  NOP             ; пустой такт (демонстрация NOP)
  JMP loop
done:
  HLT             ; итог: RAM[33] = 55 = F(10); RAM[37] = 0 — F(3) = 2 чётное

Программа занимает 34 инструкции (68 байт ROM) и выполняется за 208 тактов. На каждый член ряда приходится один проход цикла; выход из цикла — через команду JN: когда счётчик из 0 уходит в 255, у результата включается старший бит.

Как пользоваться

  1. Откройте процессор. Нажмите кнопку выше — песочница соберёт схему и вставит программу в редактор ассемблера.
  2. Запустите. Кнопка «▶ Выполнить» компилирует листинг в ROM и гонит такты. Слайдером скорости можно разогнать тактирование со 1 Гц до 50 Гц, весь прогон займёт около четырёх секунд.
  3. Отладьте. «⏭ Шаг» исполняет одну инструкцию через фазы «Выборка» и «Исполнение», отладчик поясняет каждую. Клик по адресу в списке команд ставит брейкпоинт, «⟲ Сброс» возвращает процессор в начало.
  4. Загляните в память. RAM-инспектор показывает все 256 ячеек: клик правит значение, двойной клик переключает hex/dec. К моменту HLT в RAM[33] будет 55.

Правите код — нажимайте «Выполнить» заново: отладчик перекомпилирует программу и предупредит, если код разошёлся с ROM.

Для кого это

Симулятор подходит студентам на первых лабораторных по архитектуре ЭВМ, школьникам олимпиадного кружка и разработчикам, которые хотят увидеть, как машинный код исполняется «по-настоящему» — на схеме из вентилей. Теория без установки: статья «Как выучить ассемблер с нуля» и справочник по всем командам. А на уровнях 18–29 курса этот процессор вы соберёте сами, узел за узлом.

Другие инструменты

Запустить числа Фибоначчи бесплатно →