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:
也很好地解释了这一点
让我们对 1 个字节执行十六进制减法:
32H - 64H = 00H - 32H = CEH(二进制补码)进位设置为 1
十六进制的 CEH = 十进制的 206
所以你观察到的结果是预期的。
我的脚本输入两个数字从第一个数字减去第二个数字并输出结果:
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:
也很好地解释了这一点让我们对 1 个字节执行十六进制减法:
32H - 64H = 00H - 32H = CEH(二进制补码)进位设置为 1
十六进制的 CEH = 十进制的 206
所以你观察到的结果是预期的。