Witam
Uczę się assembly w składnie at&t i próbowałem pobierać literkę (lub ciąg znaków) od użytkownika i następnie porównywać to ze znakiem przechowywanym w zmiennej. Niestety za każdym razem cmp ustawia flagę JZ = 0 więc cokolwiek podam zawsze mówi mi że znaki są różne. Co robię źle?
SYSEXIT = 1
EXIT_SUCCESS = 0
SYSREAD = 3
STDIN = 0
.text
msg: .ascii "Write text(1): \n"
msg_len = .-msg
msg2: .ascii "Rowne\n"
msg2_len = .-msg2
msg3: .ascii "Rozne\n"
msg3_len = .-msg3
#cmpTo: .ascii "aa"
#cmpTo_len = .-cmpTo
.data
buf: .ascii " "
buf_len = .-buf
cmpTo: .ascii "a"
.global _start
_start:
mov $4, %eax
mov $1, %ebx
mov $msg, %ecx
mov $msg_len, %edx
int $0x80
mov $SYSREAD, %eax
mov $STDIN, %ebx
mov $buf, %ecx
mov $buf_len, %edx
int $0x80
#mov $4, %eax
#mov $1, %ebx
#mov $buf, %ecx
#mov $buf_len, %edx
#int $0x80
mov $buf, %eax
mov $cmpTo, %ebx
cmp %eax, %ebx
jne wynik #jump if not equal
mov $4, %eax
mov $1, %ebx
mov $msg2, %ecx
mov $msg2_len, %edx
int $0x80
jmp koniec
wynik:
mov $4, %eax
mov $1, %ebx
mov $msg3, %ecx
mov $msg3_len, %edx
int $0x80
koniec:
mov $SYSEXIT, %eax
mov $EXIT_SUCCESS, %ebx
int $0x80
Może robię źle że przekazuję podany znak i znak ze zmiennej do rejestrów eax i ebx i porównuje rejestry?
Proszę o pomoc.
Pozdr!