2017-11-11 10 views
1

무엇을 의미하는지 이해할 수 없습니다. cs:ip. :의 역할은 무엇입니까?어셈블리에서 CS : IP의 의미는 무엇이며 어떻게 작동합니까?

+3

간단히 말해 구문은 'segment : offset'입니다. 이 경우 ** 코드 세그먼트 : 명령어 포인터 **. 간단한 비유는 ** chapter : verse ** 일 수 있습니다. 여기서 한 번에 하나의 장만 사용할 수 있습니다. –

+0

"이해"하는 것은 불가능합니다. x86 16b 리얼 모드 어드레싱의 논리적 특수 구문입니다. 총 주소 공간은 20 비트 큽니다. 그러나 두 개의 16 비트 값은 20b 실제 주소를 계산하는 데 사용됩니다. 일부 x86 실제 모드 주소 지정 세그먼트/오프셋 책/docs/tutorial을 검색하십시오. 이것은 완전하고 짧을 것으로 보인다 : http://thestarman.pcministry.com/asm/debug/Segments.html – Ped7g

+2

당신의 질문은 당신이 구글을 시도했는지 궁금합니다. –

답변

1

:의 역할은 무엇입니까?

두 개의 레지스터를 구분하는이 콜론은 사용되는 레지스터에 따라 다른 의미를 갖습니다.

  • 제 1 레지스터 는 세그먼트 레지스터 (CS 하나, DS, ES, FS, GS 또는 SS) 후 전체 "세그먼트 레지스터 : 오프셋 레지스터는" 경우는 표기의 위치에 대한 포인터를 나타낸다 주소 지정 가능 메모리 (1MB + HMA). 선형 주소를 계산하려면 먼저 세그먼트 레지스터의 값에 16을 곱한 다음 오프셋 레지스터에 값을 추가하십시오. 제 1 레지스터 두 개의 16 비트 범용 레지스터 (GPRS)의 조합이 나타내는 데 사용되는 다음 세그먼트 레지스터 없으면
    CS:IP, SS:SP, DS:SI, ES:DI ...

  • 포함 32 비트 숫자. 8086의 경우 아키텍처에 32 비트 레지스터가 없기 때문입니다.
    많이 볼 수있는 표기법은 DX:AX입니다. 이 값은 먼저 DX에 65536을 곱한 다음 AX에 무엇을 추가하여 계산됩니다.

내가 뭘 cs:ip 수단을 이해할 수 없습니다.

는 주어진 cs 수단 "코드 세그먼트"그 ip 수단 "명령 포인터"(이 범용 레지스터 아니다!) 조합 cs:ip는 CPU가 현재 실행할 명령들을 인출되는 위치를 나타낸다.