现在,在本节中,我们将看到如何使用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小时 |
现在,我们将看到如何使用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小时 |
。 。 。 |