0

私のスクリプトは、2 つの数値を入力して、最初の数値から 2 番目の数値を減算し、結果を出力します。

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 の場合

2 番目の数値 = 100

結果は = 50

ただし、最初の数値 = 100 の場合

および 2 番目の数値 = 50

結果は 206

なんで206なの?何が起こっている?そして、この操作における256の重要性は何ですか。

これを説明する非常に優れたリソースも次のリンクにあります。

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

4

1 に答える 1

1

1 バイトで 16 進数で減算を実行しましょう:
32H - 64H = 00H - 32H = CEH (2 の補数) キャリー ビットを 16 進数で 1 CEH
= 10 進数で 206

于 2016-02-20T21:25:26.940 に答える