май 22, 2022

SAP-1 Emulator: Assembly programming

Добавить в
Мои игры
Торрент
Скачать
Эмулятор SAP-1

Визуальный эмулятор, написанный на Go с использованием библиотеки двухмерных игр ebiten. Введите инструкции по сборке и управляйте значениями памяти, вводя инструкции на интерфейсе клавиатуры. Запускайте простые программы для сложения, вычитания и отображения результатов. Пройдитесь по программам, чтобы посмотреть, как регистры ведут себя на каждом шаге.

Эмулятор SAP-1 "Simple As Possible" вдохновлен главами о максимально простой архитектуре из Digital Computer Electronics: 3rd Edition Альберта П. Мальвино и Джеральда А. Брауна. Он был разработан как визуальный обучающий инструмент для развлечения и экспериментов.

Начало работы

Программа 1 (PRG-1) загружается при запуске и содержит пример программы, которая складывает несколько чисел, увеличивает несколько раз и отображает результат на числовом дисплее.

Чтобы запустить программу, убедитесь, что кнопка тактовой частоты 20 Гц на клавиатуре выделена, щелкнув ее, и нажмите кнопку RUN в правом нижнем углу. Вы должны увидеть активность среди блоков светодиодов (LED) справа, когда компьютер выполняет программу. Через мгновение результат должен отобразиться на цифровом дисплее в правом верхнем углу.

После того как программа достигнет команды остановки (HLT), она остановится, и загорится кнопка STOP . На этом этапе вы можете нажать RUN, чтобы снова запустить программу.

Двоичные, шестнадцатеричные и десятичные числа

SAP-1 предоставляет клавиатуру с шестнадцатеричным вводом (0-F, что составляет 0-15 в десятичном формате).

САП-1 рпредставляет машинный код (M.Code) в двоичном виде как MSB (старшие значащие биты) и LSB (младшие значащие биты). Диапазон двоичных значений: 00000000–11111111 или 0–255 в десятичном формате.

SAP-1 представляет адреса памяти в шестнадцатеричном формате и хранит значения в двоичном формате.

Инструкции

Инструкции состоят из ввода мнемоники и иногда соответствующего адреса памяти в шестнадцатеричном формате.

Предусмотрено 5 инструкций: LDA, ADD, SUB, OUT и HLT.

Для трех инструкций LDA, ADD и SUB требуется ввод соответствующего шестнадцатеричного значения с клавиатуры. Когда эти инструкции выбраны, клавиши 0-F на клавиатуре подсвечиваются, указывая, что они должны использоваться для ввода значений 0-15 для желаемой ячейки памяти, используемой с инструкцией.

Подробнее о мнемониках отдельных инструкций читайте ниже.

Ввод инструкций по программе

Инструкции можно вводить в выделенной строке окна Сборка (ASM). Используйте клавиши ВВЕРХ и ВНИЗ, чтобы переместить курсор на другую строку. Используйте DEL LINE, чтобы удалить выделенную строку. Используйте CLEAR ASM, чтобы очистить все содержимое окна ASM.

Всякий раз, когда команда вводится с клавиатуры, соответствующее двоичное представление для команды и любое значение адреса памяти будут представлены в виде двоичных цифр в окне машинного кода (M.Code).

Кроме того, это же двоичное значение будет отображаться вместе с адресом памяти, где находитсяКоманда находится в окне Память (ОЗУ).

Когда программа выполняется, счетчик программ (PRG CTR) начинает с "0" и загружает первую инструкцию из этого адреса памяти. По мере того, как программа выполняет цикл, она будет увеличивать P CTR, а последующие инструкции будут загружаться из ОЗУ с адресами 1, 2, 3 и так далее, пока программа не достигнет HLT или до достижения адреса 15, после чего программа завершится циклически. и продолжайте работать с 0.

ЛДА

Использование: LDA [адрес]

Пример: LDA 0xF

Ввод с клавиатуры: от LDA + 0 до F

LDA означает "Загрузить аккумулятор" и будет заполнять значение из памяти в аккумулятор, известный как "REG A" (регистр A).

Инструкция принимает один шестнадцатеричный ввод, который соответствует адресу памяти загружаемого значения.

ДОБАВИТЬ

Использование: ДОБАВИТЬ [адрес]

Пример: ДОБАВИТЬ 0xE

Ввод с клавиатуры: ADD + 0 до F

ADD означает «Добавить» и будет принимать значение по указанному адресу памяти и перемещать его в буферный регистр, известный как «REG B» (Регистр B). Во время выполнения программы содержимое REG B суммируется с содержимым REG A и отображается в регистре суммы (SUM). Затем значение из SUM будет перемещено в REG A, где его можно будет использовать позже в программе.

Инструкция принимает один шестнадцатеричный ввод, который соответствует адресу памяти используемого значения.

SUB

Использование: SUB [адрес]

Пример: SUB 0xD

КВвод ey Pad: SUB + 0 через F

