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?
@Patryk27: Bez systemu. Temu programowi musi wystarczyć BIOS :)
W takim wypadku faktycznie możesz bazgrać prawie tam, gdzie Ci się podoba :-)
Lektura: Memory Map oraz Detecting Memory.
Dzięki.