From 49f9a68638b2648ed165c4c21df4f380aae2213b Mon Sep 17 00:00:00 2001 From: german Date: Sun, 8 Mar 2026 17:32:42 +0400 Subject: [PATCH] Assembly DOCS --- ASM.md | 43 ++++++++++++++++++++++++++++++++++++++----- OPTIONS.md | 7 ++++++- loop.asm | 3 +++ loop.exe | Bin 0 -> 13 bytes ntsys | Bin 39912 -> 39912 bytes ntsys.h | 4 +++- 6 files changed, 50 insertions(+), 7 deletions(-) create mode 100644 loop.asm create mode 100644 loop.exe diff --git a/ASM.md b/ASM.md index 99e1513..fe3367b 100644 --- a/ASM.md +++ b/ASM.md @@ -1,10 +1,43 @@ # Assemly NTSYS Это справочник по ассемблеру в **NTSYS**. Тут представлены основные комманды и описание синтаксиса. ## Операторы -Основной программной единицей является оператор. Это одно из зарезервированных слов. Названия операторов те же, что и в [BINCOM](https://gitlabor.ru/German/ntsys/src/branch/main/BINCOM.md), но в нижнем регистре. -## Метки -Метки используются для относительного перехода в любое место программы. Они состоят из алфавитно-цифровых символов, двоеточия и переноса строки: +Основной программной единицей является оператор. Это одно из зарезервированных слов. Названия операторов те же, что и в [BINCOM](https://gitlabor.ru/German/ntsys/src/branch/main/BINCOM.md), но в нижнем регистре (нижнее подчеркивание заменено точкой). Их синтаксис следующий: ```asm -имя_метки: + оператор операнд1, операнд2, ... операндN +``` +Операнды нужны для передачи данных в операторы. +## Метки +Метки используются для относительного перехода в любое место программы. Они состоят из алфавитно-цифровых символов, а также нижнего подчеркивания и знака минус, двоеточия и переноса строки: +```asm +ИмяМетки: ; ... код -``` \ No newline at end of file +``` +Для записи метки используется специальный тип данных - **db**: +```asm +main: + push db main + jmp +``` +## Комментарии +Комментарий нужен для создания пояснения к коду. Любой текст в комментарии игнорируется. +Пример: +```asm +; Это комментарий +; Это тоже +``` +## Типы данных +Основные типы данных: +- ```byte``` - 8bit без знака +- ```word``` - 16bit без знака +- ```dword``` - 32bit без знака +- ```qword``` - 64bit без знака +- ```sbyte``` - 8bit знаковый +- ```sword``` - 16bit знаковый +- ```sdword``` - 32bit знаковый +- ```sqword``` - 64bit знаковый +- Строки - [ASCIIZ-строка](https://ru.wikipedia.org/wiki/%D0%9D%D1%83%D0%BB%D1%8C-%D1%82%D0%B5%D1%80%D0%BC%D0%B8%D0%BD%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%BD%D0%B0%D1%8F_%D1%81%D1%82%D1%80%D0%BE%D0%BA%D0%B0?ysclid=mmhsfli7p5897685524) +Строки заключаются в двойные кавычки: +``` + push.string "Строка" +``` +Поддерживаются следующие управляющие символы: ```\0, \a, \b, \t, \n, \v, \f, \r, \\, \"```. diff --git a/OPTIONS.md b/OPTIONS.md index 01f7bbd..b5d40dd 100644 --- a/OPTIONS.md +++ b/OPTIONS.md @@ -4,6 +4,7 @@ - ```--asm / -a - compile assembler program``` - ```--out / -o - set output file name``` - ```--debug / -d - display debugging info``` +- ```--mem / -m - asm output memory size``` ## Опция HELP Может быть вызвана как ```--help``` или ```-h```. Эта опция выводит краткую справку. @@ -18,4 +19,8 @@ Эта опция выводит скомпилированную ассемблерную программу в файл. ## Опция DEBUG Может быть вызвана как ```--debug``` или ```-d```. -Эта опция включает режим отладчика. В этом режиме комманды будут выполняться по запросу пользователя и создавать дамп памяти. \ No newline at end of file +Эта опция включает режим отладчика. В этом режиме комманды будут выполняться по запросу пользователя и создавать дамп памяти. +## Опция MEM +Может быть вызвана как ```--mem``` или ```-m```. +Эта опция меняет размер памяти, выделяймой под программу при компиляции ассемблера. +Рекомендуется к использованию всегда. \ No newline at end of file diff --git a/loop.asm b/loop.asm new file mode 100644 index 0000000..afa0cf6 --- /dev/null +++ b/loop.asm @@ -0,0 +1,3 @@ +main: + push db main + jmp diff --git a/loop.exe b/loop.exe new file mode 100644 index 0000000000000000000000000000000000000000..f06ff6a2bcdd20ffd20ae3d24cda32b3819385f2 GIT binary patch literal 13 UcmeZ`;$vW7XkcJqVqo9}01RCLMF0Q* literal 0 HcmV?d00001 diff --git a/ntsys b/ntsys index 34d9cc14d0661e3040304fe56e221c92009c4d2f..e14ff675ab0a68c33150e92a4fa93e5777f1f3ad 100755 GIT binary patch delta 1419 zcmZvcduUTh6o+SSV_(*)ZNOEm-o@DJl5SZjQni5u3s#M_h(eWsE!t-ibv0dl1S08m+D;kGjb-+pLLIHLGT0i_tMtks_w-7=Wp7a5)g9X19nz86 zwP(M+xAQ1#ROP^gN>u&u|j`KzQ6F~4I8nGQqWKZTUN=YFG?-518 zVK4#u?i0E5gb08U?mr;PfEjR>CWP}LkprARLR16#Krh%2HiIcJ1V%=QdO_zSqJA&~ z4uOM@iJohsN2Hz*B{>0Rz@n#^AV-MW7bpmN!Di40hQI*W3x>gdFai#NwXcX`pchPm zK2X>&9<+mDa0wUzYr%f7(Y76lF``490MBv)`~w^Whrwa+H5dmIpmUr^pC&{!hP4F4 ze_=f6n&W<`kM8 z5kkC%zlc@;+IUO^(KJkSAuHKkL?qxAo7^qFRzG%>y5iWwWu{CV*ZJ5-o}U|6NF%D@ zJS@=I*)a2N^=n7zQr`7*Q~pcFiA*m}z>BQo=XJx?sT&=0wD^d6*0JEH47R@5bQ2$= z&v4VTt_I|n`!uSGJ6E(NvGL~NX`~VsXTt%Rw74JO;uhzGi&)^}BPefsnJ+76u0w8hoH zr7Vumf70UkTS&mo!wlSb75Tg1di7H6^v^rvpD%5y%)d@HsZRe&8C6&O8y5H`h_3Jr z^~HyzcCN5E-!t8d?f{N-dP0>18sv~_32c)>jRp=%yWt8Ro@u1R?gF__{c>!z=4ev~ oj*V;it;WXVzs=Shx$0%#&xNKxQ|rt)wHFv8kRB zqUoW!+=R6)^RsF-RjZAM(VU$oIv%Plu-KOFby&90=RwH%|C25BX-B5%ZP~oZ{E(=d zGdB5%$Oi_%FQEFE$P&$1C#cHnCqzNe{FEqBVXPW7f!1e4MW6~=K_6HHruP%MKriS4 ztDh5fg60=Qz2GGHT47Br{Uy;%1FFX$X1 zngHEk08~MyLx0c+_JG--7c2&SV3qDDf>EMo8Gu)00Nw^CK`$5phe5*_RtBsdC(2mH zSa5>K3HH22e^B)k{RWFaVZ!BDnXg2(U{GAH&swGT5@pJbEsIW+FrgNpHj9z^tV4S2 z!n~FdiV@W%8}MCN^@Sq)sHh%{c0DAe>q0eRr`CtL`)KEjefE?R1NN>kESW^R2u{u~ ziyUDVwHB^a3KZ#dn7K>bu&3mhvD;VY{lCPFvF64?p`EsV`Vr#?Zy3|)oyU!vrMmQY~NMeLbg)>ArGn_um$0XJC z4VfkC;Nnxr7j+}@z=c2UCAgLd*A3S!N*hyh+!2Wn$*C}B#;ATcmpI#)*Jv7EI<^Vt zGb6$k!KFtydHz!)octDyaA}x97P*S@yO85maB