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

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.

Report Page