Witam próbuje ostatnio zrobić tzw. echo w assemblerze
Na początku probowałem przy użyciu printf oraz scanf lecz niestety nie działało
extern printf
extern scanf
section .data
napis2 db "%s",10,0
napis1 db "Wpisz q zeby wyjsc",10,0
global main
main:
_petla:
mov rdi,qword napis2
xor rax,rax
call printf
mov rdi,napis2
xor rax,rax
call scanf
cmp qword[napis2],'q'
je _koniec
mov rdi,napis2
xor rax,rax
call printf
jmp _petla
_koniec:
mov eax,1
mov ebx,0
int 80h
A następnie postawiłem sprobować bez tych funkcji i wtedy już działało ale ...
Nie działało wyjście przy pomocy q oraz czasami wypisywało mi znaki/wyrazy z poprzedniej petli echa
section .data
napis1 db "%s",10,0
napis2 db "Wpisz q zeby wyjsc",10,0
napis2_dl equ $-napis2
section .bss
echo resb 32
section .text
global _start
_start:
_petla:
mov eax,4
mov ebx,1
mov ecx,napis2
mov edx,napis2_dl
int 80h
mov eax,3
mov ebx,0
mov ecx,echo
mov edx,32
int 80h
cmp ecx,"q"
je _koniec
mov eax,4
mov ebx,1
mov ecx,echo
mov edx,32
int 80h
xor rax,rax
jmp _petla
_koniec:
mov eax,1
mov ebx,0
int 80h
Byłbym bardzo wdzięczny za znalezienie błędów i pomoc w ich naprawie w obu programach :D
Z góry dzieki i pozdrawiam