Attualmente sono nel bel mezzo dell'apprendimento dell'assemblaggio x86 per divertimento, mi piace la programmazione dei microcontrollori, quindi ho familiarità con il montaggio.Assemblaggio: utilizzo del registro dei segmenti di dati (DS)
Attualmente ho cercato di alta e bassa per la risposta a questa domanda, ma non riesco a trovarlo ... il registro DS, lo so che si suppone indicare i dati globali nel mio programma, ma Non so come funzioni esattamente. Sto utilizzando NASM, e nella maggior parte dei semplici programmi che vedo il seguente:
[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
e che funziona perfettamente (anche se tralascio il codice in grassetto), ma come? La CPU carica automagicamente le variabili globali a partire da 0x0000? o c'è qualcosa di intrinseco qui che mi manca?
Possibile duplicato di: http://stackoverflow.com/questions/3819699/what-does-ds40207a-mean-in-assembly, http://stackoverflow.com/questions/4119504/real-mode-memory-addressing -esplanation/33581044 # 33581044 –