EzCode4E 查表指令的應用
我們在編程時,經常會用到查表的功能,透過尋找表格中的值來實現自己的功能。對此,Alpha的EzCode4E中,引入了查表功能,只需用一條查表指令,就可以快速尋找列表中的值。
本文介紹透過查表的方式,實現將8bit 16進位數,轉化爲10進位數。
指令說明:
Table(table_name,row_index,col_index,return_reg{,return_type})
table_name:table表的名稱。
row_index:表示y軸,即第幾行。
{常數,暫存器},0<=常數<=15,暫存器=有效暫存器
col_index:表示x軸,即第幾列。
{常數,暫存器},0<=常數<=15,暫存器=有效暫存器
return_reg:表示被儲存的回傳值
{暫存器},暫存器=有效暫存器
return_type:表示回傳值的位數,
{L,M,H},L(預設)將帶回b0~b3,M將帶回b4~b7,H將帶回b8~b9。
16進位元元數轉10進位元元表格的建立:
我們以16進位的高4位爲行,低4位元爲列,建立表格。在表格資料的bit0~3存放10進位數的個位,bit4~7存放10進位數的十位,bit8~9存放10進位數的百位,資料以16進位的形式存放。如圖1,就是用於轉換的表格。從這個表格,我們就可以根據16進位元數,透過查表指令,查詢到對應的10進位數百位,十位與個位的值。

圖1
例如:16進位數:0xa6
指令 r0=0xa,r1=6,Table(tab1,r0,r1,r2,L);其中r2=6,表示10進位的個位
r0=0xa,r1=6,Table(tab1,r0,r1,r2,M);其中r2=6,表示10進位的十位
r0=0xa,r1=6,Table(tab1,r0,r1,r2,H);其中r2=1,表示10進位的百位
指令執行內容是,查詢表中第11行,第7列,表中的值是0x166,
也就是10進位的166
編程:
1、 新增一個文檔,選擇AM4E的Body(如AM4EC010)。
2、 在Project頁面填寫Client Name即代理商名稱及相關訊息。
3、 新增voice。
4、 設定輸入口。如圖2。

圖2
5、 設定In State。如圖3。

圖3
6、 在[Table]欄內加入表格,如圖1。
7、 編寫程式。如圖4。

圖4
程式說明
程式透過觸發Pra0累加得到一個16進位元數,並用語音播放出這個數值。
再透過觸發Pra1,查表得到相對應的十進位元數,並用語音播放出這個十進位數。
播放的順序都是先高位後低位元元。
注意事項:
1. playv(r0)指令中中,r0的值不能爲0,只能是1~15。
2. 所列table表陣列最多不能超過16 x 16。
3. 所列table表裡值的範圍0~0x3ff。
4. table表中所有x軸的數目要相同。