2014-09-08 4 views
1

Сегодня я разрабатывал плакат для друга, который сказал «съесть (гамбургер), сон („ZZZ“), код (</>), повторить»
Для «повторения» части я хочу используйте инструкцию по сборке «EB», я знаю, что «EB FE» перейдет к одной линии (бесконечный цикл), но правильно ли я говорю, что «EB FB» вернет меня к началу плаката?

Если нет, то как бы я это сделал и есть ли более «прочный» способ повторения? (это не «цикл while»)x86 Инструкция по монтажу

+0

IMO, шестигранные Смещения не работают как шутка/каламбур, если они не говорят, что-то при чтении как открытый текст (как, например, в 0xBADF00D). В любом случае, чтобы вычислить реальное смещение, вам нужно будет знать длину инструкций 'eat' и' sleep', и вы не можете, так как они не являются настоящими инструкциями :) –

+0

Ах, справедливо, это имеет смысл. Любые предложения для замены? – 2014-09-08 10:32:26

+0

'EB FB' скачет назад 5 байтов, т. Е. -5, относительно следующей инструкции сразу после' EB FB' – user3405291

ответ

1

EB FB скачок 3 байта назад относительно начала инструкции перехода.

test.asm:

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-внутренняя ошибка сервера», не зная длины инструкций «есть, спать, кодировать», нет никакого способа узнать, как далеко назад прыгать. Поэтому я все еще открыт для предложений по-другому! – 2014-09-08 10:38:27

Смежные вопросы