68k装配从大值减去小值

时间:2016-02-20 21:01:37

标签: assembly easy68k

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

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 个答案:

答案 0 :(得分:1)

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