indirect jump 를 구현하기 위해서는 MASM의 습관과 관념을 버려야 합니다.
다음과 같이 별표(*)를 앞에 주어야 해당 주소를 향해 분기가 가능하겠지요.
또한 부트로더 제작시에 많이 사용하는 far long jump 는 다음과 같겠죠.
다음과 같이 별표(*)를 앞에 주어야 해당 주소를 향해 분기가 가능하겠지요.
| 코드: |
| void mz_jump(unsigned int s_IndirectAddress)
{ __asm__ volatile("jmp *%0\n\t"::"g"(s_IndirectAddress)); /* assert area */ } |
또한 부트로더 제작시에 많이 사용하는 far long jump 는 다음과 같겠죠.
| 코드: |
| ljmp $0x7c00, $0x0000 |




댓글을 달아 주세요