Assembler #3 Получение ввода от юзера


Доброго времени суток, господа. Добро пожаловать на 3 урок по ASM. Сегодня мы научимся получать ввод из командной строки. За основу мы возьмём наш код программы "Hello, World!". Напомню, выглядит он вот так:
image.png
Вещи, которые Вы уже знаете я опять повторять не буду, чтобы Вас не утомлять. Только отмечу , что мы будем использовать секцию .bss для выделения память под имя юзера. К тому-же мы сегодня будем активно использовать подпрограммы. Всё это Вы сможете увидеть дальше.

Для начала мы напишем ту часть кода, в которой Вы будете хорошо ориентироваться:
image.png
Теперь займёмся изучением нового. Напишем код, которой будет получать имя юзера из stdin. У нас он будет находиться в лейбле _getName, как Вы уже поняли.
_getName:
mov rax, 0
mov rdi, 0
mov rsi, name
mov rdx, 16
syscall
ret
В rax мы помещаем 0, так-как мы хотим не выводить, а получать информацию.
В rdi мы помещаем 0, тем самым указываем, что источником получения инфомации будем STDIN(ввод из консоли).
В rsi мы помещаем переменную name, для которой в секции .bss выделяли память заранее.
В rdx мы помещаем 16, количество байт, которое мы выделили в секции .bss.
Компилируем и запускаем:
nasm -f elf64 hello.asm -o hello.o
ld hello.o -o hello
./hello
Программа задала нам предсказуемый вопрос:
image.png
Пишем своё имя и получаем ответ)
image.png
Всем спасибо за внимание. До новых встреч!

технологииitитasmсофтпрограммированиеassemblerобучениеурок-3
25%
3
7
0.070 GOLOS
0
В избранное
azrael
Проект создан с целью развития навыков в сфере IT, а особенно - Кибербезопасности. Эта сфера является одной из самых важных, а значит - её нужно продвигать.
7
0

Зарегистрируйтесь, чтобы проголосовать за пост или написать комментарий

Авторы получают вознаграждение, когда пользователи голосуют за их посты. Голосующие читатели также получают вознаграждение за свои голоса.

Зарегистрироваться
Комментарии (1)
Сортировать по:
Сначала старые