Assembly 英特尔x86汇编-Can';我搞不懂循环

Assembly 英特尔x86汇编-Can';我搞不懂循环,assembly,x86,intel,Assembly,X86,Intel,我尝试循环5次,并为每个循环打印“Hello World\n”。 不管我是从ecx使用jmp(jge,jle)和sub还是使用loopne,循环要么永远持续,要么根本不继续。 我不明白为什么当计数器达到零时循环不中断 .intel_syntax noprefix .globl main .type main, @function main: endbr64 push rbp mov ecx, 5 # set counter to 5 call

我尝试循环5次,并为每个循环打印“Hello World\n”。 不管我是从ecx使用jmp(jge,jle)和sub还是使用loopne,循环要么永远持续,要么根本不继续。 我不明白为什么当计数器达到零时循环不中断

.intel_syntax noprefix
.globl  main
.type   main, @function
main:
    endbr64
    push    rbp
    mov ecx, 5      # set counter to 5
    call looper
    pop rbp
    ret


.globl looper
.type   looper, @function
looper:

    lea rdi, str[rip]       #load the string
    call puts       #print the string each loop

    mov eax, ecx
    cmp eax, 0
    loopne looper  # dec counter and loop if counter not zero

    ret

str:
    .string "Hello World\n"

如果副本不清楚,问题是
put
覆盖
ecx
。太好了,谢谢