一種匯編查表程序
作者在開發(fā)‘帶拼讀的語音示教儀’時,遇到了這樣一個要求:根據(jù)3個自變量(聲母的鍵值、韻母的鍵值、四聲鍵的鍵值)確定一個函數(shù)值(根據(jù)這三者拼出的讀音的代號),其中自變量的值,函數(shù)的值都是已知的,但它們之間沒有明確的對應(yīng)關(guān)系,另外要求判斷自變量是否有對應(yīng)的函數(shù)值,一般常規(guī)的查表法不能使用,經(jīng)過一番研究,作者自編了一個查表程序,解決了這個問題。
一、查表要求:
輸入變量:1)聲母的鍵值,2)韻母的鍵值,3)四聲鍵的鍵值(在47-50間變化)。
輸出結(jié)果:對應(yīng)的讀音的代號。
查表要求:根據(jù)輸入判斷是否有對應(yīng)值,如有,則輸出對應(yīng)代號,如沒有,則給出沒有找到的標(biāo)記。
二、查表程序:
;***************************************
;雙拼拼讀處理
;入口:2EH和2DH中分別存入拼讀的聲母和韻母,2CH中存放拼讀的四聲鍵值,
;出口:找到則返回聲音信號的序號值50H中,且06H置1
;如未找到,則06H清'0'
;R6作拼讀總數(shù)計(jì)數(shù)器
;************************************************
J_XH2:
PUSH PSW
MOV R6,#0
MOV DPTR,#J_X2
J2_LP0:
INC R6
CLR A
MOVC A,@A+DPTR
CJNE A,2EH,J2_NOTEQH ;取聲母,比較,不等則轉(zhuǎn)
INC DPTR
MOVC A,@A+DPTR
CJNE A,2DH,J2_NOTEQL ;若聲母等,則韻母,不等轉(zhuǎn)
MOV A,2CH
SUBB A,#47 ;減去47(基數(shù),使鍵值從'0'開始,0到3)
MOV R7,A ;R7作四聲鍵值記數(shù)器
J2_LOOP:
CJNE R7,#0,J2_LOOP1 ;R7中的值不為0,則轉(zhuǎn)去循環(huán)
AJMP J2_DONE
J2_LOOP1:
INC DPTR
DEC R7
AJMP J2_LOOP
J2_DONE: ;取數(shù)
INC DPTR
CLR A
評論