6800的编程示例

现在,在本节中,我们将看到如何使用Motorola M6800微处理器添加多字节数字。

  • 添加多字节编号

在此示例中,我们使用4字节数字(56 2F 7A 89)16和(21 FB A9 AF)16

首先,在内存中,我们存储字节计数,然后存储不同段中的数字(从最低有效字节到最高有效字节)。因此,在存储数据之后,内存结构将如下所示

地址
值
5000小时
04小时


。
。
。
5050小时
89小时
5051H
7AH
5052H
2FH
5053H
56小时


。
。
。
5070小时
美国空军
5071H
A9H
5072H
跳频
5073H
21小时


。
。
。


现在,我们正在编写一个程序,将这两个4字节数字相加并将结果存储在5090H及以后的位置。

程序

      CLC
      LDX#$5050

LOOP: LDAA $0, X
      ADCA $20, X
      STAA $40, X


      INX
      DEC$5000
      BNELOOP

      CLR$40, X
      BCCDONE
      INC$40, X
DONE: WAI

输出结果

地址
值
5000小时
04小时


。
。
。
5050小时
89小时
5051H
7AH
5052H
2FH
5053H
56小时


。
。
。
5070小时
美国空军
5071H
A9H
5072H
跳频
5073H
21小时


。
。
。
5090小时
38小时
5091H
24小时
5092H
2BH
5093H
78小时
5094H
00小时


  • BlockExchange程序

现在,我们将看到如何使用M6800微处理器交换来自两个不同块的每个元素的内容。

每个块的项目数在位置5000H处给出,而块在位置5050H和5070H处给出。

因此,在交换内存中的项目之前,看起来像这样

地址
值
 5000小时
04小时


。
。
。
5050小时
89小时
5051H
7AH
5052H
2FH
5053H
56小时


。
。
。
5070小时
美国空军
5071H
A9H
5072H
跳频
5073H
21小时


。
。
。


现在,我们正在编写一个程序来交换块内容。

程序

      LDX#$5050
     
LOOP: LDAA 0, X
      LDAB $20 X

      STAA $20, X
      STAB $0, X

      INX
      DEC$5000
      BNELOOP
      WAI

输出结果


地址
值
 5000小时
04小时


。
。
。
5050小时
美国空军
5051H
A9H
5052H
跳频
5053H
21小时


。
。
。
5070小时
89小时
5071H
7AH
5072H
2FH
5073H
56小时


。
。
。


  • 移动数据块

让我们看看M6800微处理器程序的另一个示例。这里的程序是将数据块移动到另一个位置。有一个假设,即源和目标之间有足够的距离。因此,块不重叠。基本上,块移动不是完全移动,而是将数据复制到其他位置。

块中的项目数在位置5000H处给出,而块在位置5050H处给出。

因此,在移动之前,内存中的项目看起来像这样。

地址
值
 5000小时
04小时


。
。
。
5050小时
89小时
5051H
7AH
5052H
2FH
5053H
56小时


。
。
。


现在,我们正在编写一个程序,将块内容移动到其他位置。

程序

LDX#$5050
LOOP: LDAA 0, X
STAA $20, X
INX
DEC$5000
BNELOOP

      WAI

输出结果

地址
值
 5000小时
04小时


。
。
。
5050小时
89小时
5051H
7AH
5052H
2FH
5053H
56小时


。
。
。
5070小时
89小时
5071H
7AH
5072H
2FH
5073H
56小时


。
。
。