0
我試圖在上述裝配版本中實現一個FSM,但似乎在不知道採取哪種方法的情況下會變得很遠。有沒有人有他們願意分享的實施?裝配中的有限狀態機(MASM615)
我主要關心的是如何在這個特定任務中使用跳轉和循環。
此外,有沒有人知道我如何可以在程序集中製作遞歸「方法」,以及這對於此任務是否能很好地工作?
我試圖在上述裝配版本中實現一個FSM,但似乎在不知道採取哪種方法的情況下會變得很遠。有沒有人有他們願意分享的實施?裝配中的有限狀態機(MASM615)
我主要關心的是如何在這個特定任務中使用跳轉和循環。
此外,有沒有人知道我如何可以在程序集中製作遞歸「方法」,以及這對於此任務是否能很好地工作?
我會建議讓您的設計儘可能以數據驅動;儘可能多地描述你的FSM數據。
我實現了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
我道歉,如果這個問題是多餘的,但我不能涉及到已經在網站上公佈的那些,他們似乎非常不同。 –
如果有幫助,請先用其他語言實施FSM。此外,總是繪製你的FSM。可視化圖表非常有用。 –
謝謝...虐待嘗試蟒蛇。你能給我一個關於在程序集中使用遞歸的技巧嗎? –