8085程序:带指定延时的D0位交替
现在让我们来看一个Intel 8085微处理器的程序。在这个程序中,我们将看到如何交替D0位并将其作为输出发送。
问题陈述
编写8085汇编语言程序以交替D0位,并将其作为输出发送。
讨论
交替D0位并将其作为输出发送就像生成方波一样。我们在每个阶段都增加了额外的延迟。为了用8085生成方波,我们将连续旋转10101010 (AAH),并将D0作为输出。我们将使用01H屏蔽累加器的内容。如果为0,则输出为0;如果为1,则输出为1,从而生成脉冲。发送后,它将使用延迟子程序等待一段时间。
输入
此情况下没有输入。
流程图
程序
地址 | 十六进制代码 | 标签 | 助记符 | 注释 |
---|---|---|---|---|
8000 | 16, AA | | MVI D,AAH | 将10101010加载到D中 |
8002 | 7A | ROTATE | MOV A,D | 将D加载到A中 |
8003 | 07 | | RLC | 将A左移旋转 |
8004 | 57 | | MOV D,A | 再次将A存储到D中 |
8005 | E6, 01 | | ANI 01H | 用01H屏蔽A |
8007 | D3, 10 | | OUT 10H | 将输出发送到10端口 |
8009 | CD, 0F, 80 | | CALL DELAY | 等待一段时间 |
800C | C3, 02, 80 | | JMP ROTATE | 跳转到ROTATE进行下一阶段 |
800F | C5 | DELAY | PUSH B | 保存B。此延迟子程序使用2个单寄存器A & D和1个寄存器对BC |
8010 | F5 | | PUSH PSW | 保存PSW |
8011 | 16, 0F | | MVI D, 0F H | 加载外部循环计数器 |
8013 | 01, 00, 10 | ST | LXI B, 1000 H | 加载内部循环计数器 |
8016 | 0B | L | DCX B | 递减内部计数器 |
8017 | 79 | | MOV A, C | 如果未耗尽,则再次进行内部循环 |
8018 | B0 | | ORA B | |
8019 | C2, 27, 80 | | JNZ L | |
801C | 15 | | DCR D | 递减外部计数器 |
801D | C2, 24, 80 | | JNZ ST | 如果未耗尽,则再次进行外部循环 |
8020 | F1 | | POP PSW | 恢复PSW |
8021 | C1 | | POP B | 恢复B |
8022 | C9 | | RET | 返回调用程序 |
输出
交替的D0将像方波一样反映为输出。
广告