_start:
jmp welcome
Это означает, что весь код ниже JMP не выполняется, особенно mov ecx, 0 (который должен быть xor ecx, ecx для более короткой инструкции)
Не начинайте с прыжка, начните с некоторого кода. JMP - это прыжок, он не возвращается после прыжка, он просто продолжает выполнение.
Так что после перехода к Welcome: вы сразу переходите к Loop:, пропуская код ecx = 0.
cmp ecx, 10
jl loop
ECX не 0, оно определенно больше 10 ч, поэтому цикл не берется.
Попробуйте это:
_start:
mov eax, 4
mov ebx, 1
mov ecx, hello
mov edx, sLength
int 80 ;prints out the string in "hello"
xor ecx,ecx ;ecx = 0
loop:
push ecx ;save loop index
mov eax, 4
mov ebx, 1
mov ecx, notDone
mov edx, nDLength
int 80 ;prints out that the loop isn't finished
pop ecx ;get loop index back in ECX
add ecx, 1 ;add one to ecx's value
cmp ecx, 10
jl loop ;if the value is not ten or more, repeat
theend: