{"id":15060202,"url":"https://github.com/aleksandr1512/SSB---small-simple-boot","last_synced_at":"2025-07-10T22:30:46.099Z","repository":{"id":246534436,"uuid":"821409125","full_name":"aleksandr1512/SSK---small-simple-kernel","owner":"aleksandr1512","description":"It's simple kernel on NASM assembler","archived":false,"fork":false,"pushed_at":"2024-07-18T09:17:03.000Z","size":127,"stargazers_count":0,"open_issues_count":1,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2024-11-21T01:42:07.771Z","etag":null,"topics":["assembler","kernel","nasm"],"latest_commit_sha":null,"homepage":"","language":"Assembly","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/aleksandr1512.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","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":"2024-06-28T13:25:52.000Z","updated_at":"2024-07-18T09:17:06.000Z","dependencies_parsed_at":null,"dependency_job_id":"7c861783-3898-4f39-90eb-c74d37ae9b7a","html_url":"https://github.com/aleksandr1512/SSK---small-simple-kernel","commit_stats":null,"previous_names":["aleksandr1512/ssk---small-simple-kernel"],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aleksandr1512%2FSSK---small-simple-kernel","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aleksandr1512%2FSSK---small-simple-kernel/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aleksandr1512%2FSSK---small-simple-kernel/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aleksandr1512%2FSSK---small-simple-kernel/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/aleksandr1512","download_url":"https://codeload.github.com/aleksandr1512/SSK---small-simple-kernel/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":225658535,"owners_count":17503663,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["assembler","kernel","nasm"],"created_at":"2024-09-24T22:54:25.129Z","updated_at":"2025-07-10T22:30:46.093Z","avatar_url":"https://github.com/aleksandr1512.png","language":"Assembly","funding_links":[],"categories":[],"sub_categories":[],"readme":"# SSB---small-simple-boot\n## **Описание**\nЭто простейшый загрузчик на ассемблер nasm с открытым исходным кодом с помощью которого можно запускать программы без ос, или например написать свои полезные макросы которые можно будет запускать примяком из BIOS. Отличием загрузчика от остальных в том, что он предназначен не для запуска образов ОС, а для выполнения пользовательских макросов, которые можно запускать из встроенной cmd.\n\n## **Установка и использование**\nвы сразу можете запустить загрузчик(SSB/bin/boot.bin),\nили запустить через эмулятор такой как **qemu**\n\nКоманда запуска ядра через qemu:\n```bash\nqemu-system-i386 boot.bin -monitor stdio\n```\nНо функцианал выходит давольно слабым,\nЯ предлагаю скачать исходники из папки `src`, самому добавить свои макросы для выполнения,\nи в итоге скомпилировать загрузчик самому!\n\nДля начала разберёмся какие и зачем нужны файлы:\n\n`config.asm` - здесь прописаны все тексты которые появляются в системе(приветствие, прощание, приглашение в командной строке).\nТакже в этом файле есть две функции `on_start` и `always`, первая функция выполняет ваш код на ассемблере при запуске системы.\nВторая соответственно выполняет код постоянно.\n\nтакже в нём написаны все функции\nНапример:\n```assembler\ncall1_command: db \"call1\", 0\n```\nИ сам код команды:\n``` assembler\ncall1:\n\t;ваш код\n\tjmp done\n```\nФункция done обеспечивает выхот из команды/под-программы.\n\n\nЧто бы добавить свою команду написаную в config.asm нужно в метке `always` написать следуйщий код (обработчик команды):\nДля примера возьмём рание использоваемую в примере команду `call1`:\n``` assembler\n    mov ax, call1_command           \n    call check_the_input  \n\n    cmp cx, 1\n    je call1  \n```\n\nбуффером в ядре считается метка `buffer`, в неё записывается весь пользовательский ввод.\nфункция `done` отчищает `buffer`\n\nмы написали свои макросы и команды для загрузчика, перейдём к компиляции.\n\nНо перед этим давайте разберёмся в других файлах:\n`main.asm` - главный файл загрузчика.\nВ файле `drivers.asm` написаны функции для работы с прерываниями bios и функциями для работы со встроенной cmd.\n\nсписок функций:\n`print` - вывод в терминал, аргумент(текст для вывода) записывается в регистр si.\n`get_input` - получение даных от пользователя(то, что ввёл пользователь записывается в буффер input)\n`compare_strs` - сравнение строк(регистры si,bx - строки которые хотим сравнить, cx - результат сравнения, 1 - строки одинаковы, 0 - разные)\n`check_the_input` - тот же `compare_strs` но сразу сравнивает `buffer` со значением из регистра ax.\n\n\nВернёмся к компиляции и скомпилируем загрузчик:\n```\nnasm -f bin main.asm -o boot.bin\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faleksandr1512%2FSSB---small-simple-boot","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Faleksandr1512%2FSSB---small-simple-boot","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faleksandr1512%2FSSB---small-simple-boot/lists"}