diff --git a/BINCOM.md b/BINCOM.md index 898795f..174e88b 100644 --- a/BINCOM.md +++ b/BINCOM.md @@ -111,4 +111,15 @@ void (*operations[])(void) = { - **MOV 0x1E** - Переключить стек (виртуальный/обычный). Формат: **0x1E** ## Функции - **CALL 0x1F** - Аналогична инструкции **JMP**, но сохраняет стек вызовов (32 элемента). Формат: **0x1F** -- **RET 0x20** - Возврат из функции. Формат: **0x20** \ No newline at end of file +- **RET 0x20** - Возврат из функции. Формат: **0x20** +## Символы +> [!NOTE] +> Инструкция **GLOBAL** нужна для обозначения точки входа. +> Это комбинация инструкций **PUSH** и **JMP**. Пример: +> ```asm +> global db main +> ; Код, не исполняемый при старте +> main: +> ; Точка входа +> ``` +- **GLOBAL** - Ассемблерная инструкция, означает метку для старта. \ No newline at end of file diff --git a/ntsys b/ntsys index 44c254a..cc1a2a7 100755 Binary files a/ntsys and b/ntsys differ diff --git a/ntsys-assembler.h b/ntsys-assembler.h index e5e88f4..e365a61 100644 --- a/ntsys-assembler.h +++ b/ntsys-assembler.h @@ -12,7 +12,7 @@ * XX - шестнадцатиричные данные */ -const size_t ntsys_command_count = 0x22; +const size_t ntsys_command_count = 0x23; char* ntsys_asm_table[] = { "push=00:T:D", @@ -56,6 +56,7 @@ char* ntsys_asm_table[] = { "set=1D", "mov=1E", + "global=00:T:D0D", "call=1F", "ret=20", diff --git a/set_mov.asm b/set_mov.asm index 6e57d05..690e092 100644 --- a/set_mov.asm +++ b/set_mov.asm @@ -1,6 +1,4 @@ -start: - push db main - jmp +global db main log: push byte 0x00