Cześć,
Jak w asemblerze zapisać wartość rejestru do zmiennej?
NASM wywala błąd przy
MOV zmienna, ax
Jak to inaczej zrobić?
Cześć,
Jak w asemblerze zapisać wartość rejestru do zmiennej?
NASM wywala błąd przy
MOV zmienna, ax
Jak to inaczej zrobić?
Zmienna jest konceptem wysokopoziomowym i nie ma ich bezpośrednio w Assemblerze - masz w zamian dostęp do rejestrów oraz pamięci.
No to jak zapisać wartość do pamięci i do jakich sektorów RAMu można, a w jakich jest BIOS, itp.
Jeśli ta twoja "zmienna" określa komórkę w pamięci, to NASM wymaga nawiasów kwadratowych.
MOV [zmienna], ax
Dla NASMa zmienna jest adresem. [zmienna] jest wartością w pamięci pod adresem zmienna.
W przeciwieństwie do innych asemblerów x86, składnia NASM konsekwentnie trzyma się tego rozróżnienia.
No to jak zapisać wartość do pamięci i do jakich sektorów RAMu można, a w jakich jest BIOS, itp.
Spokojnie, komputer nie pozwoli Ci arbitralnie mazać po pamięci ;-)
Na jakim systemie odpalasz swój kod?
W takim wypadku faktycznie możesz bazgrać prawie tam, gdzie Ci się podoba :-)
Lektura: Memory Map oraz Detecting Memory.
Dzięki.