assembly 如何在68000程序集中显示负数?

unhi4e5o  于 2023-06-23  发布在  其他
关注(0)|答案(2)|浏览(123)

我想我错过了一些东西,因为这应该很容易,但我就是不知道如何显示负数。我只是想让我的程序在溢出时输出-1,但它一直显示65535。我真的不明白负数在68 k中是如何工作的。我试着这样做:

MOVE.W   #-1,D1
MOVE     #3,D0
TRAP     #15

就像这样

MOVE.W   #1,D1
NEG      D1
MOVE     #3,D0
TRAP     #15

因此,我不确定问题是否仅在于显示负数或存储负数,或者两者都有。任何帮助是赞赏!

6mzjoqzu

6mzjoqzu1#

一般来说,除非你使用的编程语言内置了输出有符号数的方法,否则显示有符号值的正确方法是测试它们是否为负,如果是,则将它们反转并输出-。然后使用任何方法将使用无符号数字。在某些情况下,可能有必要在处理完其他所有内容之后再处理-(例如如果正在利用某些LCD控制器的能力来以从右到左的顺序处理数据,则可以以最低位数字优先的顺序输出数字,一旦具有零残差就停止,然后如果需要则输出“-”,并且最后输出足够的空白以填充字段),但是这样的事情可以通过使“输出数字”例程接受指示什么字符的参数来适应,如果有的话,应该在数字之前;然后调用者可以适当地传递“+”、“-”或“”。

polhcujo

polhcujo2#

正确的方法是:

MOVE.L   #-1,D1 
MOVE     #3,D0     Display signed number in D1.L in decimal in smallest field.
TRAP     #15

并且:

MOVE.W   #1,D1
NEG.L    D1
MOVE     #3,D0     Display signed number in D1.L in decimal in smallest field.
TRAP     #15

相关问题