Obecnie jestem w trakcie uczenia się zestawu x86 dla zabawy, programuje mi się mikrokontroler, więc znam montaż.Montaż: za pomocą rejestru segmentu danych (DS)
Obecnie szukam odpowiedzi na to pytanie, ale nie mogę tego znaleźć ... rejestr DS, wiem, że powinien wskazywać na globalne dane w moim programie, ale Nie wiem, jak to działa. Używam NASM, w większości prostych programów widzę następujące:
[org 0x7C00] [bits 16] main: mov ax, 0x0000 mov ds, ax mov al, [msg] mov ah, 0x0E mov bx, 0x0007 int 0x10 jmp $ msg db 'X' times 510-($-$$) db 0 dw 0xAA55
i że działa doskonale (nawet jeśli pominąć pogrubiony kod), ale w jaki sposób? Czy procesor automatycznie ładuje zmienne globalne zaczynające się od 0x0000? czy jest tu coś nieodłącznego, czego mi brakuje?
Możliwy duplikat: http://stackoverflow.com/questions/3819699/what-does-ds40207a-mean-in-assembly, http://stackoverflow.com/questions/4119504/real-mode-memory-addressing -explanation/33581044 # 33581044 –