Assembler #5. Подпрограмма для вывода строк
https://t.me/Torchik_RuДоброго времени суток, господа. Сегодня мы напишем подпрограмму для вывода строк на ЯП 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.