Определения знака и абсолютной величины операнда - Assembler

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

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

Прошу помочь или подсказать! Нужно написать программу для определения знака и абсолютной величины операнда, находящегося в ячейке памяти U. Знаковый бит необходимо записать в ячейке SIGN, а абсолютную величину - в ячейку ABS. Спасибо тем кто отозвался!

Решение задачи: «Определения знака и абсолютной величины операнда»

textual
Листинг программы
mov  eax,U
mov  dword ptr SIGN,0
shl  eax,1
adc  dword ptr SIGN,0  ;если U<0, то будет равно 1
mov  eax,U
cdq
xor  eax,edx
sub  eax,edx   ; eax = |U|

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

  1. mov eax,U — в регистрацию eax записывается значение переменной U.
  2. mov dword ptr SIGN,0 — в переменную SIGN записывается 0.
  3. shl eax,1 — значение в eax сдвигается вправо на 1 позицию (увеличивается на 2 в двоичной системе).
  4. adc dword ptr SIGN,0 — к переменной SIGN прибавляется 0 с учетом знака (если результат сдвига был отрицательным, то прибавляется -1).
  5. mov eax,U — в регистрацию eax снова записывается значение переменной U.
  6. cdq — в edx записывается верхний (старший) бийт значения eax (знак).
  7. xor eax,edx — в eax вычисляется абсолютное значение U путем исключающего OR со знаком U.
  8. sub eax,edx — в eax вычисляется абсолютное значение U путем вычитания значения edx (которое является знаком U) из значения eax (которое является абсолютным U).

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


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

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

9   голосов , оценка 4.111 из 5
Похожие ответы