From fce6aa16301d4ce117076bb1133c94685a57ef6a Mon Sep 17 00:00:00 2001 From: german Date: Sun, 8 Mar 2026 17:11:19 +0400 Subject: [PATCH] Assembly DOCS --- ASM.md | 10 ++++++++++ README.md | 6 ++++-- asm-savers.h | 2 ++ example.asm | 2 +- example.exe | Bin 0 -> 28 bytes ntsys | Bin 39912 -> 39912 bytes 6 files changed, 17 insertions(+), 3 deletions(-) create mode 100644 ASM.md create mode 100644 example.exe diff --git a/ASM.md b/ASM.md new file mode 100644 index 0000000..99e1513 --- /dev/null +++ b/ASM.md @@ -0,0 +1,10 @@ +# Assemly NTSYS +Это справочник по ассемблеру в **NTSYS**. Тут представлены основные комманды и описание синтаксиса. +## Операторы +Основной программной единицей является оператор. Это одно из зарезервированных слов. Названия операторов те же, что и в [BINCOM](https://gitlabor.ru/German/ntsys/src/branch/main/BINCOM.md), но в нижнем регистре. +## Метки +Метки используются для относительного перехода в любое место программы. Они состоят из алфавитно-цифровых символов, двоеточия и переноса строки: +```asm +имя_метки: + ; ... код +``` \ No newline at end of file diff --git a/README.md b/README.md index e61bcf1..c83ee1c 100644 --- a/README.md +++ b/README.md @@ -5,5 +5,7 @@ > Это бета-версия. Документация ещё не готова. - [Инструкция по установке](https://gitlabor.ru/German/ntsys/src/branch/main/INSTALL.md) - [Справочник по опциям](https://gitlabor.ru/German/ntsys/src/branch/main/OPTIONS.md) -- [Бинарная структура](https://gitlabor.ru/German/ntsys/src/branch/main/BINARY.md) -- [Двоичные коды комманд](https://gitlabor.ru/German/ntsys/src/branch/main/BINCOM.md) \ No newline at end of file +- [Двоичные коды комманд](https://gitlabor.ru/German/ntsys/src/branch/main/BINCOM.md) +- [Ассемблер](https://gitlabor.ru/German/ntsys/src/branch/main/ASM.md) +- [Примеры](https://gitlabor.ru/German/ntsys/src/branch/main/EXAMPLES.md) +- [Бинарная структура](https://gitlabor.ru/German/ntsys/src/branch/main/BINARY.md) \ No newline at end of file diff --git a/asm-savers.h b/asm-savers.h index 64b8a0a..3dce9ff 100644 --- a/asm-savers.h +++ b/asm-savers.h @@ -48,6 +48,7 @@ char* ntsys_get_str(char* ptr, FILE* fp) { while (i < strlen(ptr)) { if (ptr[i] == '"' && ptr[((i == 0) ? 1 : i) - 1] != '\\') {isStr = !isStr;} if ((ptr[i] == ';' || ptr[i] == '#') && isStr == 0) ptr[i] = '\0'; + if ((ptr[i] == ',') && isStr == 0) ptr[i] = ' '; i ++; } return ptr; @@ -396,6 +397,7 @@ int __ntsys_arg_function_loader(ntsys_argument_parser_t* parser) { if (select_argument(parser) == EXIT_FAILURE) return EXIT_FAILURE; } if (parser->is_rewrite == 0) *parser->file_size = ftell(parser->fp) + 1; + fflush(parser->fp); return EXIT_SUCCESS; } diff --git a/example.asm b/example.asm index cba1995..b977192 100644 --- a/example.asm +++ b/example.asm @@ -1,4 +1,4 @@ main: ; Метка main push.string "Hello, world!\n" ; Записываем строку - push byte 0x00 ; Запись номера SYSCALL + push byte, 0x00 ; Запись номера SYSCALL syscall ; Системный вызов \ No newline at end of file diff --git a/example.exe b/example.exe new file mode 100644 index 0000000000000000000000000000000000000000..0bf753d3a0e38d8ba50dcd1e7fbf3ffa54591478 GIT binary patch literal 28 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