절대주소, 세그먼트, 오프셋

Posted 2012. 10. 18. 11:39

절대주소 : 0H 부터 시작되는 실제주소

세그먼트 : 메모리의 구분을 위해 사용되는 주소

오프셋 : 세그먼트에 대한 상대주소


프로그램에 실행되면 메모리에는 프로그램 코드와 데이터.. 그 외의 여러가지 코드들이 등록된다.

그것을 모두 절대주소로만 사용하기보단 종류별로 나누어 뒀다. 나눈게 세그먼트이다.


대표적인게 CS( Code Segment ) , DS( Data Segment )

실제 데이터가 등록된 시작 주소는 DS:0000이고

프로그램 실행코드가 등록된 시작주소가 CS:0000이다.

세그먼트는 10H단위다. 데이터가 1000H부터 등록 되었다면

DS는 10H단위이므로 1000H / 10H 즉 100H가 된다.


이거의 절대주소를 구하는 방법은 DS * 10H * 오프셋 이다.


세그먼트 : 오프셋으로 가질 수 있는 최대값은 16^6 = 2^20 = 1MEGA이다.


컴퓨터 설계될때 그렇게 정해져 있다.


세그먼트는 프로그램 실행시 모두 정해지며 오프셋으로 해당 위치를 찾는다.

오프셋은 음수를 가질수 없다. 세그먼트도 마찬가지 이다.



이게 왠 어셈블리어...