Project structure
This commit is contained in:
parent
7b7e22e68f
commit
46e6ac72c3
101
EXAMPLES.md
101
EXAMPLES.md
@ -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_user.exe
BIN
hello_user.exe
Binary file not shown.
BIN
hello_world.exe
BIN
hello_world.exe
Binary file not shown.
4
project_files/.view.ini
Normal file
4
project_files/.view.ini
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
[git]
|
||||||
|
files=
|
||||||
|
names=
|
||||||
|
info=None files
|
||||||
@ -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
|
|
||||||
BIN
set_mov.exe
BIN
set_mov.exe
Binary file not shown.
Loading…
x
Reference in New Issue
Block a user