리얼 모드에서는 세그먼트레지스터x16에 범용 레지스터를 더해서 주소를 계산하지 않습니까?


근데 5-3의 그림을 보면


0x0000:FFFF 바로 아래 주소가 0x0001:0000이라고 되있는데 잘못된거 아닌가요?



0x0001:0000은 변환하면 0x000010인데...


0x1000:0000 이어야 0x010000가 되잖아요?




그리고 세그먼트 레지스터가 그냥 기준이 되는 주소일 뿐이고 범용은 이 기준으로 부터 64KB의 메모리 영역에 접근할 수 있게 해주는 레지스터 라고 이해해도 될까요?



그 비디오 메모리 어드레스인 경우는 0x0B8000부터 써내려가야하는데, 책에서 본 바로는... 0xB000:8000 이렇게 해서 0x8000의 범용레지스터 부터 써내려 가야하지만 

( 세그먼트를 이렇게 지정하면  0x0B8000 ~ 0x0BFFFF 까지만 접근할 수 있겠네요. 어차피 비디오 메모리 어드레스 영역이 4000Byte니  0x0B8000~0x0B8FA0의 메모리만 접근하면 되니깐 0xB000:8000으로 해도 상관은 없구요.)


0xB800:0000 으로 설정하면  범용이 0x0000부터 시작해서 비디오 메모리 어드레스의 시작이라는 느낌이 들도록 코딩할 수 있다는 말이신거죠?

또한 이 경우는 0x0B8000부터 64KB의 영역에 접근 가능하니깐 0x0B8000 ~ 0x0C7A00의 메모리 영역에 접근 할 수 있겠네요.


제가 이해한게 맞나요?


디버깅 툴로 확인해보고 싶은데 그런 툴이 있나요?