Спагетти-код – это неизбежность? - Assembler

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

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

Или я чего-то не понимаю? Простое условие "если > то" в языках, к которым я привык, это как-бы вход в условие. А в ассемблере это наоборот выход и куча перекрёстных прыжков. Т.е. условие нужно "вынести куда-нибудь", потом прыгнуть на старое место, потом прыгнуть через условие, если оно на пути. Настоящий спагетти-код. Или это как-то по-другому решается?
Листинг программы
  1. коды
  2. коды
  3. сравнение
  4. если да, то переход до УСЛ
  5. СТРМ: коды
  6. коды
  7. прыжок через условие ЧРЗ
  8. УСЛ: коды
  9. коды
  10. возврат на старое место СТРМ
  11. ЧРЗ: коды
  12. коды

Решение задачи: «Спагетти-код – это неизбежность?»

textual
Листинг программы
  1.   cmp ax,bx
  2.   jne @@else
  3.   mov ax,cx
  4.   cmp ax,?
  5.   org $-2
  6. @@else:
  7.   mov ax,dx
  8. @@continue:

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

В данном коде, написанном на языке Assembler, происходит сравнение двух переменных ax и bx. Если ax больше bx, то управление передается метке @@else. Если ax меньше или равен bx, то управление передается следующему оператору после @@continue. Вот список операций в этом коде:

  1. cmp ax, bx - сравнение переменных ax и bx
  2. jne @@else - если ax больше bx, то переход к @@else
  3. mov ax, cx - переменная ax заменяется на значение переменной cx
  4. cmp ax, ? - сравнение переменной ax с неизвестным значением (остаток кода может быть не виден)
  5. org $-2 - установка смещения в начало программы (остаток кода может быть не виден)
  6. @@else: - метка, на которую передается управление, если ax больше bx
  7. mov ax, dx - переменная ax заменяется на значение переменной dx
  8. @@continue: - метка, на которую передается управление после выполнения блока кода Пожалуйста, обратите внимание, что номера операций в списке могут не соответствовать реальным номерам в коде, поскольку код был сжат и некоторые операции могут быть объединены.

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


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

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

9   голосов , оценка 4.222 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы