Конструкция cmp. jne. jmp - Assembler

Узнай цену своей работы

Формулировка задачи:

Доброго времени суток. С Assembler'ом не знаком. Второй день гуглю, большую часть кода разобрал. Помогите разобраться с куском кода
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
Как я понял: если значение %ebx равно 2176(0x880), то мы возвращаем едиицу, в противном случае 0. Прав ли я? Вообще по логике задачи дожно быть наоборот(т.е. если равно 0x880, то возвращаем ноль), поэтому запутался немного. Заранее спасибо

Решение задачи: «Конструкция 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; выход из процедуры

Объяснение кода листинга программы

  1. CMP — сравнение двух значений.
  2. JNE — переход по адресу, указанному в операнде, если условие в предыдущем операторе CMP не выполнено.
  3. MOV — перенос значения из одной регистровой или мемоидной переменной в другую.
  4. JMP — переход на указанный адрес.
  5. POP — удаление значения из стека и загрузка его в регистр.
  6. RET — возврат из функции с указанным значением в регистре EAX.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 3.929 из 5