我的脚本输入两个数字,从第一个数字中减去第二个数字并输出结果:
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在这个操作中有什么意义。
解释此问题的非常好的资源位于以下链接:
答案 0 :(得分:1)
让我们在1字节上以十六进制执行减法:
32H - 64H = 00H - 32H = CEH(二进制补码),进位位设为1
十六进制的CEH =十进制的206
所以你的观察结果是预期的结果。