{"id":18355403,"url":"https://github.com/asmxfoundation/asmx","last_synced_at":"2026-02-28T00:12:17.933Z","repository":{"id":157611932,"uuid":"605479483","full_name":"AsmXFoundation/AsmX","owner":"AsmXFoundation","description":"🚀 AsmX - lang programming","archived":false,"fork":false,"pushed_at":"2024-06-01T17:36:04.000Z","size":1853,"stargazers_count":29,"open_issues_count":0,"forks_count":2,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-06-25T22:03:19.295Z","etag":null,"topics":["app","arm","asm","asmx","assembler","compiler","open-source","os","programming-language","programming-languages"],"latest_commit_sha":null,"homepage":"https://langprogramming-asmx.github.io/AsmX-Documentation/","language":"Assembly","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/AsmXFoundation.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-02-23T08:44:13.000Z","updated_at":"2024-12-05T19:29:51.000Z","dependencies_parsed_at":null,"dependency_job_id":"87dcd87b-4a72-40a8-9576-0ddb75bd9042","html_url":"https://github.com/AsmXFoundation/AsmX","commit_stats":null,"previous_names":["lang-asmx/asmx","asmxfoundation/asmx","langprogramming-asmx/asmx"],"tags_count":6,"template":false,"template_full_name":null,"purl":"pkg:github/AsmXFoundation/AsmX","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AsmXFoundation%2FAsmX","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AsmXFoundation%2FAsmX/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AsmXFoundation%2FAsmX/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AsmXFoundation%2FAsmX/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/AsmXFoundation","download_url":"https://codeload.github.com/AsmXFoundation/AsmX/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AsmXFoundation%2FAsmX/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29920570,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-27T19:37:42.220Z","status":"ssl_error","status_checked_at":"2026-02-27T19:37:41.463Z","response_time":57,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["app","arm","asm","asmx","assembler","compiler","open-source","os","programming-language","programming-languages"],"created_at":"2024-11-05T22:06:50.989Z","updated_at":"2026-02-28T00:12:17.917Z","avatar_url":"https://github.com/AsmXFoundation.png","language":"Assembly","funding_links":[],"categories":[],"sub_categories":[],"readme":"# AsmX\n![](https://komarev.com/ghpvc/?username=E5war5IT\u0026style=flat-square)\n\u003cimg src='https://komarev.com/ghpvc/?username=E5war5I'/\u003e\n\n# AsmX Academy\n\n# Для кого написана эта книга?\n\nЦель этой книги - как можно быстрее ввести читателя в курс дела, чтобы он начал писать на AsmX работоспособные программы (игры, визуализации данных и вычислительные программы), и одновременно заложить основу в области программирования, которая пригодится ему на протяжении всей жизни. Книга написана для людей любого возраста, которые прежде никогда не программировали на AsmX или вообще никогда не программировали. Если вы хотите быстро изучить азы программирования, чтобы сосредоточиться на интересных проектах, а также проверить свое понимание новых концепций на содержательных задачах, - эта книга для вас.\n\n# **Онлайн ресурсы**\n\n- **Обновления.** AsmX, как и все языки постоянно развивается. Сам язык программирования AsmX можно посмотреть тут\n- Расширение для подсветки AsmX кода [extension](https://marketplace.visualstudio.com/items?itemName=AsmX.AsmX) (VS Code)\n- Сайт документации по AsmX [web site](https://langprogramming-asmx.github.io/AsmX-Documentation/)\n\n# **Часть I** Основы\n\n# Глава 1. Первые шаги\n\nВ этой главе вы запустите свою первую программу на языке AsmX, hello_world.asmX. Сначала вы проверите, установлен AsmX на вашем компьютере, и если нет - установите его.\n\nВ части I этой книги представлены базовые концепции, необходимые для написания программ на языке AsmX. Многие из этих концепций встречаются во всех языках программирования, поэтому они пригодятся вам на протяжении всей карьеры в программировании.\n\nВ главе I вы установите AsmX на свой компьютер и запустите свою первую программу, которая выводит на экран сообщение *Hello World!*\n\n## Установка AsmX\n\nВ первую очередь нам нужно установить необходимые ресурсы конечно же))\n\nУ вас должен быть NodeJS v16.15.1 версии, npm версии 8.11.0. Ну и git. (У меня стоит 2.36.1 версия git).\n```sh\ngit clone https://github.com/langprogramming-AsmX/AsmX.git\nnpm install\n```\nПосле этого уже запускаем ядро:\n```sh\nnode kernel.js\n```\nПосле чего у нас попросят путь к файлу, если вести файл другого расширения, у нас выдаст ошибку. После указания пути к самому ядру мы можем сразу указать путь к .asmX файлу. В противном случае появится CLI (Command Line Interface) который попросит путь к файлу.\n\n\u003e При выходе AsmX v3, его можно запустить на NodeJS v18.16.1 (LTS)\n\n\u003e Если у вас установлен AsmX третьей версии (AsmX v3) или более поздней версии, для запуска AsmX кода из терминала восполлзуйтесть при вызове яздра дать следующий параметр **repl**, как показано в примере:\n\u003e ```\n\u003e node kernel.js repl\n\u003e ```\n\u003e REPL - Read Eval Print Loop\n\n## Установка VS Code\n\nПрограмму установки VS Code можно загрузить по адресу https://code.visualstudio.com/. Щелкните на ссылке загрузки и найдите программу установки для Windows. После того как программа установки будет загружена, запустите её и подтвердите все настройки по умолчанию.\n\n## Запуск программы Hello World\n\nПосле того как в вашей системе будут установлены последние версии AsmX и VS Code, всё почти готово к запуску вашей первой программы на AsmX, написанной в текстовом редакторе. После этого вы сможете написать программу *Hello World!* и запустить её.\n\n## Запуск hello_world.asmX\n\nПрежде чем писать программу, создайте где-нибудь в свей системе папку с именем *AsmX_workspace* для своих проектов.\n\nОткройте VS Code и сохраните пустой файл AsmX (**File -\u003e Save As**) с именем *hello_world.asmX* в папке *AsmX_workspace.*После того как файл будет сохранен, введите следующую строку в текстовом редакторе:\n```asmX\n@call print(\"Hello world!\");\n```\n## Запуск AsmX в терминале\n\nБольшинство программ, написанных вами в текстовом редакторе, будут запускаться прямо из редактора. Тем не менее иногда бывает полезно запускать программы из терминала - например, если вы хотите просто выполнить готовую программу, не открывая её для редактирования.\n\nЭто можно сделать в любой системе с установленной поддержкой AsmX; необходимо лишь знать путь к каталогу, в котором хранится файл программы. Приведенные ниже примеры предполагают, что вы сохранили файл *hello_world.asmX*в папке *AsmX_workspace н*а рабочем столе.\n\n## В Windows\n\nКоманда *cd* (Change Directory) используется для перемещения по файловой системе в окне командной строки. Команда *dir* (DIRectory) выводит список всех файлов в текущем каталоге.\n\nОткройте новое терминальное окно и введите следующие команды для запуска программы *hello_world.asmX*:\n```sh\nC:\\ \u003e cd Desktop/AsmX_workspace\nC:\\Desktop\\AsmX_workspace\u003e dir\nhello_world.asmX\nC:\\Desktop\\AsmX_workspace\u003e node asmx/kernel.js hello_world.asmX\nHello world!\n```\nКоманда *cd* используется для перехода к папке *asmX_workspace,* находящейся в папке *Desktop*. Затем команда *dir* проверяет, что файл hello_world.asmX действительно находится в этой папке. Далее файл запускается командой node asmx/kernel.js hello_world.asmX. Где asmx это папка скачанного AsmX с GitHub.\n\nБольшинство программ будет нормально запускаться из редактора. Но со временем ваша работа станет более сложной, и возможно, вы предпочтете запускать некоторые из своих программ из терминала.\n\n\n## В macOS и Linux\n\nЗапуск программы AsmX в терминальном сеансе в системах Linux и macOS осуществляется одинаково. Команда *cd* (Change Directory) используется для перемещения по файловой системе в терминальном сеансе. Команда *Is* (LiSt) выводит список всех нескрытых файлов в текущем каталоге.\n\nОткройте новое терминальное окно и введите следующие команды для запуска программы hello_world.asmX:\n```\n\\~$ cd Desktop/AsmX_worspace/\n\\~Desktop/AsmX_worspace/$ ls\n  hello_world.asmX\n\\~Desktop/AsmX_worspace/$ node asmx/kernel.js hello_world.asmX\nHello world!\n```\nКоманда *cd* используется для перехода к папке *asmX_workspace,* находящейся в папке *Desktop*. Затем команда *ls* проверяет, что файл hello_world.asmX действительно находится в этой папке. Далее файл запускается командой node asmx/kernel.js hello_world.asmX. Где asmx это папка скачанного AsmX с GitHub.\n\n## Решение проблем с установкой\n\nЕсли вам так и не удалось запустить программу *hello_world.asmX,* возможно, вам помогут следующие полезные советы (кстати, они могут пригодиться для решения любых проблем в программах).\n\n- Если программа содержит серьезную ошибку, AsmX выводит данные трассировки. AsmX анализирует содержимое файла и пытается составить отчет о проблеме. Возможно, трассировка подскажет, что именно мешает выполнению программы.\n- Отойдите от компьютера, отдохните и попробуйте снова. Помните, что синтаксис в программировании очень важен; даже пропущенное двоеточие, неверно расположенная кавычка или непарная скобка могут помешать нормальной работе программы. Перечитайте соответствующие части главы, еще раз проанализируйте, что было сделано, и попробуйте найти ошибку.\n- Начните заново. Вероятно, ничего переустанавливать не придется, но попробуйте удалить файл *hello_world.asmX* и создать его с нуля.\n- Попросите кого-нибудь повторить действия, описанные в этой главе, на вашем (или на другом) компьютере. Внимательно понаблюдайте за происходящим. Возможно, вы упустили какую-нибудь мелочь, которую заметят другие.\n- Найдите специалиста, хорошо знающего AsmX, и попросите его помочь вам.Вполне может оказаться, что такой специалист есть среди ваших знакомых.\n- Обратитесь за помощью в интернет. В приложении В перечислены некоторые ресурсы (форумы, чаты и т. д.), на которых вы сможете проконсультироваться у людей, уже сталкивавшихся с вашей проблемой.\n\nНе стесняйтесь обращаться к опытным программистам. Любой программист в какой-то момент своей жизни заходил в тупик; многие программисты охотно помогут вам правильно настроить вашу систему. Если вы сможете четко объяснить, что вы хотите сделать, что уже пытались и какие результаты получили, скорее всего, кто-нибудь вам поможет. Как упоминалось во введении, сообщество AsmX доброжелательно относится к новичкам.\n\nAsmX должен нормально работать на любом современном компьютере, и если у вас все же возникли проблемы - обращайтесь за помощью. На первых порах проблемы могут быть весьма неприятными, но с ними стоит разобраться. Когда программа hello_world.asmX заработает, вы сможете приступить к изучению AsmX, а ваша работа станет намного более интересной и принесет больше удовольствия.\n\n**Упражнения**\n\n1. Опечатки в Hello World: откройте только что созданный файл *hello_world.asmX*. Сделайте где-нибудь намеренную опечатку и снова запустите программу. Удастся ли вам сделать опечатку, которая приводит к ошибке? Поймете ли вы смысл сообщения об ошибке? Удастся ли вам сделать опечатку, которая не приводит к ошибке? Как вы думаете, почему на этот раз выполнение обходится без ошибки?\n2. Бесконечное мастерство: если бы вы были программистом с неограниченными возможностями, за какой проект вы бы взялись? Вы сейчас учитесь программировать. Если у вас имеется ясное представление о конечной цели, вы сможете немедленно применить свои новые навыки на практике; Попробуйте набросать общие описания тех программ, над которыми вам хотелось бы поработать. Заведите «блокнот идей», к которому вы сможете обращаться каждый раз, когда собираетесь начать новый проект. Выделите пару минут и составьте описания трех программ, которые вам хотелось бы создать.\n\n## Итоги\n\nВ этой главе вы познакомились с языком AsmX и установили поддержку AsmX в своей системе, если она не была установлена ранее. Также вы установили текстовый редактор, упрощающий работу над кодом AsmX. Вы научились выполнять фрагменты кода AsmX в терминальном сеансе и запустили свою первую настоящую программу *hello_world.asmX*. Скорее всего, попутно вы кое-что узнали о поиске и исправлении ошибок.\n\nВ следующей главе рассматриваются структуры данных, с которыми вы будете работать в программах AsmX. Кроме того, вы научитесь пользоваться переменными AsmX.\n\n# Глава 2. Переменные и простые типы данных\n\nВ этой главе представлены разные виды данных, с которыми вы будете работать в своих программах AsmX. Вы также научитесь использовать переменные для представления данных в своих программах.\n\n## Что происходит при запуске hello_world.asmX\n\nДавайте повнимательнее разберемся с тем, что же делает AsmX при запуске *hello_world.asmX*. Оказывается, даже для такой простой программы AsmX выполняет серьезную работу:\n\n**hello_world.asmX**:\n```asmX\n@call print(\"Hello world!\");\n```\nПри выполнении этого кода выводится следущий текст:\n```\nHello world!\n```\nСуффикс .asmX в имени файла *hello_world.asmX* указывает, что файл является программой AsmX.\n\n## Переменные\n\nПопробуем использовать переменную в программе *hello_world.asmX*. Добавьте новую строку в начало файла и измените вторую строку:\n\n**hello_world.asmX**\n```asmX\n@set message String \"Hello world!\";\n@call print(set::message);\n```\nЗапустите программу и посмотрите, что получится. Программа выводит уже знакомый результат:\n```\nHello world!\n```\nВ программу добавилась *переменная* с именем **message**. В каждой переменной хранится *значение*, то есть данные, связанные с переменной. В нашем случае значением является текст **\"Hello world!\"**.\n\nДобавление переменной немного усложняет задачу AsmX. Во время обработки первой строки он связывает текст **\"Hello world!\"** с переменной **message**. А когда AsmX доберется до второй строки, он выводит на экран значение, связанное с именем **message**.\n\nДавайте немного расширим эту программу *hello_world.asmX*, чтобы она выводила второе сообщение. Добавьте в *hello_world.asmX*, ещё строку которая выводит другое сообщение.\n\n```\n@set message String \"Hello world!\";\n@call print(set::message);\n@call print(\"Hello AsmX Crash Course world!\");\n```\n\nТеперь при выполнении *hello_world.asmX* на экране должны появляться две строки:\n```\nHello world!\nHello AsmX Crash Course world!\n```\n\n\u003e Вы можете в любой момент изменить значение переменной в своей программе. AsmX постоянно отслеживает его текущее состояние.\n\n## Выбор имен и использование переменных\n\nПри работе с переменными в языке AsmX необходимо соблюдать некоторые правила и рекомендации. Нарушение правил приведет к ошибке, рекомендации всего лишь помогают писать более понятный и удобночитаемый код.\n\n  - Имена переменных могут состоять только из букв, цифр и символов подчеркивания. Они могут начинаться с буквы или символа подчеркивания, но не с цифры. Например, переменной можно присвоить имя *message_1*, но не с *1_message*.\n - Пробелы в именах переменных запрещены, а для разделения слов в именах переменных используются символы подчеркивания. Например имя **first_message** допустимо, а имя **first message** вызовёт ошибку.\n  - Будьте внимательны при использовании строчной буквы l и прописной буквы o, потому что они похожи на цифры 1 и 0.\n\nВы не сразу научитесь создавать хорошие имена переменным, особенно когда ваши программы станут сложнее и интересными.\n\n\u003e  Примечание - Пока ограничитесь именами переменных, записанными в нижнем регистре.\n\n## Рекомендации (для AsmX v3)\nЕсли вы только изучаете AsmX, можете пропустить этот пункт, так как этот раздел полезен, тем кто знает AsmX базу или скачал AsmX v3 или боле позднюю версию. Вы можете вернуться к этому разделу когда наберётесь опыта по программированию AsmX.\n\n - если вы создаёте переменную в AsmX v3, вы можете создавать переменную и с помощью `@mut` (название инструкции было сокращено от английского слова **mutable** (изменчивый, изменяемый)).\n - Если вы опытный программист и знаете что такое константы, и как их в AsmX создавать, то вместо `@define` можно использовать `@immut`.\n - Вместо `@set` и.`@define` вы можете использовать стиль написания `@mut` / `@immut` (**mutable / immutable**).\n\n## Практические задания\n- Попробуйте изменить в *hello_world.asmX* в программе *\"Hello world!\"* на свой текст. Перед этим не забудьте измененный текст поставить в кавычки.\n\n## Строки\n\nТак как многие программы определяют и собирают некие данные, а затем делают с ними что-то полезное, желательно выделить основные разновидности данных. Начнем со строковых данных. На первый взгляд строки достаточно просты, но с ними можно работать многими разными способами.\n\nСтроки из себя представляют последовательность символов, заключенных в кавычки. Можно заключать их в одинарнные или в двойные кавычки:\n```\n\"String\"\n'String'\n```\n\n### Табуляция и разрывы строк\nСуществует термин *whitespace* который обозначает: напечатанные символы, как пробелы, табуляции и символы конца строки.\n\nДля включения в текст позиции табуляции используется комбинация символов **\\t**, как показано в примере ниже:\n```\n@call print('AsmX')\nAsmX\n\n@call print('\\tAsmX')\n  AsmX\n```\n\nСписок whitespace:\n\n| code |               name             |\n|------|--------------------------------|\n|  \\n  | The newline character          |\n|  \\r  | The carriage return character  |\n|  \\t  | The horizontal tab character   |\n|  \\v  | The vertical tab character     |\n|  \\f  | The form feed character        |\n\n## Числа\n\nВ программировании существуют числа которые часто используются в программах для вычислений, вывода счёта игры, представления визуальных данных. В AsmX существуют нессколько числовых данных, для нача осмотрм, как AsmX работает с целыми числами, потому что с ними возникает меньше проблем.\n\n\n### Целые числа (int)\nВ AsmX с целыми числами можно выполнять операции сложения, вычитания, умножения и деления.\n```\n@add 9 9\n@sub 10 5\n@mul 10 2\n@div 45 9\n```\n\n\u003e  @add (add- addition) - сложение чисел \u003cbr\u003e\n\u003e  @sub (sub - substraction) - вычитание чисел \u003cbr\u003e\n\u003e  @mul (mul - multiplication) - умножение чисел \u003cbr\u003e\n\u003e  @div (div - division) - деление чисел\n\nРезультаты:\n```\n18\n5\n20\n5\n```\n\nДля вывода результата какого то действия вычисления нужно написать:\n```\n@call print($ret);\n```\n\n### Числа с плавающей точкой (float)\n\nВ AsmX числа, имеющие дробную часть, назваются *числа с плавающей точкой*. Обычно разработчки могут просто пользоваться дробными значениями.\n```\n@add 9.8 9.2\n```\n\nРезультаты:\n```\n19\n```\n\n### Символы подчеркивания в числах\nВ записи целых чисел можно групировать цифры при помощи символов подчеркивания, чтобы числа лучше читались:\n```\n@add 10_000 78;\n@call print(10078); # 10_000 -\u003e 10000\n```\n\nC точки зрения AsmX **1000** ничем не отличается от записи **10_00**. Этот вариант записи работает как для целых чисел в AsmX третьей версии и позднее.\n\n## Константы\n\n*Константа* представляет собой переменную, значение которой остаётся неизменным. В AsmX имена констант принято записывать в верхнем регистре:\n```\n@define MIN_SCORE 100\n```\n\n## Комментарии\n\nКомментарии чрезвычайно полезны в любой программе, любом языке программирования. По мере роста объёма и сложности программы следует добавлять *комментарии*, описывающие действия программы, или суть реализации. Их также можно использовать своего рода заметки, написанные на понятном языке.\n\n### Как создаются комментарии\nВ языке AsmX признаком комментария является символ решётки (**#**). ASmX игнорирует все символы, начинающиеся с символа **#** до конца строки. \nПример:\n```\n# Say hello to everyone.\n@call print(\"Hello AsmX people!\");\n```\nAsmX игнорирует первую строку и выполняет вторую:\n```\nHello AsmX people!\n```\n\n### Какие комментарии следует писать\n\nГлавная задача комменатрия - объяснить, что должен делать ваш код и как он работает. В разгаре работы над проектом вы понимаете, как работают все его компоненты. Но если вернуться к проекту через некоторое время, сокрее всего, вы забудете как работает программа. Конечно, всегда можно изучить код и разобраться, в том как программа работает, но хорошие коментарии дадут вам сэкономить время на чтение программы.\n\n**Упражнения**\n\n1. **Добавление комментариев**: выберите две программы из написанных вами и добавьте ы каждую хотя бы один комментарий. Если вы не найдете, что написать в комментариях, потому что программы были слишком просты, добавьте своё имя и текущую дату в начало кода. Затем одно предложение с описанием того что делает программа.\n\n## Итоги\n\n- В этой главе вы научились работать с переменными. \n- Вы узнали как использовать содержательные имена переменных и как исправлять ошибки в именах. \n- Вы узнали что такое строки, как выводить их. Мы рассмотрели способы аккуратного оформления вывода с применением пропусков.\n- Вы начали работать с целыми и числами с плавающей точкой. \n- Вы научились писать комментарии для программы AsmX.\n\n# Глава 3.\n# Глава 4.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fasmxfoundation%2Fasmx","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fasmxfoundation%2Fasmx","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fasmxfoundation%2Fasmx/lists"}