В общем вот код assembler для nasm
section .data
mess: db "Hello, World", 10
len: equ $ - mess ;Длина строки
section .text
_start:
mov rcx, 5
loop:
mov rax, 1
mov rdi, 1
mov rsi, mess
mov rdx, len
syscall
dec rcx
jnz loop
exit:
mov rax, 60
xor rdi, rdi ; Код возрата
syscall
И этот код должен был вывести 5 раз Hello World. Но он выдает бесконечный цикл.
Я провел один тест
global _start
section .text
_start:
mov rcx, 5
mov rdi, 0
loop:
add rdi, 1
dec rcx
jnz loop
exit:
mov rax, 60
syscall
то вывод будет:
echo $status
5
То есть цикл выполнился 5 раз. Почему первый код выдает бесконечный цикл, а второй как задумывался?