어셈블리어 루프문이 너무 떨어져 있어서...

kknd345의 이미지

하나의 PROCEDURE에서

L1:

한참 다른 내용 나오다가요

loop L1:

인 구조인데요

컴파일 하니

error : ~~ jump destination too far : by 13 byte(s)
이렇게 나오는데

어떻게 해결 해야 하나요?

명령문 몇개를 주석처리하니깐 되긴 되는데...
현재 제 코드상 명령문 이 줄어들수가 없는 상황이거든요...

hb_kim의 이미지

long jump 를 쓰세요.

serialx의 이미지

Necromancer의 이미지

loop는 short 점프만 지원합니다.
그외에도 jcxz/jecxz가 short 점프만 지원하고요.

sub명령과 je/jz 명령을 조합해서 써야겠네요.
(inc/dec를 쓴다면 Zero Flag를 안건드리기 때문에 cmp를 추가해야 합니다.)

short 점프는 넘어가는 메모리 주소 범위가 -128 ~ +127 바이트,
(점프명령 다음 명령이 시작되는 주소에서 -128 ~ +127바이트 범위 내
의 주소로만 점프가능하다는 얘깁니다)
near 점프는 1세그먼트내 모든 주소
far 점프는 세그먼트:오프셋 모두 변경됩니다.

Written By the Black Knight of Destruction