Próbuję nauczyć assermbly (więc nosić ze mną) i dostaję błąd kompilacji na tej linii:Montaż: przemieszczanych między dwoma pamięci rozwiązuje
mov byte [t_last], [t_cur]
błąd jest
error: invalid combination of opcode and operands
Podejrzewam, że przyczyną tego błędu jest po prostu to, że nie jest możliwe, aby instrukcja mov poruszała się między dwoma adresami pamięci, ale pół godziny googlowania, a ja nie byłem w stanie tego potwierdzić - czy tak jest w tym przypadku?
Ponadto, zakładając, że mam rację to oznacza, że trzeba użyć rejestru jako punkt pośredni do kopiowania pamięci:
mov cl, [t_cur]
mov [t_last], cl
Jaka jest zalecana do korzystania z rejestru (lub powinien używać zamiast stosu)?
czasami lepiej iść do * źródła * zamiast googlowania, tutaj na przykład są instrukcje Intel 64 i IA-32 AM, gdzie można zobaczyć kombinacje operandów dla 'mov' , http://www.intel.com/Assets/PDF/manual/253666.pdf –
Istnieją wyjątki od zasady, że instrukcja nie może przyjąć dwóch argumentów pamięci; zobacz [tutaj] (http://stackoverflow.com/questions/14510280/why-cant-mov-have-business-operands-as-memory-locations?lq=1#comment20229305_14510280). – legends2k