Сборка: Использование регистра сегмента данных (DS)

В настоящее время я нахожусь в процессе изучения сборки 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? или здесь что-то особенное, чего мне не хватает?

9
задан Ross Ridge 19 January 2016 в 23:13
поделиться