Какие флаги устанавливаются через 40h + 40h, когда они подписаны и не подписаны? - PullRequest
0 голосов
/ 13 сентября 2018

Для них обоих мой вывод 1000 0000 (80h). Добавление их в десятичном виде - 64 + 64 = 128. 128 находится в диапазоне, если он не подписан, вне диапазона, если он подписан.

Таким образом, для неподписанных флагов, которые должны быть установлены, это флаг переполнения (поскольку MSB является отрицательным, когда добавленные числа были положительными) и флаг знака (потому что MSB равен 1).

Для подписанного флаг переполнения должен быть снова установлен (потому что 128 выходит за пределы диапазона для 8-битного со знаком), а флаг подписи должен быть установлен в 1 из-за MSB. Флаг переноса не должен быть установлен, потому что операция переноса не произошла в битах MSB. Это правильно? Флаги для подписанных и неподписанных в этом случае должны быть одинаковыми?

1 Ответ

0 голосов
/ 13 сентября 2018

Существует только одна операция добавления, которая устанавливает флаги как для подписанного, так и для неподписанного эффекта операции.Вычитание то же самое (cmp - это просто вычитание, которое отбрасывает результат, за исключением флагов)

  • Флаг V (переполнение) фиксирует знаковое переполнение.
  • Флаг C (перенос) фиксирует переполнение без знака .
  • Флаг S (знак) фиксирует старший бит результата.
  • Z (ноль)flags устанавливается, если все биты результата равны 0.

Вот и все.Вы просматриваете различные флаги, если выполняли операции без знака или со знаком, в зависимости от того, что вы пытаетесь обнаружить.

...