我正在尝试在 Easy68k 中编写一个简单的程序,该程序存储为负值,将它们加在一起,然后在控制台中输出它们。我无法弄清楚如何表示负数。我们被要求采用十六进制格式并以十进制输出。一切似乎都是正确的,但价值观本身。我使用了 2s 补码,然后将这两个数字转换为十六进制。
第一个十进制数 = -102 第二个十进制数 = -87
使用 2s 补码我将这两个数字转换为十六进制(虽然我不确定这是否正确):-102 -> 1A -87 -> 29
到目前为止,这是我的代码:
addr EQU $7CE0
data1 EQU $1A
data2 EQU $29
ORG $1000
START: ; first instruction of program
* Put program code here
MOVE #data2,D1
MOVEA.W #addr,A0
ADD #data1,D1
MOVE D1,(A0)
MOVE.B #3,D0
TRAP #15
* Variables and Strings
* Put variables and constants here
END START ; last line of source
我什至尝试将负数的二进制版本直接转换为十六进制:
-102 -> 11100110 -> E6
-87 -> 11010111 -> D7
这也不起作用。我还尝试存储二进制版本并添加它们,但得到了相同的结果。
这是问题:
用汇编程序编写一个程序,将两个数字(-102 和 -87)相加。输入应为十六进制格式。将结果以十六进制形式存储在地址 $7CE0 中。以十进制打印结果。(提示:使用跟踪功能任务#3)。如果发生错误,您还应该打印出错误消息。
我知道我歪曲了这两个负数,但我就是不知道如何正确地做到这一点。我到处找,没有发现如何以 68k 存储/添加/输出负数。任何帮助表示赞赏,这是一个任务,所以我不期待直接的答案。谢谢!