Я новичок в языке ассемблера x86, у меня есть целое число со знаком, сохраненное в регистре eax
, и я хочу проверить, является ли число отрицательным или положительным. Для этого я использовал инструкцию bt
, чтобы проверить первый бит.
Вот что я сделал:
bt eax,0
jnc isNegative
bt
несет первый бит для флага переноса, и я использовал jnc
, чтобы проверить, равен ли флаг переноса 0 или 1.
Если это 1, это должно быть отрицательное число, и делает отрицательные инструкции ...
однако вывод непредсказуем, иногда у меня есть положительный результат, и он распознает его как отрицательное число. Я что-то не так делаю?
РЕДАКТИРОВАТЬ: Я просто понял, что это может иметь какое-то отношение к endianess. Это на самом деле проверка последнего бита вместо первого бита. Позвольте мне попробовать использовать bt
, 7