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 в этой операции.

Также очень хороший ресурс, который объясняет это по следующей ссылке:

http://mrjester.hapisan.com/04_MC68/Sect04Part02/Index.html

1 ответ

Решение

Выполним вычитание в шестнадцатеричном формате на 1 байт:
32H - 64H = 00H - 32H = CEH (дополнение до двух) с битом переноса, установленным в 1
CEH в шестнадцатеричном = 206 в десятичном
Таким образом, ваш наблюдаемый результат является ожидаемым.

Другие вопросы по тегам