Конструкция cmp. jne. jmp - Assembler
Формулировка задачи:
Доброго времени суток. С Assembler'ом не знаком. Второй день гуглю, большую часть кода разобрал. Помогите разобраться с куском кода
Как я понял: если значение %ebx равно 2176(0x880), то мы возвращаем едиицу, в противном случае 0. Прав ли я? Вообще по логике задачи дожно быть наоборот(т.е. если равно 0x880, то возвращаем ноль), поэтому запутался немного.
Заранее спасибо
b: 81 fb 08 08 00 00 cmp $0x880,%ebx 11: 75 07 jne 1a <library+0x1a> 13: b8 01 00 00 00 mov $0x1,%eax 18: eb 05 jmp 1f <llibrary+0x1f> 1a: b8 00 00 00 00 mov $0x0,%eax 1f: 5d pop %ebp 20: c3 ret
Решение задачи: «Конструкция cmp. jne. jmp»
textual
Листинг программы
b: cmp ebx,880h; сравнили содержимое регистра ЕВХ с 880h jne 1a; если ЕВХ != 880h перходим на 1а mov eax,1; если содержимое ЕВХ равно 880h делаем еах=1 jmp 1f; безусловный переход на 1f 1a: mov eax,0; если содержимое ЕВХ не равно 880h делаем еах=0 1f: pop ebp; восстанавливаем содержимое еbp перед выходом из функции ret; выход из процедуры
Объяснение кода листинга программы
- CMP — сравнение двух значений.
- JNE — переход по адресу, указанному в операнде, если условие в предыдущем операторе CMP не выполнено.
- MOV — перенос значения из одной регистровой или мемоидной переменной в другую.
- JMP — переход на указанный адрес.
- POP — удаление значения из стека и загрузка его в регистр.
- RET — возврат из функции с указанным значением в регистре EAX.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д