Witam!
Chciałem napisać program który po wciśnięciu spacji wypisze znaki i się wyłączy.
Wczytywanie działało poprawnie do czasu gdy chciałem dodać wypisywanie
dodałem zmienną "textd" no i nie działało porównywanie czy została wciśnięta spacja czy inny klawisz.
Załączam kod i szczerze proszę o odpowiedź. Od razu mówie że jestem bardzo początkujący.
Pozrawiam.
segment .data
text db 0,0
;textd db "do"
segment .text
global _start
_start:
poczatek:
mov rax, 0
mov rdi, 1
mov rsi, text
mov rdx, 1
syscall
mov r9, [text]
cmp r9, 32
je tak
jmp near poczatek
tak:
;mov rax, 1
;mov rdi, 1
;mov rsi, textd
;mov rdx, 2
;syscall
mov rax, 60
syscall
EDIT:
Zacząłem eksperymentować i wyszło że jak text jest typu dq to działą, wie ktoś może dlaczego
Jeszcze raz EDIT:
Jeszcze poeksperymentowałem i wyszło:
jak jest
text dq 0
albo
text times 8 db 0
to działą ale jak zmienna ma mniej niż 8 bajtów to nie działą wie ktoś może dlaczego
Chyba ostatni EDIT:
Z dalszych eksperymentów wynika iż:
r9 był 64 bitowy i większy niż db która daje 1bajt=8bitów.
jak zmieniłem rejestr na r9b to działa jak talala.
Dziękuję i pozdrawiam. Problem rozwiązany.