6800编程示例


在本节中,我们将学习如何使用摩托罗拉M6800微处理器来添加多字节数字。

  • 多字节数字相加

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

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

地址

5000H
04H


.
.
.
5050H
89H
5051H
7AH
5052H
2FH
5053H
56H


.
.
.
5070H
AFH
5071H
A9H
5072H
FBH
5073H
21H


.
.
.


现在,我们编写一个程序来将这两个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

输出

地址

5000H
04H


.
.
.
5050H
89H
5051H
7AH
5052H
2FH
5053H
56H


.
.
.
5070H
AFH
5071H
A9H
5072H
FBH
5073H
21H


.
.
.
5090H
38H
5091H
24H
5092H
2BH
5093H
78H
5094H
00H


  • 块交换程序

现在我们将学习如何使用M6800微处理器交换两个不同块中每个元素的内容。

每个块中的项目数量在5000H位置给出,块位于5050H和5070H位置。

所以在交换项目之前,内存看起来像这样

地址

5000H
04H


.
.
.
5050H
89H
5051H
7AH
5052H
2FH
5053H
56H


.
.
.
5070H
AFH
5071H
A9H
5072H
FBH
5073H
21H


.
.
.


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

程序

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

      STAA $20, X
      STAB $0, X

      INX
      DEC$5000
      BNELOOP
      WAI

输出


地址

5000H
04H


.
.
.
5050H
AFH
5051H
A9H
5052H
FBH
5053H
21H


.
.
.
5070H
89H
5071H
7AH
5072H
2FH
5073H
56H


.
.
.


  • 移动数据块

让我们来看另一个M6800微处理器程序的例子。该程序用于将一个数据块移动到另一个位置。有一个假设,源和目标之间有足够的距离。所以块不重叠。基本上,块移动并非真正的移动,而是将数据复制到其他位置。

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

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

地址

5000H
04H


.
.
.
5050H
89H
5051H
7AH
5052H
2FH
5053H
56H


.
.
.


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

程序

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

      WAI

输出

地址

5000H
04H


.
.
.
5050H
89H
5051H
7AH
5052H
2FH
5053H
56H


.
.
.
5070H
89H
5071H
7AH
5072H
2FH
5073H
56H


.
.
.

更新于:2020年6月27日

634 次浏览

启动您的职业生涯

完成课程获得认证

开始
广告