Я не знаю, каковы «обычные правила» для этой операции, но я могу рассказать вам, как я выполнял эту операцию, когда делал машинный код.
Этот метод хорошо работает, когда смещение равно половинепервое число, которое переполняет регистр.Это относится к вам, поскольку смещение составляет 128
, а 8-битный регистр переполняется на 256
.Это особенно хорошо работает, когда два числа, которые вы хотите добавить, уже находятся в формате смещения.
Метод заключается в следующем: добавьте два числа смещения, как добавление без знака и игнорируя любое переполнение, а затем перебросьте старший значащий бит.
В вашем случае вы добавляете 10000101
(5
в смещении) и 10100000
(32
в смещении).Добавление этих результатов в 00100101
, поскольку происходит переполнение наиболее значимого бита.Отражение старшего значащего бита приводит к 10100101
, который на самом деле равен 37
в формате смещения.
Этот метод может привести к переполнению, но только когда результат слишком положительный или слишком отрицательный, чтобы поместиться вформат смещения в любом случае.И в большинстве процессоров эти две операции (добавление без знака и переключение MSB) практически тривиальны.