В настоящее время я нахожусь в процессе изучения сборки x86 для развлечения, я люблю программировать микроконтроллеры, поэтому я знаком с сборкой.
В настоящее время я много и мало искал ответ на этот вопрос, но, похоже, не нашел его ... регистр DS, я знаю, что он должен указывать на глобальные данные в моей программе, но я не Я точно знаю, как это работает. Я' m с помощью NASM, и в большинстве простых программ я вижу следующее:
[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
, и это работает отлично (даже если я опущу код, выделенный жирным шрифтом), но как? Загружает ли ЦП автоматически глобальные переменные, начиная с 0x0000? или здесь что-то особенное, чего мне не хватает?