Симулятор ассемблера онлайн
Бесплатный симулятор ассемблера для учебного 8-битного процессора: пишете программу, компилируете в ROM и исполняете по тактам с отладчиком. Процессор не нарисован картинкой — он собран из вентилей в симуляторе схем, и вы можете заглянуть в любой его узел.
Что это такое
Внутри «Компьютера Ершова» на 25-м уровне курса вы собираете настоящий 8-битный процессор из отдельных узлов: тактовый генератор, счётчик команд, два ROM, RAM, АЛУ, регистр-аккумулятор, дешифратор команд. Песочница предлагает этот процессор одной кнопкой, вместе с ассемблером и отладчиком.
Формат команд — двухбайтовое слово: первый байт хранит опкод, второй — операнд от 0 до 255. Программа компилируется в ROM с опкодами, данные живут в RAM на 256 ячеек. Всего ассемблер знает 15 команд.
Команды процессора
- Арифметика и логика: ADD, SUB, AND, OR — операнд берётся из RAM.
- Пересылка: LDA n загружает число n в аккумулятор, STA n записывает аккумулятор в RAM[n].
- Переходы: JMP (безусловный), JZ и JN (по нулю и по отрицательному аккумулятору).
- Служебные: NOP (пустой такт) и HLT (останов).
- Индексный регистр IX: LDX, INX, LDA [IX], STA [IX] — косвенная адресация.
Программа-шаблон: числа Фибоначчи
По кнопке ниже открывается песочница с процессором и готовой программой. Цикл считает ряд Фибоначчи до 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, у результата включается старший бит.
Как пользоваться
- Откройте процессор. Нажмите кнопку выше — песочница соберёт схему и вставит программу в редактор ассемблера.
- Запустите. Кнопка «▶ Выполнить» компилирует листинг в ROM и гонит такты. Слайдером скорости можно разогнать тактирование со 1 Гц до 50 Гц, весь прогон займёт около четырёх секунд.
- Отладьте. «⏭ Шаг» исполняет одну инструкцию через фазы «Выборка» и «Исполнение», отладчик поясняет каждую. Клик по адресу в списке команд ставит брейкпоинт, «⟲ Сброс» возвращает процессор в начало.
- Загляните в память. RAM-инспектор показывает все 256 ячеек: клик правит значение, двойной клик переключает hex/dec. К моменту HLT в RAM[33] будет 55.
Правите код — нажимайте «Выполнить» заново: отладчик перекомпилирует программу и предупредит, если код разошёлся с ROM.
Для кого это
Симулятор подходит студентам на первых лабораторных по архитектуре ЭВМ, школьникам олимпиадного кружка и разработчикам, которые хотят увидеть, как машинный код исполняется «по-настоящему» — на схеме из вентилей. Теория без установки: статья «Как выучить ассемблер с нуля» и справочник по всем командам. А на уровнях 18–29 курса этот процессор вы соберёте сами, узел за узлом.
Другие инструменты
- Симулятор логических схем — 47 уровней от провода до процессора.
- Генератор таблиц истинности — таблица по булевой формуле.
- Конвертер систем счисления — двоичная, десятичная и шестнадцатеричная.
- Библиотека знаний — 46 статей и 43 даташита по схемотехнике.