Симулятор ассемблера онлайн
Бесплатный симулятор ассемблера для учебного 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 даташита по схемотехнике.