Z-80中多字节数的加法
在本节中,我们将学习如何使用Zilog Z-80微处理器来进行多字节数的加法。
在这个例子中,我们使用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 |
. . . |
现在,我们正在8000H位置编写一个程序来添加这两个4字节数,并将结果存储在5090H及以后的位置。
程序
地址 | 十六进制代码 | 标签 | 助记符 | 注释 |
---|---|---|---|---|
8000 | 37 | SCF | 设置进位标志 | |
8001 | 3F | CCF | 反转进位标志 | |
8002 | 21 00 50 | LD HL, 5000H | 将5000h加载到HL寄存器对 | |
8005 | DD 21 50 50 | LD IX, 5050H | 将5050H加载到IX索引寄存器 | |
8009 | DD 7E 00 | LOOP: | LD A, (IX+0H) | 将IX+00H的内容加载到累加器A |
800C | DD 8E 20 | ADC A, (IX+20H) | 将IX+20H的内容与累加器A和进位标志相加 | |
800F | DD 77 40 | LD (IX+40H), A | 将累加器A的内容存储到IX+40H | |
8012 | DD 23 | INC IX | IX寄存器加1 | |
8014 | 35 | DEC (HL) | HL寄存器对指向的内存单元减1 | |
8015 | C2 09 80 | JP NZ, LOOP | 如果零标志为0,跳转到LOOP | |
8018 | D2 20 80 | JP NC, DONE | 如果进位标志为0,跳转到DONE | |
801B | DD 36 40 01 | LD (IX+40H), 01 | 将01H存储到IX+40H | |
801F | 76 | HALT | 程序停止 | |
8020 | DD 36 40 00 | DONE: | LD (IX+40H), 00 | 将00H存储到IX+40H |
8024 | 76 | HALT | 程序停止 |
输出
地址 | 值 |
---|---|
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 |
广告