В настоящее время я нахожусь в разгаре сборки x86 для развлечения, я люблю программирование микроконтроллеров, поэтому я знаком с сборкой.Сборка: использование регистра сегмента данных (DS)
В настоящее время я ищу высокого и низкого для ответа на этот вопрос, но не могу найти его ... регистра DS, я знаю, что он должен указывать на глобальные данные в моей программе, но Я не знаю, как это работает. Я использую 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? или есть что-то внутреннее здесь, которое мне не хватает?
Возможный дубликат: http://stackoverflow.com/questions/3819699/what-does-ds40207a-mean-in-assembly, http://stackoverflow.com/questions/4119504/real-mode-memory-addressing -explanation/33581044 # 33581044 –