#assembly #microprocessors #z80
#сборка #микропроцессоры #z80
Вопрос:
Программа для создания выходного порта B = FFH, тогда и только тогда, когда входной порт A = 01H (другой ввод, а затем вывод — 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
Комментарии:
1. Что делает начальный вывод
4F
->82
и0F
->83
?
Ответ №1:
Я немного устал, так как я не использовал ассемблер Z80 35 лет, но мне кажется, что вы будете LD A,FFH
выводить каждый цикл.
Подумайте о добавлении label ( 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