使用查找表的延时流水灯8085程序。
我们将在这里学习如何使用8085实现带延时的流水灯。
问题陈述
编写8085程序,使用从内存地址8100H开始存储的字查找表实现带适当延时的流水灯显示。
讨论
模式存储在8100H地址及以后的位置。我们使用8255端口IC在LED显示器上显示内容。显示完成后,它调用延迟函数等待一段时间,然后从内存调用下一个字节进行显示。因此,显示模式如下所示:
程序
地址 | 十六进制代码 | 标签 | 助记符 | 注释 |
---|---|---|---|---|
8000 | 31, 00, 82 | START | LXI SP, 8200 H | 初始化堆栈指针 |
8003 | 0E, 15 | | MVI C, 14 H | 初始化计数器 |
8005 | 21, 00, 81 | | LXI H, 8100 H | 指向模式输入缓冲区 |
8008 | 3E, 99 | | MVI A, CW | 将控制字加载到累加器 |
800A | D3, 43 | | OUT 43 H | 将控制字输出到控制寄存器 |
800C | 7E | AGAIN | MOV A, M | 读取模式字节 |
800D | D3, 41 | | OUT 41 H | 输出到B端口 |
800F | CD, 20, 80 | | CALL DELAY | 调用延迟子程序 |
8012 | 2C | | INR L | 指向下一个位置 |
8013 | 0D | | DCR C | 递减计数器 |
8014 | C2, 0C, 80 | | JNZ AGAIN | 如果未耗尽,则再次执行 |
8017 | 76 | | HLT | 停止 |
8020 | C5 | DELAY | PUSH B | 保存B。此延迟子程序使用2个单寄存器A和D以及1个寄存器对BC |
8021 | F5 | | PUSH PSW | 保存PSW |
8022 | 16, 0F | | MVI D, 0F H | 加载外循环计数器 |
8024 | 01, 00, 10 | ST | LXI B, 1000 H | 加载内循环计数器 |
8027 | 0B | L | DCX B | 递减内循环计数器 |
8028 | 79 | | MOV A, C | 如果未耗尽,则再次执行内循环 |
8029 | B0 | | ORA B | |
802A | C2, 27, 80 | | JNZ L | |
802D | 15 | | DCR D | 递减外循环计数器 |
802E | C2, 24, 80 | | JNZ ST | 如果未耗尽,则再次执行外循环 |
8031 | F1 | | POP PSW | 恢复PSW |
8032 | C1 | | POP B | 恢复B |
8033 | C9 | | RET | 返回到调用程序 |
广告