크리에이티브 커먼즈 라이센스

홈페이지HOME

PHP

JavaScript

HTML

CSS

드롭다운메뉴

제로보드4

도   움   말

백지 건강강좌/자가임상체험

물박사(자가면역질환...)^미러

전동명(천연물질사전)^미러

竹田 장승옥(블로그)^글목록

계산환산(계산기)^ 단위변환

관주성경 TTS 일반파일 TTS

바이블로 Bible_ro 다운로드

다운로드>폰에 복사
>파일선택...설치됩니다.

[도움말 보기] 바로가기

개선 요구, 충고는
아래 관리자 연락
전화/메일 부탁 드립니다.
최대한 빨리 처리하고
업데이트 올리겠습니다.


asm_79.


세그먼트, 오프셋


     21 이형문 buju8t 12/28 1143

     3 세그먼트,세그먼트 베이스,오프셋이란



 이형문 (buju8t  )

세그먼트,세그먼트 베이스,오프셋이란  12/28

13:57 46 line


세그먼트에 대해 알아 봅시다.






8086은 1M 바이트 까지 메모리를 취급할 수  있읍니다.

1M바이트의 메모리에는 0 번지로 부터 번지가 붙여져 있으므로 번지 값은

16진수로 0H -- 0FFFFFH ,2진수로는 0B -- 11111111111111111111B 까지의

값이 됩니다. 그러므로 번지 데이터는 20비트가 필요합니다.

그러나,8086의 레지스터는 모두 16비트의

크기 밖에 없으므로 이것

가지고는 20 비트의 번지를 나타낼 수가 없읍니다.그 때문에 8086 에서는

2개의 레지스터를 조합시켜 20비트의 번지를 나타내고 있읍니다.

16비트 레지스터로는 4자리 까지의 값밖에 나타내지 못하므로 20

비트

를 나타내기 위해서는 16진수로 5자리가 필요합니다 .

 즉, 2개의 레지스터를1자리수 만큼 비켜서 사용하면 되겠지요?


 2000 H  세그먼트

베이스

 +  3456H + 오프셋

번지

------------  -----------------

23456H 물

리 번 지






이때 상위 4자리의 값(여기선,2000H)을 지정하는 목적으로 사용되는 것이

세그먼트 레지스터입니다.하위 네자리(오프셋 번지)는 IP(명령을 읽어낼 때)

나,BX,SI

(데이터를 읽고 쓸 때)라는 레지스터로 지정됩니다.

이때, 세그먼트 레지스터는 2000H 라는 값을 가지는 데,실제로는 물리

(physical)번지의 2000H 를 가리키고 있읍니다.

 이번지를 세그먼트 베이스라  부르고 다른 레지스터에 의해 나타내는

3456H라는 값을 오프셋 번지라고 합니다.

 오프셋이란 어떤 기준번지로부터의 변위(차이)를 나타냅니다.


 메모리

 

 0H

+-----+

 

세그먼트 베이스  20000H  ---> +-----+

 

 오프셋 번지  3456H  ---> +-  ----+---->23456H

물리 번지

(세그먼트베이스와의 차이)  


같은 번지를 나타내는 방법으로는 여러 가지가 있읍니다.

앞번지를 다음과 같이 나타낼 수 있읍니다.






8086에서는 세그먼트 레지스터의 값을 한번 설정해 놓으면

- 보통

프로 그램이나 데이터의 크기가 64KB를 넘는 일은 거의 없으므로 -

세그먼트 베이스로 부터 64KB 이내의 번지는 오프셋 번지만 지정하면

자동적으로 세그먼트 레지스터의 값을 더하여 번지가 계산됩니다.


세그먼트란 세그먼트 레지스터에 의해 표현되는 세그먼트 베이스의

값을

기준으로한 ,64KB의 범위를 말합니다.



ID:
PW:

     0 분
     1 분

자유게시판

건강백과 HOME

홈페이지 HOME

조   약     HOME

생활지혜 HOME

서식양식 HOME

법원 전산양식 검색

In Na zum

비공개 HOME

백과넷 포탈 : 건강/법률(메인)/홈피/서식/조약/생활지혜

◁ 2002.9.1.~2021.4.11. ▷

관리자 연락(저작권 의심 신고) : 김병희 010-6204-4973 k8z7@hanmail.net