0

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

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

4

1 回答 1

1

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

于 2016-02-20T21:25:26.940 回答