Project structure

This commit is contained in:
german 2026-03-20 15:01:44 +04:00
parent 7b7e22e68f
commit 46e6ac72c3
19 changed files with 105 additions and 8 deletions

View File

@ -57,4 +57,105 @@ main: ; Метка main
swap word ; Блок размером в 2 байта swap word ; Блок размером в 2 байта
push byte 0x00 ; Дескриптор push byte 0x00 ; Дескриптор
syscall ; Системный вызов syscall ; Системный вызов
```
## Запрос ввода у пользователя
```asm
global db main ; Точка входа
readmem: ; Функция чтения из памяти
push dw 0x00 ; Адрес
mread dw ; Читаем
ret ; Конец функции
insub: ; Уменьшение адреса
push dw 1 ; На сколько уменьшать
push byte 2 ; Поменять два места
swap dw ; Тип данных - size_t
sub dw ; Уменьшить
ret ; Конец функции
writemem: ; Функция записи в память
push dw 0x00 ; Адрес
mwrt dw ; Записываем
ret ; Конец функции
decrement: ; Управление данными
rcall db readmem ; Прочитать
rcall db insub ; Уменьшить
rcall db writemem ; Записать
ret ; Конец функции
main: ; Точка входа
push.string "Введите ваше имя: " ; Строка
push byte 0x00 ; Дескриптор
syscall ; Выводим
begin: ; Настройка адресов
push dw 0x02 ; Указатель
push dw 0x00 ; Адрес
mwrt dw ; Записываем
inloop: ; Цикл чтения символов
push byte 0x01 ; Дескриптор
syscall ; Читаем
copy byte ; Копируем char
push dw 0x00 ; Адрес
mread dw ; Читаем
mwrt byte ; Записываем
push dw 0x00 ; Читаем
mread dw ; Указатель
push dw 0x01 ; Увеличить
add dw ; На 1
push dw 0x00 ; Адрес
mwrt word ; Сохраняем указатель
push byte 0x0A ; Символ переноса
push db inloop ; Цикл
push byte 2 ; Кол-во слов
swap word ; Меняем их местами
neq byte ; Если не \n - повторить цикл
userhello: ; Приветствие
push.string "Привет, " ; Текст
push byte 0x00 ; Дескриптор
syscall ; Выводим
rcall db decrement ; Уменьшаем
push byte 0x00 ; Символ конца строки
readcycle: ; Цикл чтения
push db writeusername ; Конец цикла
push dw 0x00 ; Адрес
mread dw ; Указатель
push dw 0x01 ; Число
eq dw ; Если равно - выйти
push db rdecrem ; Адрес
push dw 0x00 ; Иначе
mread dw ; Читаем указатель
mread byte ; Читаем байт по указателю
push byte 0x0A ; Если символ переноса
eq byte ; Пропускаем добавление на стек
push dw 0x00 ; Иначе
mread dw ; Читаем указатель
mread byte ; Читаем байт по указателю
rdecrem: ; Уменьшение указателя
rcall db decrement ; Уменьшаем
push db readcycle ; Указатель на цикл
jmp ; Повторить цикл
writeusername: ; Выводим имя
push byte 0x00 ; Дескриптор
syscall ; Выводим
push.string "!\n" ; Выводим !
push byte 0x00 ; Дескриптор
syscall ; Выводим
``` ```

BIN
hello.exe

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
input.exe

Binary file not shown.

4
project_files/.view.ini Normal file
View File

@ -0,0 +1,4 @@
[git]
files=
names=
info=None files

View File

@ -1,8 +0,0 @@
Lorem ipsum dolor sit amet, consectetur
adipiscing elit, sed do eiusmod tempor incididunt ut
labore et dolore magna aliqua. Ut enim ad minim veniam,
quis nostrud exercitation ullamco laboris nisi ut
aliquip ex ea commodo consequat. Duis aute irure dolor
in reprehenderit in voluptate velit esse cillum dolore
eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident,
sunt in culpa qui officia deserunt mollit anim id est laborum

Binary file not shown.

BIN
swap.exe

Binary file not shown.

BIN
wait.exe

Binary file not shown.