SUB означает "вычесть" и будет принимать значение по указанному адресу памяти и перемещать его в буферный регистр, известный как "REG B" (регистр B). Во время выполнения программы содержимое REG B будет вычтено из содержимого REG A и будет указано в регистре суммы (SUM). Затем значение из SUM будет перемещено в REG A, где его можно будет использовать позже в программе.

Инструкция принимает один шестнадцатеричный ввод, который соответствует адресу памяти используемого значения.

ВЫХОД

Использование: ВЫХОД

Пример: ВЫХОД

Ввод с клавиатуры: ВЫХОД

OUT означает "Вывод" и берет содержимое из REG A и отображает числовой эквивалент на цифровом показании в десятичной форме.

Инструкция не принимает никаких входных данных.

ХЛТ

Использование: HLT

Пример: HLT

Ввод с клавиатуры: HLT

HLT означает "Остановить" и немедленно остановит программу при ее выполнении. Важно использовать HLT в конце программы, чтобы гарантировать, что выполнение не превысит значения, установленные в ОЗУ, что приведет к компьютерному мусору.

Инструкция не принимает никаких входных данных.

Настройка значений оперативной памяти

Чтобы ваша программа имела какой-либо значимый вывод, вы должны указать значения для LDA, ADD и SUB. Это делается путем чтения значений из ячеек оперативной памяти (ОЗУ). Значения, хранящиеся в ОЗУ, предоставляют значения программы для работы.

Обычно значения RAM вводятся в High память, то есть в любой адрес памяти, следующий за инструкцией "Остановить" (HLT). Значения до точки, где вводится HLT , называются мало памяти.

Для ввода значений в старшую память требуется четыре (4) нажатия клавиш:

ОЗУ + Адрес памяти + СЗБ + МЗБ

MSB = старший байт, вводится как 0–F на клавиатуре.

LSB = младший значащий байт, вводится как 0–F на клавиатуре.

Диапазон памяти

Адреса памяти могут содержать до 8 бит, при этом старший бит содержит 4 старших бита, а младший бит содержит 4 младших бита.

Пример: если MSB = 1 и LSB = 0, то MSB и LSB = 0001 0000, или 16 в десятичном формате.

Другой пример: если MSB = F и LSB = FF, тогда MSB и LSB = 1111 1111, или 255 в десятичном формате. 255 — это максимальное значение, которое может храниться в любом месте ОЗУ.

Чтение цифрового цифрового дисплея

Три цифры в правом верхнем углу показывают десятичное значение, перемещаемое из REG A в BUS при выполнении инструкции OUT. Цифровой цифровой дисплей (DND) может отображать десятичные значения от 0 до 255, а затем «прокручиваться» до 0 при достижении 256. После прокрутки DND будет продолжать отображать значения от 0 до 255.

Например, следующая программа отобразит 255 в DND, если для адреса RAM "F" установлено значение FF (двоичный код: 1111 1111).

LDA 0xF ВЫХОД HLT

Тактовые частоты

SAP-1 может работать на 3 различныхскорости nt: 2 Гц, 20 Гц и МАКС., нажав соответствующую кнопку на клавиатуре.

Вы заметите, что индикаторы программы и активности реагируют с разной скоростью при выборе разных тактовых частот.

MAX запустит эмулятор с максимальной скоростью, равной скорости прорисовки кадров, которая зависит от загрузки системы и частоты обновления монитора.

Пошаговый режим

Вы можете пошагово пройти программу, нажав кнопку STEP в правом нижнем углу. Каждое нажатие кнопки STEP увеличивает счетчик времени (TIME CTR) на единицу.

Примечание. Вы также можете установить кнопку "STEP" на тактовой частоте клавиатуры, чтобы отключить автоматическое продвижение часов при нажатии кнопки RUN. Как правило, это хорошая практика, поскольку она предотвращает случайные запуски при использовании пошагового режима.

Загрузка и сохранение программ

SAP-1 предоставляет 4 программных слота, доступ к которым можно получить с помощью кнопок PRG 1 – PRG 4 на клавиатуре.

Кнопка SAVE PRG сохранит текущую выбранную программу в файл, соответствующий номеру программы в каталоге "src", который должен быть включен в эмулятор SAP-1. Содержимое ОЗУ будет сохранено в другом файле в том же каталоге.

Чтобы загрузить программу, просто нажмите соответствующую кнопку PRG. Если вы хотите отменить внесенные изменения, нажмите кнопку PRG, чтобы обновить ранее сохраненное состояние.

Как скачать SAP-1 Emulator: Assembly programming через торрент

Всего несколько простых шагов:

  • Устанавливаем программу μTorrent, через которую мы будем скачивать торренты
  • Выбираем и скачиваем подходящий торрент-файл репака SAP-1 Emulator: Assembly programming
  • Двойным кликом открываем скаченный файл, программа μTorrent запустится автоматически и предложит выбрать место для сохранения дистрибутива.
  • После того как репак скачается, запускайте его. Начнется установка и... это все, приятной игры!