В настоящее время я занимаюсь сборкой x86 для удовольствия, я люблю программирование микроконтроллеров, поэтому я знаком со сборкой.
В настоящее время я искал ответ на этот вопрос все выше и ниже, но не могу найти его ... регистр DS, я знаю, что он должен указывать на глобальные данные в моей программе, но я не знаю, как это работает точно. Я использую NASM, и в большинстве простых программ я вижу следующее:
[org 0x7C00]
[bits 16]
main:
<b>mov ax, 0x0000
mov ds, ax</b>
mov al, [msg]
mov ah, 0x0E
mov bx, 0x0007
int 0x10
jmp $
msg db 'X'
times 510-($-$$) db 0
dw 0xAA55
и это прекрасно работает (даже если я опущу жирный код), но как? Загружает ли процессор автоматически глобальные переменные, начиная с 0x0000? или здесь есть что-то присущее мне, что мне не хватает?