JMP (x86 命令語)

위키百科, 우리 모두의 百科事典.

x86 어셈블리어 에서,  JMP 命令語 는 無條件 점프를 遂行한다. 例를 들면 프로그램 카운터 의 變更을 통해 實行 흐름을 移動할 수 있다. 점프를 遂行하는 여러 種類의  命令 코드 가 있는데, 中央 處理 裝置가  리얼 모드 認知 또는  保護 모드 認知에 依存한다. 명령어들은  16비트 , 32비트 또는 세그먼트:오프셋  포인터 를 가진다. [1]

여러 種類의 점프 形式이 있다. 相對, 條件附, 絶對 그리고 間接 레지스터 점프가 그것이다.

아래의 예제들은 다음을 의미한다.

  1. 16비트 포인터를 통한 相對 점프
  2. long 점프 (세그먼트 內의), 32비트 포인터를 통한 相對 점프
  3. 그리고 EAX 레지스터를 利用한 間接 레지스터 絶對 점프

(비록 처음과 두番째 점프가 相對的이지만, 普通 옵코드 에 符號化된 相對的인 오프셋 代身에, 目的地 住所가 보인다.)

例示 1: 새 값인  0x89AB 를 IP로 로드韓 다음, CS 레지스터 에는  0xACDC  를, 그리고 IP에는  0x5578 를 로드한다.

JMP
 0x89AB

JMP
 0xACDC
:
0x5578

例示 2: 0x56789AB1 값을 IP를 로드한다. 오직 保護 모드나 언리얼 모드 에서만 可能하다.

JMP
 0x56789AB1

例示 3: EAX 레지스터에 貯藏되어 있는 값으로 점프. 오직 保護 모드에서만 可能하다.

JMP
 EAX

各州 [ 編輯 ]