Reputation: 149
Basically, I have below assembly code:
global _start
section .bss
input: resq 100
section .data
buf: db "Input> ", 7
pas: db "password", 8
section .text
_start:
mov eax, 4
mov ecx, buf
mov edx, 7
int 0x80
mov eax, 3
mov ecx, input
mov edx, 100
int 0x80
mov cx, 50
Loop:
dec cx
mov eax, 4
mov ecx, pas
mov edx, 8
int 0x80
jnz Loop
mov eax, 1
int 0x80
I am trying to loop through 0-50 and print the variable pas
or probably buf
from input box. But this loop keeps printing pas
endlessly. I Presume the issue is the re-assignment of ecx
, but otherwise without putting my string into ecx
how would I print it? or even execute any thing within my loop at all?
Arc: Linux kali 5.2.0-kali2-amd64 #1 SMP Debian 5.2.9-2kali1 (2019-08-22) x86_64 GNU/Linux
Upvotes: 0
Views: 76
Reputation: 149
My assumption by overwriting ecx
was correct, fixed it by using push & pop
as below:
Credit goes to @Jester.
global _start
section .bss
input: resq 100
section .data
buf: db "Input> ", 7
pas: db "password", 8
section .text
_start:
mov eax, 4
mov ecx, buf
mov edx, 7
int 0x80
mov eax, 3
mov ecx, input
mov edx, 100
int 0x80
xor cx, cx
Loop:
inc cx
push cx
mov eax, 4
mov ecx, input
mov edx, 8
int 0x80
pop cx
cmp cx, 5
jne Loop
mov eax, 1
int 0x80
Upvotes: 3