Как взять модуль числа

Люди, добрые, помогите!!! Как взять модуль от числа в TASM Препод сказал: используйте btr, а как ей пользоваться - не объяснил Btr сбрасывает бит на 0. Только какие параметры у этой команды Желательно бы фрагментик программы
4 ответа

я бы использовал NEG AX. =) Синтаксис BTR:btr r16,r/m16 Bit Test and Resetbtr r32,r/m32btr $imm8,r/m16btr $imm8,r/m32Т.е. если я не ошибаюсь, а скорее всего ошибаюсь =), то поменять знак числа с отрицательного на положительное можно так: dec ax btr ax, axНе, фигня какая-то. Не до тестирования мне сейчас, извини.


хочу дополнить что бит знака это самый старший бит, если он равен 0 то число положетельное, если 1 то отрицательное, следовательно надо просто сбросить самый старший бит поэтому можно сделать так для того чтобы получить модуль числа and eax, 80000000h или and ax, 8000h для 16 бит


хочу дополнить что бит знака это самый старший бит, если он равен 0 то число положетельное, если 1 то отрицательное, следовательно надо просто сбросить самый старший бит поэтому можно сделать так для того чтобы получить модуль числа and eax, 80000000h или and ax, 8000h для 16 бит
Отрицательное число хранится в дополнительном коде, и просто заменить знаковый бит нельзя. Например, если имеем -1d = 11111111b, и обнулим старший бит - 0111111b, то получим 127d, а не 1d, как требовалось. Чтобы получить из отрицательного числа положительное, нужно инвертировать все биты числа, и к результату прибавить 1. Т.е. на примере -1d: 00000000b + 1b = 000000*** = 1d Таким же образом из положительного числа получается отрицательное . На асме можно сделать так:xor ax, 0FFFFh inc axИли воспользоваться ********* neg


Отрицательное число хранится в дополнительном коде, и просто заменить знаковый бит нельзя.
ах да, точно точно точно извините за флуд