есть код программы для автомата мили распознавателя с 2-х бинарным входом. Как нужно изменить программу, чтобы она могла использоваться для автомата с 3-х бинарным входом?
P1 EQU 90H
P2 EQU 0A0H
Begin:MOV A, P1 ; Считываем и заносим в аккумулятор А
ANL A, #03h ; Маскируем
MOV R1, A ; в R1
MOV A, R3 ; Внутреннее состояние в R3
ORL A, R1 ; Получаем полное входное слово
MOV R1, A ; Полное входное слово в R1
MOV R2,#0 ; Обнуляем R2 в нем выход
MOV DPTR,#TABL ; Указатель на массив констант
CLR A ; Очищаем аккумулятор
MOVC A,@A+DPTR ; Загружаем Х0(i) в А
MOV R0,A ; Х0(i) в R0
Next: MOV A, R0 ; х0(i) в A
ANL A,R1 ; Маскируем входное слово Х0(i)
MOV R0,A ; Результат в R0
CLR A ; Очищаем аккумулятор
INC DPTR ; Инкрементируем регистр указатель
MOVC A,@A+DPTR ; Загружаем ХD(i) в А
XRL A,R0 ; Сложение по модулю 2 с предыдущим ;результатом
INC DPTR ; Инкремент регистра указателя
JNZ Check ; Переход если ноль
CLR A ; Очищаем аккумулятор
MOVC A,@A+DPTR ; Загружаем Z(i)
ORL A,R2 ; Получаем выходное слово
MOV R2,A ; Сохраняем результат в R2
Check: CLR A ; Очищаем аккумулятор
INC DPTR ; Инкрементируем регистр указателя
MOVC A,@A+DPTR ; Загружаем Х0(i+1)
MOV R0,A ; Х0(i+1) в R0
JNZ Next ; Переход по нулю
MOV A,R2 ; Выход в R2
ANL A,#0CH ; Выделяем y2(t+1)y1(t+1)
MOV R3,A ; Результат в R3
MOV P2, R2 ; Выход на Р2
jmp Begin
TABL:
db 00FH,01H,04H,
db 00FH,02H,02H,
db 00FH,04H,06H,
db 00FH,05H,04H,
db 00FH,07H,00CH,
db 00FH,00DH,00EH,
db 00FH,00FH,00CH,
db 00FH,00EH,00DH, 00H
END
Страница 1 из 1
Автомат Мили - Распознователь
Поделиться темой:
Страница 1 из 1