Assembly DOCS
This commit is contained in:
parent
fce6aa1630
commit
49f9a68638
43
ASM.md
43
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
|
||||
ИмяМетки:
|
||||
; ... код
|
||||
```
|
||||
```
|
||||
Для записи метки используется специальный тип данных - **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, \\, \"```.
|
||||
|
||||
@ -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```.
|
||||
Эта опция включает режим отладчика. В этом режиме комманды будут выполняться по запросу пользователя и создавать дамп памяти.
|
||||
Эта опция включает режим отладчика. В этом режиме комманды будут выполняться по запросу пользователя и создавать дамп памяти.
|
||||
## Опция MEM
|
||||
Может быть вызвана как ```--mem``` или ```-m```.
|
||||
Эта опция меняет размер памяти, выделяймой под программу при компиляции ассемблера.
|
||||
Рекомендуется к использованию всегда.
|
||||
4
ntsys.h
4
ntsys.h
@ -84,7 +84,8 @@ static void __help(void) {
|
||||
" " "--version / -v - show version" "\n"
|
||||
" " "--asm / -a - compile assembler program" "\n"
|
||||
" " "--out / -o - set output file name" "\n"
|
||||
" " "--debug / -d - display debugging info" "\0"
|
||||
" " "--debug / -d - display debugging info" "\n"
|
||||
" " "--mem / -m - asm output memory size" "\0"
|
||||
);
|
||||
}
|
||||
static int __exe_run(__e_byte_t* memory, unsigned int memorysize, unsigned long filesize, FILE* fp, __e_byte_t debug) {
|
||||
@ -230,6 +231,7 @@ int _lib_ntsys_main(int argc, char** argv) {
|
||||
break;
|
||||
case 'm':
|
||||
mem = 1;
|
||||
mode = 'A';
|
||||
break;
|
||||
default:
|
||||
ntsys_error("Unknown option!");
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user