Я пытался создать простую маленькую программу для паролей (для дальнейшего расширения моих знаний), и я просто не могу заставить ее работать. проблема в том, что если я ввожу правильный пароль, он не перейдет на ярлык «хорошо».
Мой способ проверки пароля состоит в том, чтобы переписать встроенный пароль с введенным пользователем, и если он возвращает 0, это означает, что они совпадают. (потому что все xor'd само по себе равно 0)
так что моя ошибка, скорее всего, в командах cmpl и je или в самом моем xoring. любая помощь была бы хороша, я просто не могу найти свою ошибку.
.section .data
hmm:
.ascii "Enter the password\n\0"
password:
.ascii "abgirl"
success:
.ascii "Password is right\n\0"
bad:
.ascii "password is wrong\n\0"
.section .bss
.equ buffer_size, 500
.lcomm buffer_data, buffer_size
.section .text
.global _start
_start:
pushl $hmm
call printf #print $hmm
movl $0, %ebx
movl $buffer_data, %ecx
movl $buffer_size, %edx
movl $3, %eax
int $0x80 #get user input
movl $password, %eax
xorl $buffer_data, %eax #xor the passwords (value stored in eax)
cmpl $0, %eax #compare
je good #jump if equal
pushl $bad
call printf #print bad pass if not equal
jmp end #jump to exit
good:
pushl $success
call printf #print $success
end:
movl $0, %ebx
movl $1, %eax
int $0x80 #cleanup and exit