SteamDB

» » Знакомство с TIS-100 [Основы]

Знакомство с TIS-100 [Основы]

1. Что такое TIS-100?

TIS - 100: Машина Tessellated Intelligence System (Тесселированная Система Анализа), машина для работы с языком ассемблера и данными.

ИСТОРИЯ TIS-100Владельцем TIS-100 является дядя Рэнди, устройство которого было найдено его женой Дорис, после чего, Дорис отдала TIS-100 нам, и мы пытаемся выяснить, для чего собственно эта штука была нужна дяде Рэнди при жизни, что с ней можно сделать, и какую информацию она хранит.

НАШИ ЗАДАЧИ:
Понять, кто продал TIS-100 продавцу на блошином рынке
Восстановить усилитель сигнала [Сделано]
Найти книгу по микрооптимизации [Научиться оптимизировать код]
Получить новые номера.

2. Что такое язык ассемблера?

На машине используется язык, очень похожий на язык Assembler'a (Авторы игры и пытались его полностью передать, заменив и убрав некоторые команды)
Информация про язык ассемблера.
Язык ассемблера (англ. assembly language) — машинно-ориентированный язык низкого уровня с командами, не всегда соответствующими командам машины, который может обеспечить дополнительные возможности вроде макрокоманд; автокод, расширенный конструкциями языков программирования высокого уровня, такими как выражения, макрокоманды, средства обеспечения модульности программ.

Проще говоря, язык ассемблера служит для управления управления машиной (Компьютером), создания программ (Тот же самый BIOS, или например, GRUB, использующийся для загрузки LInux, FreeBSD, и многих других систем из семейства UNIX, к примеру, тоже написаны на Assembler'e (Имеется в виду BIOS и GRUB)),

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

3. Команды TIS-100, команды ассемблера.

RIGHT,LEFT,UP,DOWN (Право, Лево, Верх, Низ) Стороны направления принятия и отправления информации.
ANY (Любой) - отправить данные туда, где их примут/получить оттуда, откуда их отдают. Приоритеты таковы:
1. Лево
2. Верх
3. Право
4. Низ
LAST Использовать то направление, которое было использовано последним.
ACC Оперативная память.

MOV <ОТКУДА>,<КУДА> (От слова Move, двигать)Например:
MOV ACC (оперативная память), UP (Вверх)
Таким образом, мы отправим значение из аккумулятора (оперативной памяти) вверх, а дальше можете что угодно делать с этим значением
ACC (От слова Accumulation, аккумулятор, аккумулирует в себе данные) Оперативная память.
BAK (Возможно, от слова Backup, сохранение, резерв)Допольнительная оперативная память.
<МЕТКА>: Служит для выполнения определенного куска кода (инструкции) , находящегося под меткой, может быть названа как угодно, например:
  • TEST:
  • FILE:
  • TIS:
  • OK:
И так далее, метку можно называть как угодно, чтобы потом к ней перейти с помощью команды JMP
JMP <МЕТКА> (От слова Jump, прыгать) Служит для перепрыгивания к метке, чтобы выполнить ее

!<КОМАНДА> После выполнения <КОМАНДЫ>, программа останавливается
NOP Ничего не делает, обозначает ничего, почти декоративная команда.
NIL В программировании то же самое что и null, или же None. Указывает на нулевое значение или его отсутствие, может использоваться для того, чтобы отправлять значение в царство небесное в никуда, в бездну, служит для "выбрасывания" значений, если оно не нужно для выполнения цели программы
JEZ <МЕТКА> (Jump Equal Zero, Прыжок, если Равно Нулю)Если ACC == 0
(Значение в оперативной памяти равно нулю)
То программа перепрыгивает к <МЕТКА>, а дальше уже метка выполняет свою часть инструкции, которую вы задали данной <МЕТКА>.
!!!Не путать с null (NIL) и None!!! 0-это тоже значение, но оно не значит null или None. Подробная информация ниже.
null/None - значение, которое обозначает "пустое место", но никак не нулевое значение.
0-значение информации, и это не "пустое место", а данные
JNZ <МЕТКА> (Jump Not Zero, Прыжок если Не Ноль)Если ACC != 0
(Значение в оперативной памяти НЕ равно нулю)
То программа перепрыгивает к <МЕТКА>, а дальше уже метка выполняет свою часть инструкции, которые вы задали данной <МЕТКА>.
JGZ <МЕТКА>, (Jump Greater Zero, Прыжок если Больше Нуля) Если ACC > 0
(Значение в оперативной памяти > (Больше) нуля)
То программа перепрыгивает к <МЕТКА>, а дальше уже метка выполняет свою часть инструкции, которые вы задали данной <МЕТКА>.
JLZ <МЕТКА> (Jump Less Zero, Прыжок если Меньше Нуля)Если ACC < 0
(Значение в оперативной памяти < (Меньше) нуля)
То программа перепрыгивает к <МЕТКА>, а дальше уже метка выполняет свою часть инструкции, которые вы задали данной <МЕТКА>.
JRO <ЧИСЛО>/<ACC> (Jump Relative Offset, Прыжок со Смещением Перехода)Прыжок на <ЧИСЛО/> строк вниз,
Если <ЧИСЛО/>/<ACC> меньше нуля, то прыжок осуществляется на <ЧИСЛО>/<ACC> строк вверх.
ACC - оперативная память, вместо числа можно использовать значение оперативной памяти.
ADD <ЧИСЛО>/<СТОРОНА> (Добавить, плюс) - добавляет к оперативной памяти <ЧИСЛО> или значение <СТОРОНЫ>
SWP (Swap, менять) - меняет местами значения оперативной (ACC) и дополнительной памяти (BAK)
SAV (Save, сохранять)- копирование значение оперативной памяти в дополнительную (BAK)
NEG - меняет знак числа в оперативной памяти, т.е. было 45, а стало -45.
SUB <ЧИСЛО>/<НАПРАВЛЕНИЕ> (Так же как и в русском языке приставка -суб, обозначает под, отнятие, и другие отрицательные значения, другими словами это минус.ACC (Оперативная память) минус <ЧИСЛО> или значение с <НАПРАВЛЕНИЕ>

Графический модульЦвета:
0: Черный
1: Темно-серый
2: Светло-серый
3: Белый
4: Красный

Для вывода пикселей в графическом модуле нужно указать:
<КООРДИНАТА>, <КООРДИНАТА>, <ЦВЕТ>, (Еще несколько цветов, если хотите) , -1 (-1 служит для того, чтобы закончить команду добавления цвета)


Заключение разделаА вот команды асссемблера:
Похожи, не так-ли?

4. Конец. Благодарности источникам.

Благодарю за чтение руководства, если вам понравилось и помогло для изучения основ игры и для изучения небольшой информации вообще по самому программированию, то ставьте Like этому руководству. ;)

А так же спасибо этим руководствам и их авторам:
Так же, для тех, кто хочет получить ачивки в этой игре легко и просто,и без взлома, то добро пожаловать в это руководство:

The End. скачать dle 10.6фильмы бесплатно