已閱讀5頁,還剩24頁未讀, 繼續(xù)免費閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1 查表程序設(shè)計,查表程序是一種常用程序, 它廣泛使用于 LED顯示控制、 打印機打印控制、數(shù)據(jù)補償、數(shù)值計算、轉(zhuǎn)換等功能程序中, 這類程序具有簡單、執(zhí)行速度快等特點。 所謂查表法, 就是預(yù)先將滿足一定精度要求的表示變量與函數(shù)值之間關(guān)系的一張表求出, 然后把這張表存于單片機的程序存儲器中, 這時自變量值為單元地址, 相應(yīng)的函數(shù)值為該地址單元中的內(nèi)容。查表, 就是根據(jù)變量 X在表格中查找對應(yīng)的函數(shù)值 Y, 使 Y=f(X)。,MCS - 51指令系統(tǒng)中, 有兩條查表指令: MOVC A, A+PC MOVC A, A+DPTR,例 1 一個十六進制數(shù)存放在內(nèi)部 RAM 的 HEX單元的低 4 位中, 將其轉(zhuǎn)換成ASCII碼并送回 HEX單元。 十六進制 09的ASCII碼為 30H39H, AF的ASCII碼為41H46H, ASCII碼表格的首地址為ASCTAB。編程如下:,ORG 1000H HEXASC: MOV A, HEX ANL A, 0FH ADD A, 03H; 修改指針 MOVC A, A+PC MOV HEX, A RET,ASCTAB: DB 30H, 31H, 32H, 33H, 34H DB 35H, 36H, 37H, 38H, 39H DB 41H, 42H, 43H, 44H, 45H DB 46H 在這個程序中, 查表指令MOVC A, A+PC到表格首地址有兩條指令, 占用 3 個字節(jié)地址空間, 故修改指針應(yīng)加 3。,例 2 設(shè)有一個巡回檢測報警裝置, 需對 96 路輸入進行控制, 每路有一個額定的最大值, 是雙字節(jié)數(shù)。當檢測量大于該路對應(yīng)的最大值時, 就越限報警。假設(shè)R2 為保存檢測路數(shù)的寄存器, 其對應(yīng)的最大額定值存放于 31H和 32H單元中。 查找最大額定值的程序如下:,FMAX: MOV A, R2 ADD A, R2 ; 表中一個額定值為2個字節(jié) MOV 31H, A MOV DPTR, TAB ; 表首址,MOVC A, A+DPTR; 查表讀取第一個字節(jié) XCH A, 31H ; 第一個字節(jié)內(nèi)容存入31H INC DPTR MOVC A, A+DPTR; 查表讀取第二個字節(jié) MOV 32H, A ; 第二字節(jié)的內(nèi)容存入32H TAB: DW 1230H, 1450H, . DW 2230H, 2440H, . DW 3120H, 3300H, .,2 數(shù)制轉(zhuǎn)換,例 4 將一個字節(jié)二進制數(shù)轉(zhuǎn)換成 3 位非壓縮型BCD碼。 設(shè)一個字節(jié)二進制數(shù)在內(nèi)部RAM 40H單元, 轉(zhuǎn)換結(jié)果放入內(nèi)部 RAM 50H#, 51H, 52H單元中(高位在前), 程序如下:,HEXBCD: MOV A, 40H MOV B, 100 DIV AB MOV 50H, A MOV A, 10 XCH A, B DIV AB MOV 51H, A MOV 52H, B RET,例5 BCD碼轉(zhuǎn)換為二進制代碼(方法:先將高半字節(jié) 1010,再加低半字節(jié))。設(shè)待轉(zhuǎn)換的BCD 碼存放在R2中 DTOB MOV A, R2; ANL A, #0F0H ; 屏蔽低四位 SWAP A MOV B, #0AH MUL AB MOV R3,A MOV A, R2 ANL A, #0FH 屏蔽高四位 ADD A, R3 得轉(zhuǎn)換結(jié)果 RET,例6 雙字節(jié)BCD碼轉(zhuǎn)換為二進制碼 設(shè)BCD碼表示的4位十進制數(shù)分別存放在R1和R2中,其中R2存放千、百位,R1存放十、個位。轉(zhuǎn)換后的結(jié)果低字節(jié)存放在20H單元,高字節(jié)存放在21H單元。 轉(zhuǎn)換時,可由高位到低位逐位檢查BCD碼的數(shù)值,然后累加各十進制對應(yīng)的二進制數(shù)。其中, 千位 1000 =03E8H 百位 100 = 0064H 十位 10 = 000AH 各位 BCD碼=二進制碼,例 BCD碼3245 = 0011 0010 0100 0101 則千位累加了3次03E8H,百位累加了2次0064H, 十位累加了4次000AH,再加上個位。 BBCD11: MOV 20H, #00H; MOV 21H, #00H; MOV R3, #0E8H; MOV R4 #00H ; 一千位二進制數(shù)送R3,R4 MOV A, R2 ANL A, #0F0H; 屏蔽百位 SWAP A; 千位換到低四位 JZ BRAN1; LOOP1: DEC A ; 千位減1 ACALL ADDT ; 調(diào)用累加子程序,JNZ LOOP1 ; 千位為0否? BRAN1: MOV R3, #64H ; MOV R4, #00H ; 一百位二進制數(shù)送R3,R4 MOV A ,R2 ; ANL A, #0FH ; 屏蔽千位 JZ BRAN2 ; 百位為十轉(zhuǎn)到個位處執(zhí)行 LOOP2 DEC A ; 百位減1 ACALL ADDT ; 調(diào)用累加子程序 JNZ LOOP2 ; 百位為0否 BRAB2 MOV R3, #0AH ; 十的二進制數(shù)送R3 MOV A, R1 ; ANL #F0H ; 屏蔽個位 SWAP A ; 十位換到低四位 JZ BRAN3 ; 十位為0轉(zhuǎn)到個位處執(zhí)行,LOOP3: DEC A ; 十位減1 ACALL ADDT; 調(diào)用累加子程序 JNZ LOOP3 ; 十位為0否? BRAN3: MOV A,R1 ; ANL A, #0FH ; 屏蔽十位 MOV R3, A; ACALL ADDT; RET ADDT: PUSH PSW PUSH ACC CLR C MOV A, 20H ADD A, R3 低位字節(jié)相加,MOV 20H, A 結(jié)果送20H單元 MOV A, 21H ADDC A,R4 高位字節(jié)相加 MOV 21H, A POP ACC POP PSW RET,3 運算程序,一、 加、 減法程序,例 7 將40H開始存放的 10 個字節(jié)的數(shù)與 50H開始存放的10 個字節(jié)的數(shù)相減(假設(shè)被減數(shù)大于減數(shù))。 設(shè)被減數(shù)指針為 R0, 減數(shù)指針為 R1, 差數(shù)放回被減數(shù)單元, R5 存放字節(jié)個數(shù), 則程序如下:,SUB: MOV R0, 40H MOV R1, 50H MOV R5, 10 CLR C SUB1: MOV A, R0 SUBB A, R1 MOV R0, A INC R0 INC R1 DJNZ R5, SUB1 RET,二、 乘法運算程序 在計算機中, 常將乘法采用移位和加法來實現(xiàn)。 例8 將(R2R3)和(R6R7)中雙字節(jié)無符號數(shù)相乘, 結(jié)果存入 R4R5R6R7。 此乘法可以采用部分積右移的方法來實現(xiàn), 其程序框圖如圖 4.6 所示, 程序如下:,NMUL: MOV R4, 0 ; 初始化 MOV R5, 0 CLR C MOV R0, 16,NMUL1: MOV A, R4 ; CyR4R5R6R7右移一位 RRC A MOV R4, A MOV A, R5 RRC A MOV R5, A MOV A, R6 RRC A MOV R6, A MOV A, R7 RRC MOV R7, A JNC NMUL2; C為移出乘數(shù)的最低位 MOV A, R5 ; (R4R5)+(R6F7)(R4R5),ADD A, R3 MOV R5, A MOV A, R4 ADDC A, R2 MOV R4, A NMUL2: DJNZR0, NMUL1; 循環(huán)16位 MOV A, R4; 最后結(jié)果再移一位 RRC A MOV R4, A MOV A, R5 RRC A MOV R5, A MOV A, R6,RRC A MOV R6, A MOV A, R7 RRC A MOV R7, A RET,圖4.6 NMUL程序框圖,例 9 假定被乘數(shù)在(R4R3)中, 乘數(shù)放在R2中, 乘積放在R7R6和R5中。 MCS - 51 中有 8 位數(shù)的乘法指令MUL, 用它來實現(xiàn)多字節(jié)乘法時, 可表示為 (R4R3)(R2) =(R4)28+(R3)(R2) =(R4)(R2)28+(R3)(R2) 其中(R4)(R2)和(R3)(R2)都是可直接用MUL指令來實現(xiàn), 而乘以28意味著左移 8 位。由此可編寫如下程序:,NMUL1: MOV A, R2 MOV B, R3 MUL AB ; (R3)(R2) MOV R5, A ; 積的低位送R5 MOV R6, B ; 積的高位送R6 MOV A, R2 MOV B, R4 MUL AB ; (R4)(R2) ADD A, R6 ; (R3)(R2)的高位加(R4)(R2)的低位 MOV A, B ADDC A, 00H ; (R4)(R2)的高位加Cy MOV R7, A ; 結(jié)果送R7 RET,三、 除法運算程序 除法是乘法的逆運算, 用移位、 相減的方法來完成。 首先比較被除數(shù)的高位字與除數(shù), 如被除數(shù)高位大于除數(shù), 則商為1, 并從被除數(shù)中減去除數(shù), 形成一個部分余數(shù); 否則商位為 0, 不執(zhí)行減法。 然后把新的部分余數(shù)左移一位, 并與除數(shù)再次進行比較。循環(huán)此步驟, 直到被除數(shù)的所有位都處理完為止,一般商的字長為 n, 則需循環(huán)n次。 一般計算機中, 被除數(shù)均為雙倍位, 即如果除數(shù)和商為雙字節(jié), 則被除數(shù)為四字節(jié)。如果在除法中發(fā)生商大于規(guī)定字節(jié), 稱為溢出。 在進行除法前, 應(yīng)該檢查是否會產(chǎn)生溢出。一般可在進行除法前, 先比較被除數(shù)的高位與除數(shù), 如被除數(shù)高位大于除數(shù), 則溢出, 置溢出標志, 不執(zhí)行除法。,圖 4.7 除法程序的流程,例 10 將(R4R5R6R7)除以(R2R3), 商放在(R6R7)中, 余數(shù)放在(R4R5)中。,NDIV: MOV A, R5 ; 判商是否產(chǎn)生溢出 CLR C SUBB A, R3 MOV A, R4 SUBB A, R2 JNC NDIV1 ; 溢出, 轉(zhuǎn)溢出處理 MOV B, 16; 無溢出, 執(zhí)行除法,NDIV2: CLR C ; 被除數(shù)左移一位, 低位送 0 MOV A, R7 RLC A MOV R7, A MOV A, R6 RLC A MOV R6, A MOV A, R5 RLC A MOV R5, A XCH A, R4 RLC A XCH A, R4,MOV F0, C ; 保護移出的最高位 CLR C SUBB A, R3 ; 部分余數(shù)與除數(shù)比較 MOV R1, A MOV A,
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年三明醫(yī)學(xué)科技職業(yè)學(xué)院單招職業(yè)技能測試題庫含答案詳解
- 2026年上海立信會計金融學(xué)院單招職業(yè)傾向性測試題庫及答案詳解一套
- 2026年四川藝術(shù)職業(yè)學(xué)院單招職業(yè)適應(yīng)性考試題庫含答案詳解
- 2026年蘇州高博軟件技術(shù)職業(yè)學(xué)院單招職業(yè)適應(yīng)性考試題庫及完整答案詳解1套
- 天津市五區(qū)縣重點校聯(lián)考2024-2025學(xué)年高二上學(xué)期11月期中政治試題含答案高二政治答案
- 二建建筑面試題及答案
- 2025年西北工業(yè)大學(xué)材料學(xué)院特種陶瓷及復(fù)合材料制備與評價項目組招聘備考題庫及答案詳解1套
- 2025年重慶長江軸承股份有限公司招聘13人備考題庫及一套完整答案詳解
- 隨州市中心醫(yī)院2026年招聘45人備考題庫及參考答案詳解1套
- 上海七十邁數(shù)字科技2026校園招聘備考題庫完整參考答案詳解
- GB/T 3521-2023石墨化學(xué)分析方法
- 一年級數(shù)學(xué)重疊問題練習(xí)題
- 三維動畫及特效制作智慧樹知到課后章節(jié)答案2023年下吉林電子信息職業(yè)技術(shù)學(xué)院
- 胰腺囊腫的護理查房
- 臨床醫(yī)學(xué)概論常見癥狀課件
- 事業(yè)單位專業(yè)技術(shù)人員崗位工資標準表
- 知識圖譜與自然語言處理的深度融合
- 物業(yè)管理理論實務(wù)教材
- 仁川國際機場
- 全檢員考試試題
- 光刻和刻蝕工藝
評論
0/150
提交評論