2014-09-08 2 views
1

오늘 나는 먹는 (버거), 잠 (ZZZ), 코드 (</>), 반복 '
'의 '반복'부분에 대한 포스터를 디자인했습니다. 어셈블리 명령어 'EB'를 사용하면 "EB FE"가 같은 라인 (무한 루프)으로 점프하는 것을 알지만 "EB FB"가 나를 포스터의 시작 부분으로 다시 뛰어 넘을 것이라고 말하는 것이 맞습니까?

어떻게하면 좋을까요? 그리고 반복을하는 '더 괴상한'방법이 있습니까? ('while 루프'가 아님)x86 조립 지침

+0

이 IMO, 진수 오프셋 농담/말장난으로 작동하지 않습니다). 어쨌든, 실제 오프셋을 계산하려면 명령의 길이를 알아야하고 먹고 잠이 들지 않아야합니다. 실제 명령이 아니기 때문에 그럴 수 없습니다 :) –

+0

아, 충분히 이해할 수 있습니다. 대체품에 대한 제안 사항이 있습니까? –

+0

'EB FB'는 즉시 5 바이트 즉, -5, 즉 EB FB 다음에 다음 명령어에 대해 점프합니다. – user3405291

답변

1

EB FB은 점프 명령의 시작에 비해 3 바이트 뒤로 이동합니다.

test.asm :의 예 0xBADF00D으로 (일반 텍스트로 읽을 때 뭔가 말을하지 않는

start: 
nop 
nop 
nop 
jmp start 


C:\nasm>nasm -f bin -o test.com test.asm 
C:\nasm>ndisasm test.com 

00000000 90    nop 
00000001 90    nop 
00000002 90    nop 
00000003 EBFB    jmp short 0x0 
+0

감사합니다! 내 질문에 대답하지만 '500-internal server error'는 'eat, sleep, code'지침의 길이를 알지 못해서 얼마나 멀리 다시 점프하는지 알 수있는 방법이 없습니다. 그래서 제안은 여전히 ​​열려 있습니다. 다른 방법으로! –