글 수 461
조회 수 : 43
2019.09.30 (07:20:17)
안녕하세요.
승훈님 책으로 OS 열공 중인데요.
궁금한 점이 있어서 글 남깁니다.
책에는 비디오 메모리 어드레스는 0xB8000부터 시작한다고 되어있는데요.
어셈블리 코드를 보면 아래와 같이 0xB8000이 아닌 0xB800으로 되어있습니다.
mov ax, 0xB800
mov ds, ax
DS 레지스터에 0xB8000 값을 저장할 수 있어야 0xB8000:0x0000 이런 식으로 접근할 수 있는 것 아닌가요?
0 하나 차이가 있어서 질문드립니다.
그럼 좋은 하루 되세요!
(*.109.201.250)
2019.10.08 16:48:19 (*.63.5.231)
세그먼트:오프셋 주소 지정 방식의 실제 메모리 주소 계산법은
세그먼트 * 10 (hex) + 오프셋 입니다.
예를 들어 FFFF:0000 의 경우
FFFF * 10(hex) + 0000 = FFFF0
즉, 세그먼트:오프셋 방식으로 표현된 FFFF:0000은
실제로는 0xFFFF0 주소로 접근합니다
그러므로, 실제 메모리 주소 0xB8000에 접근하고자 하는 경우
세그먼트:오프셋 주소 지정 방식에서는 B800:0000 으로 표기하는 것이 맞습니다.
또한, 세그먼트 레지스터는 16 비트이기 때문에
0xB8000 값을 DS 레지스터에 넣을 수도 없습니다.
번호 | 제목 | 닉네임 | 조회 | 등록일 |
---|---|---|---|---|
461 | 책 구입해서 이제 시작했는데요, 빌드과정 질문이요. [5] | lance |
18 | 2019-11-30 |
460 | 갑자기 왜 전자책 판매중지인가요ㅜㅜ [1] | wezx |
76 | 2019-10-31 |
![]() |
비디오 메모리 어드레스와 DS 세그먼트 레지스터 값 차이 [1] | OSOS |
43 | 2019-09-30 |
458 | 리눅스 환경에서 개발중인데 7장에서 make error 127이 해결되지 않습니다. [4] | 전상우 |
69 | 2019-08-19 |
457 |
(12장) 매크로하고 gdt을 어떤식으로 연결시켜야하는지 모르겠습니다.
![]() ![]() |
쿠루쿠루 |
37 | 2019-07-18 |
456 | 6장에 너무 해매고 있어서 도움 요청합니다. [1] | 쿠루쿠루 |
75 | 2019-06-30 |
455 | 32비트에서 멀티태스킹 | 조주하 |
37 | 2019-07-02 |
454 | 5장 오류 문의 드립니다. [1] | 더페이퍼 |
63 | 2019-05-05 |
453 | 개발 환경 구성에 대한 문의 드립니다. | 더페이퍼 |
47 | 2019-03-27 |
452 | 링커 스크립트를 따로 배우고 싶은데 추천해 주실만한 자료나 책이 있으신가요? | 위드 |
39 | 2019-03-27 |
451 | qemu-x86_64.bat 편집 [4] | qemu |
973 | 2011-07-31 |
450 |
5장 결과 관련
![]() ![]() |
꾸멍이 |
198 | 2018-01-24 |
449 | 9장 284p 질문 [1] | 초반엔저글링 |
79 | 2018-10-06 |
448 |
4장 부트로더를 빌드하는데 오류가 납니다...
![]() ![]() |
도라에모옹 |
110 | 2018-12-15 |
447 | 하드 디스크 sata 와 pata | dfwdf88 |
50 | 2019-02-14 |
446 | make all-gcc 쳤더니 에러가 나요.ㅠㅠ | 노트북 |
40 | 2019-02-09 |
445 | 20장 뮤텍스와 관련하여... | TaPion |
55 | 2019-01-18 |
444 |
부트로더부분을 보고있습니다.
![]() ![]() |
민수짱12 |
100 | 2018-10-28 |
443 |
가상머신에서 Binutils 빌드 중 오류가 발생합니다
![]() |
구데타마 |
53 | 2018-11-10 |
442 | mint64 os usb 부팅 안됨 [3] | ChoOSMaker |
126 | 2018-09-05 |