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

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

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

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

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

textual
Листинг программы
  cmp ax,bx
  jne @@else
  mov ax,cx
  cmp ax,?
  org $-2
@@else:
  mov ax,dx
@@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
Похожие ответы