如何解决我使用有条件的在z80 PIO中制作了一个程序,但结果不同
程序仅当输入端口A = 01H时,才使输出端口B = FFH (另一个输入,然后输出是00)
这是我的代码:
LD A,4FH
OUT (82H),A
LD A,0FH
OUT (83H),A
LOOP: IN A,(80H)
CP 01H
JR NZ,S1
LD A,00H
S1: LD A,FFH
OUT (81H),A
JP LOOP
问题是当我给输入的内容不是01时,输出仍然是FF
解决方法
由于我已经有35年没有使用Z80汇编程序了,所以我有点生疏了,但是在我看来,您好像LD A,FFH
会在输出每个循环之前使用。
考虑添加标签(S2
)并在向A
加载00H
之后跳转到该标签-您是否交换了JR NZ
逻辑?如果JR NZ
未设置CP 01H
,则Z
跳转。
LD A,4FH
OUT (82H),A
LD A,0FH
OUT (83H),A
LOOP: IN A,(80H)
CP 01H
JR NZ,S1 ; jump to S1 if 01 was not read
LD A,FFH ; we got 01,load FF
JR S2 ; ... and jump to S2
S1: LD A,00H ; will only be reached if 01 was not read
S2: OUT (81H),A
JP LOOP ; could probably be JR LOOP
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。