현재 저는 재미있게 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
을하고 완벽하게 (내가 굵은 코드를 생략 할 경우에도) 작동하지만, 어떻게? CPU가 자동으로 0x0000에서 시작하는 전역 변수를로드합니까? 또는 내가 여기없는 본질적인 뭔가가 있습니까?
가능한 복제본 : http://stackoverflow.com/questions/3819699/what-does-ds40207a-mean-in-assembly, http://stackoverflow.com/questions/4119504/real-mode-memory-addressing -explanation/33581044 # 33581044 –