Assembly 英特尔x86汇编-Can';我搞不懂循环
我尝试循环5次,并为每个循环打印“Hello World\n”。 不管我是从ecx使用jmp(jge,jle)和sub还是使用loopne,循环要么永远持续,要么根本不继续。 我不明白为什么当计数器达到零时循环不中断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
.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
。太好了,谢谢