8085程序:将位块从源位置移动到目标位置
问题陈述 − 将从8050H到805FH存储的16个数据块移动到从8070H到807FH的目标位置。
地址 | 十六进制代码 | 标签 | 助记符 | T状态 | 注释 |
---|---|---|---|---|---|
8000 | 21 50 80 |
START | LXI H, 8050H | 10 | 将HL寄存器对设置为源内存指针。 |
8003 | 11 70 80 |
LXI D, 8070H | 10 | 将DE寄存器对设置为目标内存指针 | |
8006 | 06 10 |
MVI B, 10H | 7 | 将B寄存器设置为计数器,计数16个字节 | |
8008 | 7E | LOOP | MOV A, M | 7 | 从源获取数据字节。 |
8009 | 12 | STAX D | 7 | 将数据字节存储到目标位置 | |
800A | 23 | INX H | 6 | 将HL指向下一个源位置 | |
800B | 13 | INX D | 6 | 将DE指向下一个目标位置 | |
800C | 05 | DCR B | 4 | 计数器减1 | |
800D | C2 08 80 |
JNZ LOOP | 10 | 如果计数器不为0,则返回传输下一个字节。 | |
8010 | 76 | HLT | 5 | 停止 | |
总共17个字节 | 总共69个T状态 |
总T状态 = T循环外 + T循环内
T循环外 = (10+10+7+5) = 32
T循环内 = ((7+7+6+6+4+10) * 16 - 3) = (40 * 16 - 3) = 637
所以总T状态 = 32 + 637 = 669
主程序从8000H – 8010H位置开始。
源数据块从8050H – 805FH。
目标块从8070H – 807FH
输入 | 输出 | ||
---|---|---|---|
地址 | 值 | 地址 | 值 |
8050H | 00 | 8070H | 00 |
8051H | 11 | 8071H | 11 |
8052H | 22 | 8072H | 22 |
8053H | 33 | 8073H | 33 |
8054H | 44 | 8074H | 44 |
8055H | 55 | 8075H | 55 |
8056H | 66 | 8076H | 66 |
8057H | 77 | 8077H | 77 |
8058H | 88 | 8078H | 88 |
8059H | 99 | 8079H | 99 |
805AH | AA | 807AH | AA |
805BH | BB | 807BH | BB |
805CH | CC | 807CH | CC |
805DH | DD | 807DH | DD |
805EH | EE | 807EH | EE |
805FH | FF | 807FH | FF |
广告