Как проверить, является ли целое число со знаком neg или pos?

Я новичок в ассемблере x86, у меня есть целое число со знаком, сохраненное в регистре eax , и я хочу проверить, является ли число отрицательным или положительным. Для этого я использовал инструкцию bt , чтобы проверить первый бит.

Вот что я сделал:

bt eax,0
jnc isNegative

bt переносит первый бит для переноса флага, и я использовал jnc , чтобы проверить, равен ли флаг переноса 0 или 1. и я хочу проверить, является ли число отрицательным или положительным. Для этого я использовал инструкцию bt, чтобы проверить первый бит. ...

Я новичок в ассемблере x86, у меня есть целое число со знаком, сохраненное в регистре eax , и я хочу проверить, является ли число отрицательным или положительным. Для этого я использовал инструкцию bt , чтобы проверить первый бит.

Вот что я сделал:

bt eax,0
jnc isNegative

bt переносит первый бит для переноса флага, и я использовал jnc , чтобы проверить, равен ли флаг переноса 0 или 1. и я хочу проверить, является ли число отрицательным или положительным. Для этого я использовал инструкцию bt, чтобы проверить первый бит. ...

Я новичок в ассемблере x86, у меня есть целое число со знаком, сохраненное в регистре eax , и я хочу проверить, является ли число отрицательным или положительным. Для этого я использовал инструкцию bt , чтобы проверить первый бит.

Вот что я сделал:

bt eax,0
jnc isNegative

bt переносит первый бит для переноса флага, и я использовал jnc , чтобы проверить, равен ли флаг переноса 0 или 1. Если это 1, это должно быть отрицательное число и выполнять отрицательные инструкции ... однако результат непредсказуем, иногда я получаю положительный результат, и он распознает его как отрицательное число. Я что-то делаю не так?

EDIT: Я только что понял, что это может иметь какое-то отношение к порядку байтов. Фактически он проверяет последний бит вместо первого. Позвольте мне попробовать использовать bt , 7

10
задан nrz 21 September 2014 в 06:48
поделиться