Определения знака и абсолютной величины операнда - 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|
Объяснение кода листинга программы
- mov eax,U — в регистрацию eax записывается значение переменной U.
- mov dword ptr SIGN,0 — в переменную SIGN записывается 0.
- shl eax,1 — значение в eax сдвигается вправо на 1 позицию (увеличивается на 2 в двоичной системе).
- adc dword ptr SIGN,0 — к переменной SIGN прибавляется 0 с учетом знака (если результат сдвига был отрицательным, то прибавляется -1).
- mov eax,U — в регистрацию eax снова записывается значение переменной U.
- cdq — в edx записывается верхний (старший) бийт значения eax (знак).
- xor eax,edx — в eax вычисляется абсолютное значение U путем исключающего OR со знаком U.
- sub eax,edx — в eax вычисляется абсолютное значение U путем вычитания значения edx (которое является знаком U) из значения eax (которое является абсолютным U).
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д