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 байта
|
||||
push byte 0x00 ; Дескриптор
|
||||
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