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 |
. . . |
广告