Actualmente estoy en el medio de aprender a ensamblar x86 por diversión, me encanta la programación de microcontroladores, así que estoy familiarizado con el ensamblaje.Ensamblaje: utilizando el Registro de segmento de datos (DS)
Actualmente he estado buscando respuestas altas y bajas para esta pregunta, pero parece que no puedo encontrarla ... el registro DS, sé que se supone que apunta a los datos globales de mi programa, pero No sé cómo funciona exactamente. Estoy usando NASM, y en la mayoría de los programas simples que veo lo siguiente:
[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
y que funciona perfectamente (incluso si omito el código en negrita), pero ¿cómo? ¿La CPU carga automágicamente las variables globales comenzando en 0x0000? o hay algo intrínseco aquí que me estoy perdiendo?
Posible duplicado de: http://stackoverflow.com/questions/3819699/what-does-ds40207a-mean-in-assembly, http://stackoverflow.com/questions/4119504/real-mode-memory-addressing -explicacion/33581044 # 33581044 –