68k Сборка Вычитание малое значение из большого значения
Мой скрипт берет два числа, вычитает второе число из первого и выдает результат:
CR EQU $0D
LF EQU $0A
START ORG $1000
*---------- Code for output ---------*
LEA MSG1,a1
MOVE.B #14,d0
TRAP #15
*---------- Code for input ---------*
MOVE.B #4,d0
TRAP #15
move.b d1,d2
*---------- Code for output ---------*
LEA MSG2,a1
MOVE.B #14,d0
TRAP #15
*---------- Code for input ---------*
MOVE.B #4,d0
TRAP #15
sub.b d2,d1
move #3,d0
trap #15
*---------- Halt Simulator ---------*
MOVE.B #9,d0
TRAP #15
* Stop execution
STOP #$2000
MSG1 DC.B 'Enter a first number: ',0
MSG2 DC.B 'Enter a second number: ',0
END START end of program with start address specified
Если первое число = 50
И второе число = 100
Результат = 50
но если первое число = 100
и второе число = 50
Результат 206
Почему это 206? что происходит? и каково значение 256 в этой операции.
Также очень хороший ресурс, который объясняет это по следующей ссылке:
1 ответ
Решение
Выполним вычитание в шестнадцатеричном формате на 1 байт:
32H - 64H = 00H - 32H = CEH (дополнение до двух) с битом переноса, установленным в 1
CEH в шестнадцатеричном = 206 в десятичном
Таким образом, ваш наблюдаемый результат является ожидаемым.