near jumpfar jumpshort jump애대해 이해가안가고그에대한 주소를찾는것도이해가안가용go: 0000 mov ah 20h0003 cmp ah 20h jz gogo애서점프하면 go주소가 어캐되영
음. near/far의 개념은 동일 세그먼트 내인지 밖인지의 개념이야. 포인터가 동일 세그먼트 내의 오프셋을 가리키면 NEAR, 타 세그먼트 내의 오프셋을 가리킬 수 있는 full address (segment:offset) 면 FAR지.
16비트에선 저 구분이 중요했는데, 세그먼트가 그냥 인덱스로 전락한 32비트 이상에선 특수한 용도로만 씀. FAR를 말야.
32비트 이상에선 cs 값 안 바꾸고 점프는 near jump, cs 값까지 바꾸며 새로운 주소로 jmp가 far jump야.
학교에서배우는건 16빝기준인거같아서. 32비트는 너무발달된게많다고 ㅋ
그리고 short jump는 near jump에서 점프할 위치가 1바이트로 표현할 수 있는 범위인 +-127 내에 있는 경우에 쓰는 2바이트 점프 명령어임.
혹시1바이트인지 2바이트인지 어캐구분하나영?
opcode가 달라. near jmp는 E9, far jmp는 EA, short jmp는 EB, call은 E8 코드로 기억함.
인텔 기계어 중에서 외우고 있으면 편한 기계어가 E9, EB, EA, E8, C3, C2, CC, CD, 90, 66 이렇게 된다.