2015-01-29 4 views
-2

점프를하지 않고도 "상대 점프가 범위를 벗어남"오류를 해결할 수 있습니까? 점프 범위를 늘리는 것처럼? 장거리 점프 또는 일반 16 대신 32 비트를 사용하는 것과 비슷한 것에 대해 들었습니다.상대 점프 오류 범위 초과 오류

+1

프로그래밍중인 CPU 명령어 세트는 무엇입니까? – Jerry101

+1

글쎄, 그건 [tasm] 오류가 아니며, 그 자체로는 긴 도약이 필요하다는 것을 알 수 있습니다. 당신에게'jmp long somewhere'를 사용하십시오. –

+0

'jmp long'과 같은 명령이 없습니다 .. – Aradmey

답변

0

그러나이 두 가지 유용한 해결책으로 오류를 해결했습니다. 첫 번째로 나에게 사용 된 것은 TASM.cfg입니다. TASM에서 수행하고자하는 작업은 TASM/BIN 폴더를 열고 TASM.cfg이라는 파일을 만들고 거기에 명령을 입력하십시오. 또는 그랬던 것처럼 : /jJUMPS. 그런 다음 tasm file 명령 만 보내면 자동으로 작동합니다.

두 번째 솔루션은 file.cmd입니다. 당신이 할 싶어하는 것은 거기에 다음 줄을의 TASM/BIN 폴더를 엽니 다 (더 바람직하게는 프로그램 이름과 같은 이상) file.cmd라는 이름의 파일을 생성하고 작성하는 것입니다 : 다음

/jJUMPS 
YOUR_ASM_FILENAME (WITHOUT EXTENSION) 

, 다음과 같은 명령을 전송 명령 줄에서 : tasm @file.cmd.

잘만되면 너무 많이 붙어서 점프를하고 싶지 않을 것입니다.

0

해결 방법 중 하나는 분기 타겟을 점프에 더 가깝게 놓는 것입니다. 그렇게 할 수 있다면 코드 크기가 절약되고 어셈블러는 rel16 or rel32 JCC을 사용하게됩니다.

+0

조건부 점프를 위해 rel16/rel32 인코딩을 지원하지 않는 실제 8086을 대상으로합니다. http://www.felixcloutier.com/x86/Jcc.html. 코드를 재정렬하여 짧은 점프 (rel8)로 충분하면 추가 지침 없이도 충분합니다. 그러나이 질문에 대한 좋은 대답은 아닙니다. 기껏해야 의견. –

+0

나는 내 오류를 검색했다.이 주제는 나를 도와주지 못하고, 필요로하는 사람들을 위해 내 솔루션을 공유했다. 나는 필요로했다. –

+0

미안 처음으로 너무 가혹했습니다. 맞습니다. 문제를 해결하는 한 가지 방법입니다. 그러나 당신이 대답으로 제시 한 방식은 그것이 그보다 더 나 빠졌습니다. "나는 똑같은 문제가있다"로 시작하는 대부분의 SO 응답은 전혀 답이 아니며, 잘못된 장소에 질문을 게시하는 사람들입니다. 그래서 나는 그것이 대답이었고 질문이 아니라는 것을 알았을 때 당신의 실제 답변에 대해 이미 편향되었습니다. 어쨌든, 나는 당신을 위해 좋은 SO 대답을 만드는 무언가로 청소했습니다. 사이트에 오신 것을 환영합니다. :) –