使用垃圾装配Motorola 68K记录输出

时间:2014-12-16 04:25:11

标签: assembly cpu-registers motorola 68000

在记录输出时,我无法摆脱内存中的尾随垃圾。

我的D1中有一个数字n,而D2中有一个数字。

每当我记录它们时,看起来像这样:

1-20012

但我只想要1-2

我只想知道如何选择数据寄存器的某些字节并将它们放入内存中(在ds.b声明的存储中,标签结果大小为40字节)。

比如说,如果我将1存储在我的标签“result”($ 0000 2450)的起始地址中,那么'1'将只占用1个字节,所以' - '符号以及'2' ”。所以这些内容将存储在$ 0000 2450 - $ 0000 2452范围内。问题是以下字节地址包含来自先前操作的垃圾,我不允许手动清除它们。我需要开发一种方法来在运行时清除它们。

如何忽略与我的'1-2'打印一起记录的以下垃圾字节?

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

就像@Jester建议的那样,也许你应该用NUL字符终止字符串。

move.l #result,a0
move.b d1,(a0)+     ;Or maybe call a subroutine to convert from decimal?
move.b #'-',(a0)+
move.b d2,(a0)+
clr.b (a0)          ;Clear last byte.

或者如果要使用写入的字节数:

move.b #result,a0
move.b d1,(a0)+
move.b #'-',(a0)+
move.b d2,(a0)+
sub.l #result,a0    ;A0 is now the number of bytes to log.