Assembler #5. Подпрограмма для вывода строк


Доброго времени суток, господа. Сегодня мы напишем подпрограмму для вывода строк на ЯП ASM. Этот урок будет очень коротким и вообще он не был мною запланирован. Но я думаю, что он поможет Вам поднять Вашу квалификацию, как программиста.
Для начала я предлагаю Вам увидеть код на сегодня:

section .data
text db "Hello, World!",10,0
text2 db "World?",10,0
section .text
global _start

_start:
mov rax, text
call _print
mov rax, text2
call _print

mov rax, 60
mov rdi, 0
syscall

;input: rax as pointer to string
;output: print string at rax
_print:
push rax
mov rbx, 0

_printLoop:
inc rax
inc rbx
mov cl, [rax]
cmp cl, 0
jne _printLoop
mov rax, 1
mov rdi, 1
pop rsi
mov rdx, rbx
syscall
ret

Теперь попробуем разобраться что к чему тут.

Теперь я буду подавать Вам информацию с расчётом на то, что Вы уже знаете базис и не буду повторяться, как в предыдущих статьях.

Наша подпрограмма будет сама уметь считать длину строки. Для этого мы будем использовать rbx, именно в нём мы будем хранить её. Путём inc rax мы перемещаемся по нашей строке и при наличии в неё символа, не равного "0", увеличиваем rbx на 1.

goldvoiceitтехнологии
5
0.055 GOLOS
0
В избранное
azrael
Проект создан с целью развития навыков в сфере IT, а особенно - Кибербезопасности. Эта сфера является одной из самых важных, а значит - её нужно продвигать.
5
0

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

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

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