I am currently learning assembly language, and I have a program which outputs "Hello World!" :
        section .text                                                                                    
        global _start                                                                                    
_start:                                                                                                                                                                                               
        mov ebx, 1                                                                                       
        mov ecx, string                                                                                  
        mov edx, string_len                                                                              
        mov eax, 4                                                                                      
        int 0x80                                                                                                                                                                          
        mov eax, 1                                                                                       
        int 0x80                                                                                         
        section .data                                                                                    
        string db "Hello World!", 10, 0                                                                  
        string_len equ $ - string
I understand how this code works. But, now, I want to display 10 times the line. The code which I saw on the internet to loop is the following:
 mov ecx, 5
 start_loop:
 ; the code here would be executed 5 times
 loop start_loop
Problem : I tried to implement the loop on my code but it outputs an infinite loop. I also noticed that the loop needs ECX and the write function also needs ECX. What is the correct way to display 10 times my "Hello World!" ?
This is my current code (which produces infinite loop):
        section .text                                                                                    
        global _start                                                                                    
_start:                                                                                                  
        mov ecx, 10                                                                                      
myloop:                                                                                                  
        mov ebx, 1 ;file descriptor                                                                                      
        mov ecx, string                                                                                 
        mov edx, string_len                                                                             
        mov eax, 4   ; write func                                                                                    
        int 0x80                                                                                         
        loop myloop                                                                                      
        mov eax, 1   ;exit                                                                                    
        int 0x80                                                                                         
        section .data                                                                                    
        string db "Hello World!", 10, 0                                                                  
        string_len equ $ - string
Thank you very much
 
     
     
    