2012-10-23 6 views
0

위의 버전의 어셈블리에서 FSM을 구현하려고하지만 취할 접근법을 모른 채 멀리 떨어져있는 것처럼 보일 수 없습니다. 밖에있는 누군가가 공유하고 싶은 구현을 가지고 있습니까?Finite State Machine in Assembly (MASM615)

내 관심사는이 특정 작업에 점프 및 루프를 사용하는 방법입니다.

또한 누가 어셈블리에서 재귀 적 "방법"을 만들 수 있는지, 그리고이 작업을 위해 잘 작동하는지 여부를 아는 사람이 있습니까?

+0

이 질문은 중복 인 경우 내가 죄송하지만 이미이 사이트에 게시 된 것과 관련이 없습니다, 그들은 매우 다른 것 같다. –

+1

도움이된다면 먼저 다른 언어로 FSM을 구현하십시오. 또한 항상 FSM을 그려야합니다. 시각적 다이어그램은 매우 유용합니다. –

+0

고마워요. 파이썬을 사용해보십시오. 어셈블리에서 재귀 사용 팁을 주시겠습니까? –

답변

1

가능한 한 데이터 기반 설계를 권장합니다. 가능한 한 데이터에서 FSM을 설명합니다.

2 차원 상태 및 다음 상태 테이블로 DFA를 구현하고이 테이블에 따라 입력을 읽고 상태를 변경하는 간단한 반복 모터를 만들었습니다.

이 테이블 (FASM) 어떻게 생겼는지입니다 :

dfa_chars  db  '=','<','>','!','/',',','*','(',')','{','}','+','-',' ',';',TAB, CR, LF; N, A 

dfa    db  $07,$04,$05,$06,$0a,$10,$11,$12,$13,$14,$15,$16,$17,$00,$18,$00,$0b,$1d,$08,$09; 0 WS 
       db  $01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$0b,$1d,$01,$01; 1 // 
       db  $02,$02,$02,$02,$02,$02,$03,$02,$02,$02,$02,$02,$02,$02,$02,$02,$02,$02,$02,$02; 2 /* 
       db  $02,$02,$02,$02,$1d,$02,$03,$02,$02,$02,$02,$02,$02,$02,$02,$02,$02,$02,$02,$02; 3 /** 
       db  $19,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20; 4 < 
       db  $1a,$21,$21,$21,$21,$21,$21,$21,$21,$21,$21,$21,$21,$21,$21,$21,$21,$21,$21,$21; 5 > 
       db  $1b,$22,$22,$22,$22,$22,$22,$22,$22,$22,$22,$22,$22,$22,$22,$22,$22,$22,$22,$22; 6 ! 
       db  $1c,$23,$23,$23,$23,$23,$23,$23,$23,$23,$23,$23,$23,$23,$23,$23,$23,$23,$23,$23; 7 = 
       db  $24,$24,$24,$24,$24,$24,$24,$24,$24,$24,$24,$24,$24,$24,$24,$24,$24,$24,$08,$24; 8 N 
       db  $25,$25,$25,$25,$25,$25,$25,$25,$25,$25,$25,$25,$25,$25,$25,$25,$25,$25,$09,$09; 9 A+N 
       db  $26,$26,$26,$26,$01,$26,$02,$26,$26,$26,$26,$26,$26,$26,$26,$26,$26,$26,$26,$26; a/
       db  $27,$27,$27,$27,$27,$27,$27,$27,$27,$27,$27,$27,$27,$27,$27,$27,$27,$1d,$27,$27; b CR