Ассемблер: jmpf, testb и другие инструкции

Помогите пожалуйста, я не понимаю этот код:

...
BUFFER = 0x0600
...
rep movs jmpf BUFFER+migrate, 0 ;???
migrate:
findactive:
testb dl,dl ; ???
jns nextdisk

person Glebka    schedule 30.05.2010    source источник


Ответы (2)


Я старый кодер x86. Должен признаться, я тоже не понимаю ваш код. Строка инструкции "movs" выглядит недопустимой. Вы уверены, что правильно расшифровали код?

person Ira Baxter    schedule 30.05.2010
comment
этот код может быть AVC(или AVK) - ассемблером для minix os. переведите testb в test, jmpf в jmp и movs в mov. И помогите мне понять этот код, плз. - person Glebka; 30.05.2010
comment
movs — это не то же самое, что mov, если они используют мнемонику Intel. Если это не синтаксис Microsoft, то мое лучшее предположение: [rep movs] означает повторение movs для подсчета ECX (см. Руководство по набору инструкций Intel). [jmpf BUFFER+migrate] означает переход на метку migrate + 0x600; это место не указано в вашем коде, и это довольно странно. [migrate:] и [findactive:] — это кодовые метки в инструкции testb. [testb dl,dl] означает проверку, является ли регистр [dl] знаковым/нулевым, и [jns nextdisk] переходит, если был установлен старший бит регистра [dl]. - person Ira Baxter; 31.05.2010
comment
....как-то сомневаюсь, что этот анализ вам поможет. Я думаю, что вы упустили много критического кода из этого примера. И что вы имеете в виду под может быть AVC/AVK? Либо ты знаешь, что это такое, либо нет. Если вы не знаете, что это за ассемблер, вы никогда не будете уверены, что поняли, что он говорит. - person Ira Baxter; 31.05.2010
comment
Спасибо за помощь. Я забыл название: ACK(en.wikipedia.org/wiki/Amsterdam_Compiler_Kit) - person Glebka; 31.05.2010

Это часть кода от MasterBootRecord. После копирования сектора с загрузочного диска на адрес памяти 7C00h для IBM PC необходимо скопировать этот код на новый адрес (обычно на 0600h, первая свободная память), используя rep movs, а затем продолжить безопасное выполнение, но из нового распределения jmpf BUFFER+migrate,0 (смещение jmpf, сегмент). Кто-то забыл нажать Enter после rep movs.

person Asadov Bahtiyar    schedule 01.08.2020