我已尝试各种&lt ;,< =命令退出,但它只打印一次消息。试图让它在每次迭代时打印。我已经打开了很多标签并尝试了很多,但是无法想出这个标签。
mov rax,0
mov rbx,6
WhileLoop:
Cmp rax,rbx ;loop termination condition (rax<6)
jge WhileDone ;if !<6, exit while loop
mov rdi, message2 ;print message
mov al, 0 ;print message
call printf ;print message
inc rax ;rax=rax+1
jmp WhileLoop ;next iteration
WhileDone:
答案 0 :(得分:0)
程序&#34; printf&#34;正在修改rax
或rbx
。因此,让我们在&#34; printf&#34;之前保留它们,并在&#34; printf&#34;之后恢复它们。 :
mov rax,0
mov rbx,6
WhileLoop:
Cmp rax,rbx ;loop termination condition (rax<6)
jge WhileDone ;if !<6, exit while loop
PUSH RAX
PUSH RBX
mov rdi, message2 ;print message
mov al, 0 ;print message
call printf ;print message
POP RBX
POP RAX
inc rax ;rax=rax+1
jmp WhileLoop ;next iteration
WhileDone: