1

我正在尝试在 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 存储/添加/输出负数。任何帮助表示赞赏,这是一个任务,所以我不期待直接的答案。谢谢!

4

0 回答 0