68k 汇编大值减小值

68k Assembly Subtraction small value from big value

我的脚本输入两个数字从第一个数字减去第二个数字并输出结果:

CR          EQU     [=10=]D
LF          EQU     [=10=]A

START   ORG 00   

*---------- 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    #00

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在这个操作中有什么意义

以下 link:

也很好地解释了这一点

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

让我们对 1 个字节执行十六进制减法:
32H - 64H = 00H - 32H = CEH(二进制补码)进位设置为 1
十六进制的 CEH = 十进制的 206
所以你观察到的结果是预期的。