版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、主講人 張毅剛 Harbin Institute of Technology 查表程序設計查表程序設計 1 2 查表程序查表程序是一種常用程序是一種常用程序, ,避免避免復雜的運算或轉(zhuǎn)換過程,可完成數(shù)據(jù)補復雜的運算或轉(zhuǎn)換過程,可完成數(shù)據(jù)補 償、修正、計算、轉(zhuǎn)換等各種功能,具有程序簡單、執(zhí)行速度快等償、修正、計算、轉(zhuǎn)換等各種功能,具有程序簡單、執(zhí)行速度快等優(yōu)點優(yōu)點。 查表查表是根據(jù)是根據(jù)自變量自變量x x,在表格,在表格尋找尋找y y,使,使y y = =f f( (x x) )。數(shù)據(jù)表格存放于。數(shù)據(jù)表格存放于程序程序 存儲器存儲器內(nèi),在執(zhí)行查表指令時,讀程序存儲器,進行查表。內(nèi),在執(zhí)行查表指令
2、時,讀程序存儲器,進行查表。 兩條兩條極為有用的查表指令如下:極為有用的查表指令如下: (1 1)MOVC MOVC A A,A+DPTRA+DPTR (2 2)MOVC MOVC A A,A+PCA+PC 查表程序設計查表程序設計 - - 概述概述 兩條指令兩條指令的功能完全相同,具體使用有差別。的功能完全相同,具體使用有差別。 指令“指令“MOVC AMOVC A,A+DPTRA+DPTR” 把把A A中內(nèi)容與中內(nèi)容與DPTRDPTR中的內(nèi)容相加中的內(nèi)容相加,結(jié)果為,結(jié)果為 某一程序存儲單元的地址,然后把該地址單元的內(nèi)容送到某一程序存儲單元的地址,然后把該地址單元的內(nèi)容送到A A中。中。
3、指令“指令“MOVC AMOVC A,A+PCA+PC” ,PCPC的內(nèi)容與的內(nèi)容與A A的內(nèi)容相加的內(nèi)容相加后所得的數(shù)作為后所得的數(shù)作為 某一程序存儲器單元的地址,根據(jù)地址取出程序存儲器相應單元中的內(nèi)容某一程序存儲器單元的地址,根據(jù)地址取出程序存儲器相應單元中的內(nèi)容 送到累加器送到累加器A A,指令執(zhí)行后,指令執(zhí)行后,PCPC的內(nèi)容不發(fā)生變化,仍指向該查表指令的的內(nèi)容不發(fā)生變化,仍指向該查表指令的 下一條下一條 3 查表程序設計查表程序設計 - - 概述概述 指令“指令“MOVC AMOVC A,A+PCA+PC”的優(yōu)缺點”的優(yōu)缺點: : 優(yōu)點:優(yōu)點:預處理較少預處理較少且不影響其他特殊功能
4、寄存器的值,不必保護其他特且不影響其他特殊功能寄存器的值,不必保護其他特 殊功能寄存器。殊功能寄存器。 缺點:缺點:在于該在于該表格只能存放在表格只能存放在這條指令這條指令的的地址地址X3X2X1X0X3X2X1X0以下以下00H00HFFHFFH之之 中,中,即只能存放在地址范圍即只能存放在地址范圍X3X2X1X0+1X3X2X1X0+1X3X2X1X0+100HX3X2X1X0+100H中,這中,這 就使得表格所在的程序空間受到了限制。就使得表格所在的程序空間受到了限制。 4 查表程序設計查表程序設計 - - 概述概述 1. 1. x x和和y y均為均為單字節(jié)數(shù)單字節(jié)數(shù)的查表程序設計的查
5、表程序設計 【例例】 設計一子程序,功能是根據(jù)累加器設計一子程序,功能是根據(jù)累加器A A中的數(shù)中的數(shù)x x(0 09 9之間)之間)查查x x的的 平方表平方表y y,根據(jù),根據(jù)x x的值查出相應的平方的值查出相應的平方y(tǒng) y。本例中的。本例中的x x和和y y均為均為單字節(jié)數(shù)單字節(jié)數(shù)。 地地 址址子程序子程序 Y3Y2Y1Y0Y3Y2Y1Y0ADDADDA A,#01H#01H Y3Y2Y1Y0+2Y3Y2Y1Y0+2MOVC MOVC A A,A+PCA+PC Y3Y2Y1Y0+3Y3Y2Y1Y0+3RETRET Y3Y2Y1Y0+4Y3Y2Y1Y0+4DB 00HDB 00H,01H01
6、H,04H04H,09H09H,10H10H DB 19HDB 19H,24H24H,31H31H,40H40H,51H51H ;數(shù)數(shù)0 09 9的平方表的平方表 5 查表程序設計查表程序設計 - -x x和和y y均為單字節(jié)數(shù)的查表程序設計均為單字節(jié)數(shù)的查表程序設計 地地 址址子程序子程序 Y3Y2Y1Y0Y3Y2Y1Y0ADDADDA A,#01H#01H Y3Y2Y1Y0+2Y3Y2Y1Y0+2MOVC MOVC A A,A+PCA+PC Y3Y2Y1Y0+3Y3Y2Y1Y0+3RETRET Y3Y2Y1Y0+4Y3Y2Y1Y0+4DB 00HDB 00H,01H01H,04H04H,0
7、9H09H,10H10H DB 19HDB 19H,24H24H,31H31H,40H40H,51H51H;數(shù)數(shù)0 09 9的平方表的平方表 第一指令“第一指令“ADD AADD A,#01H”#01H”的作用的作用是是A A中的內(nèi)容加上中的內(nèi)容加上 “01H”01H”,“,“01H” 01H” 為查表為查表 的偏移量,即查表指令與平方表之間的所有指令所占的字節(jié)數(shù)。這里的指令為的偏移量,即查表指令與平方表之間的所有指令所占的字節(jié)數(shù)。這里的指令為 “RET”RET”,為單字節(jié)指令。,為單字節(jié)指令。加上“加上“01H”01H”后,可保證后,可保證PCPC指向表首,指向表首,累加器累加器A A中原來
8、中原來 的內(nèi)容反映的僅是從表首開始向下查找多少個單元。的內(nèi)容反映的僅是從表首開始向下查找多少個單元。 在進入程序前,在進入程序前,A A的內(nèi)容在的內(nèi)容在000009H09H之間,如之間,如A A中的內(nèi)容為中的內(nèi)容為02H02H,它的平方為,它的平方為04H04H, 可根據(jù)可根據(jù)A A的內(nèi)容查出的內(nèi)容查出x x的平方。的平方。 查表程序設計查表程序設計 - -x x和和y y均為單字節(jié)數(shù)的查表程序設計均為單字節(jié)數(shù)的查表程序設計 6 由于由于 “MOVC AMOVC A,A+DPTR”A+DPTR”不必計算偏移量,不必計算偏移量,一般情況下,大多使一般情況下,大多使 用該指令。用該指令。優(yōu)點優(yōu)點是
9、表格可以設在是表格可以設在64KB64KB程序存儲器空間內(nèi)的任何地方,而不程序存儲器空間內(nèi)的任何地方,而不 像“像“MOVC AMOVC A,A+PCA+PC”那樣只設在”那樣只設在PCPC下面的下面的256256個單元中,所以使用較方個單元中,所以使用較方 便。便。 如果如果DPTRDPTR已被使用,則在查表前必須保護已被使用,則在查表前必須保護DPTRDPTR,且結(jié)束后恢復,且結(jié)束后恢復DPTRDPTR, 上例上例可改成如下形式:可改成如下形式: 7 查表程序設計查表程序設計 - -x x和和y y均為單字節(jié)數(shù)的查表程序設計均為單字節(jié)數(shù)的查表程序設計 PUSHPUSHDPH DPH ;保存
10、;保存DPHDPH PUSHPUSHDPL DPL ;保存;保存DPLDPL MOVMOVDPTRDPTR,#TAB1#TAB1 MOVCMOVCA A,A+DPTRA+DPTR POPPOPDPL DPL ;恢復;恢復DPLDPL POPPOPDPH DPH ;恢復;恢復DPHDPH RETRET TAB1TAB1:DB DB 00H00H,01H01H,04H04H,09H09H,10H10H;平方表;平方表 DB DB 19H19H,24H24H,31H31H,40H40H,51H51H 8 查表程序設計查表程序設計 - -x x和和y y均為單字節(jié)數(shù)的查表程序設計均為單字節(jié)數(shù)的查表程序
11、設計 2. 2. x x為單字節(jié)數(shù)為單字節(jié)數(shù)y y為雙字節(jié)數(shù)的查表程序設計為雙字節(jié)數(shù)的查表程序設計 實際查表中,有時實際查表中,有時x x為單字節(jié)數(shù)為單字節(jié)數(shù),y y為雙字節(jié)數(shù)為雙字節(jié)數(shù)。來看下例。來看下例。 【例例】有一巡回檢測報警裝置,需對有一巡回檢測報警裝置,需對1616路(路(x x)輸入進行檢測,每路有一個輸入進行檢測,每路有一個 最大允許值(最大允許值(y y),),為為雙字節(jié)數(shù)雙字節(jié)數(shù)。需根據(jù)測量的路數(shù)(需根據(jù)測量的路數(shù)(x x),),查表查表找出對應的找出對應的該該 路路的的最大允許值最大允許值(y y),),看輸入值是否大于最大允許值,如果大于就報警??摧斎胫凳欠翊笥谧畲笤试S
12、值,如果大于就報警。 取取路數(shù)為路數(shù)為x x(0 0x x1515),),y y為最大允許值,放在表格中。設進入查表程序為最大允許值,放在表格中。設進入查表程序 前,假設路數(shù)前,假設路數(shù)x x已放于已放于R2R2中,查表后該路的最大允許值中,查表后該路的最大允許值y y放于放于R3R4R3R4中。中。 查表程序查表程序如下:如下: 9 查表程序設計查表程序設計 - -x x和和y y均為雙字節(jié)數(shù)的查表程序設計均為雙字節(jié)數(shù)的查表程序設計 10 查表程序設計查表程序設計 - -x x和和y y均為雙字節(jié)數(shù)的查表程序設計均為雙字節(jié)數(shù)的查表程序設計 表格長度不能超過表格長度不能超過256B256B,且
13、,且表格表格只能存放于只能存放于“MOVC AMOVC A,A+PCA+PC”指令以”指令以 下的下的256256個單元中,如需把表格放在程序存儲器空間的任何地方,應使用指個單元中,如需把表格放在程序存儲器空間的任何地方,應使用指 令“令“ MOVC AMOVC A,A+DPTRA+DPTR”?!?。 【例例】以以AT89S51AT89S51為核心的溫度控制器,溫度傳感器輸出的電壓與溫度為為核心的溫度控制器,溫度傳感器輸出的電壓與溫度為 非線性關(guān)系,傳感器輸出的電壓已由非線性關(guān)系,傳感器輸出的電壓已由A/DA/D轉(zhuǎn)換為轉(zhuǎn)換為1010位二進制數(shù)。測得的不同位二進制數(shù)。測得的不同 溫度下的電壓值數(shù)據(jù)
14、構(gòu)成一個表,表中溫度值為溫度下的電壓值數(shù)據(jù)構(gòu)成一個表,表中溫度值為y y(雙字節(jié)無符號數(shù)),(雙字節(jié)無符號數(shù)),x x (雙字節(jié)無符號數(shù))為電壓值數(shù)據(jù)。設測得電壓值(雙字節(jié)無符號數(shù))為電壓值數(shù)據(jù)。設測得電壓值x x放入放入R2R3R2R3中,根據(jù)中,根據(jù)電壓電壓 值值x x,查找對應的,查找對應的溫度值溫度值y y,仍放入,仍放入R2R3R2R3中。中。 參考程序:參考程序: 11 查表程序設計查表程序設計 - -x x和和y y均為雙字節(jié)數(shù)的查表程序設計均為雙字節(jié)數(shù)的查表程序設計 12 查表程序設計查表程序設計 - -x x和和y y均為雙字節(jié)數(shù)的查表程序設計均為雙字節(jié)數(shù)的查表程序設計 由于
15、使用了指令“由于使用了指令“MOVC AMOVC A,A+DPTRA+DPTR”,表”,表TAB2TAB2可放入可放入64KB64KB程序存儲器程序存儲器 空間任何位置,表格的長度可大于空間任何位置,表格的長度可大于256B256B。 如果表格的長度超過如果表格的長度超過256B256B,且需要把表格放在,且需要把表格放在64KB64KB程序存儲器空間的任程序存儲器空間的任 何地方,且應使用指令“何地方,且應使用指令“MOVC AMOVC A,A+DPTR”A+DPTR”,并對,并對DPHDPH、DPLDPL進行運算,求進行運算,求 出表格的目的地址。出表格的目的地址。 13 查表程序設計查表
16、程序設計 - -x x和和y y均為雙字節(jié)數(shù)的查表程序設計均為雙字節(jié)數(shù)的查表程序設計 x x和和y y均為雙字節(jié)數(shù)的查表程序設計均為雙字節(jié)數(shù)的查表程序設計 下面來看一個下面來看一個x x與與y y均為雙字節(jié)數(shù)均為雙字節(jié)數(shù)的查表例子。的查表例子。 【例例】在一個以在一個以AT89S51AT89S51為核心的溫度控制器中,溫度傳感器輸出的電為核心的溫度控制器中,溫度傳感器輸出的電 壓壓x x與溫度值為非線性關(guān)系。假設溫度傳感器輸出的與溫度值為非線性關(guān)系。假設溫度傳感器輸出的電壓值電壓值x x(已由(已由A/DA/D轉(zhuǎn)換轉(zhuǎn)換 器轉(zhuǎn)換為器轉(zhuǎn)換為1010位二進制數(shù),并存入位二進制數(shù),并存入R2R3R2R3中),查找到中),查找到對應的溫度值對應的溫度值y y,仍放入,仍放入 R2R3R2R3中。溫度值表的首地址為中。溫度值表的首地址為TAB2TAB2,表中元素為,表中元素為y y(雙字節(jié)無
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年港中深經(jīng)濟刷人筆試及答案
- 2025年九陽股份校招筆試及答案
- 2025年人事有關(guān)的考試及答案
- 2025年貴陽醫(yī)療衛(wèi)生事業(yè)編考試及答案
- 2025年淮陰區(qū)教招筆試及答案
- 2025年湯陰事業(yè)編考試題庫及答案
- 2025年海南電信筆試題庫及答案
- 膳食營養(yǎng)與食品安全管理委員會制度
- 群業(yè)群建設的制度
- 數(shù)學臨界生培訓
- (2025年)上海公務員考試真題附答案
- (16區(qū)全套) 上海市16區(qū)2026屆初三一?;瘜W試卷合集(含答案)
- 肺出血-腎炎綜合征診療指南(2025年版)
- 2025年廣西民族印刷包裝集團有限公司招聘14人筆試備考試題附答案
- 2025-2026學年北京市海淀區(qū)初二(上期)期末物理試卷(含答案)
- 房產(chǎn)糾紛訴訟書范文(合集8篇)
- 攜程服務協(xié)議書
- 癲癇患者的護理研究進展
- 安全管理制度培訓課件
- 2025下半年四川綿陽市涪城區(qū)事業(yè)單位選調(diào)10人備考題庫及答案解析(奪冠系列)
- 2025年山東省專升本數(shù)學(數(shù)一)真題及答案
評論
0/150
提交評論