freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內容

[工學]第4章_mcs-51匯編語言程序設計(編輯修改稿)

2024-11-15 00:22 本頁面
 

【文章內容簡介】 第 4章 匯編語言程序設計 返回目錄 19:15 38 查表程序 查表程序是一種常用的程序 , 它廣泛使用于 LED顯示器控制 、打印以及數據補償 、 計算 、 轉換等功能程序中 , 具有程序簡單 、執(zhí)行速度快等優(yōu)點 。 查表 , 就是根據變量 x在表格中查找 y, 使 y=f (x)。 例 48 試編寫程序 , 將 16進制數轉換成 ASCII碼 。 分析: 16進制 0~9的 ASCII碼為 30~39H, A~F的 ASCII碼為41H~46H, ASCII碼表的首地址為 ASCTAB。 入口: HEX單元的低四位存放 16進制數 。 出口:轉換后的 ASCII碼送回 HEX單元 。 查表程序 第 4章 匯編語言程序設計 返回目錄 19:15 39 在這個程序中,查表指令 MOVC A, @A+PC到表格首地址有兩條指令,占用 3個地址空間,故變址調整為加 3。 查表程序 ORG 0200H HEX EQU 33H HEXASC:MOV A, HEX ANL A, 0FH ADD A, 03H 。變址調整 MOVC A, @A+PC MOV HEX, A RET ASCTAB:DB 30H, 31H, 32H, 33H DB 34H, 35H, 36H, 37H DB 38H, 39H, 41H, 42H DB 43H, 44H, 45H, 46H END 第 4章 匯編語言程序設計 返回目錄 19:15 40 例 49 設有一個巡回檢測報警裝置 , 需對 16路輸入進行檢測 , 每路有一個最大允許值 , 它為雙字節(jié) 。檢測時需根據測量的路數 , 找出該路的最大允許值 。 再判斷輸入值是否大于最大允許值 , 如大于則報警 。 這里只考慮查找最大值 。 分析: 設 x為路數,放在 R2中。 y為最大允許值,放在表格中。查表后,最大值放在 R R4中。 查表程序 第 4章 匯編語言程序設計 返回目錄 19:15 41 ORG 4000H PM1: MOV A, R2 。其值范圍為 00H~ 0FH(如 04) ADD A, R2 。A←(R2) 2,因最大允許值占兩個字節(jié) (如 08) MOV R3, A 。R3←(R2) 2(如 08) ADD A, 06H 。加偏移量 ,(如 400CH4006H=06H) MOVC A, @A+PC 。查第 1字節(jié) (如地址 =400CH+8=4015H) XCH A, R3 。存第 1字節(jié) (如 33),準備取第 2字節(jié) ADD A, 03H 。加偏移量 (如 400CH400AH+01H=03H) MOVC A, @A+PC 。查第 2字節(jié) (如 400AH+0BH=4016H) MOV R4, A 。存第 2字節(jié) (如 88) RET TABI: DW 2520, 3721, 4264, 7560, 3388, 3265, 7883, 9943 。最大值表 DW 1050, 4051, 6785, 8931, 5468, 5871, 3284, 6688 查表程序 查表程序 第 4章 匯編語言程序設計 返回目錄 19:15 42 子程序 同一個程序中 , 往往有許多地方都需要執(zhí)行同樣的一項任務 ,這時可以對這項任務進行獨立的編寫 , 形成一個子程序 。 在原來的主程序中需要執(zhí)行該任務時 , 調用該子程序 , 執(zhí)行完后又返回主程序 , 繼續(xù)以后的操作 , 這就是所謂的子程序結構 。 在程序設計過程中 , 適當地使用子程序具有以下優(yōu)點: 1) 不必重復編寫同樣的程序 , 提高了編碼的效率 。 2) 縮短了源程序和目標程序的長度 , 節(jié)省了程序存儲器的空間 。 3) 使程序模塊化 、 通用化 , 便于閱讀 、 交流和共享 。 4) 便于分塊調試 。 第 4章 匯編語言程序設計 返回目錄 19:15 43 在子程序調用過程中須解決以下兩個方面的問題: 1) 保護現場和恢復現場 。 2) 調用程序與被調用程序之間的參數傳遞 。 ?保護現場和恢復現場 方法就是在進入子程序時 , 將需要保護的數據推入堆棧 , 而空出這些數據所占用的工作單元 , 供子程序中使用 。 在返回調用程序之前 , 再將推入堆棧的數據彈出到原有的工作單元 , 恢復其原來的狀態(tài) , 使調用程序可以繼續(xù)往下執(zhí)行 。 子程序 第 4章 匯編語言程序設計 返回目錄 19:15 44 ? 參數傳遞 子程序調用時 , 要特別注意主程序與子程序之間的信息交換問題 。 在調用一個子程序時 , 主程序應先把有關參數 ( 子程序入口條件 ) 放到某些約定的位置 , 子程序在運行時 , 可以從約定的位置得到有關參數 。 同樣子程序結束前 , 也應把處理結果 ( 出口條件 ) 送到約定位置 。 返回后 ,主程序便可從這些位置得到需要的結果 , 這就是參數傳遞 。 子程序 參數傳遞 第 4章 匯編語言程序設計 返回目錄 19:15 45 參數傳遞大致可分為以下幾種方法: 1) 傳遞數據 將數據通過工作寄存器 R0~R7和累加器來傳送 。 即主程序和子程序在交接處 , 通過上述寄存器和累加器存儲同一參數 。 2) 傳送地址 數據存放在數據存儲器中 , 參數傳遞時只通過 R0、 R1或 DPTR傳遞數據所存放的地址 。 3) 通過堆棧傳遞參數 在調用之前 , 先把要傳送的參數壓入堆棧 , 進入子程序之后 , 再將壓入堆棧的參數彈出到工作寄存器或者其他內存單元 。 子程序 參數傳遞 第 4章 匯編語言程序設計 返回目錄 19:15 46 例 410 試編寫程序,計算 分析: a a ...、 a10存放在內部 RAM的 20H開始的存儲區(qū)域內 , 計算所得結果存放在 RR2中 。 要求:平方運算編寫成子程序 SORT,主程序通過調用 SORT并求和完成運算 。 參數的傳遞用累加器 。 子程序 子程序應用 第 4章 匯編語言程序設計 返回目錄 19:15 47 ORG 1000H MAIN: MOV R0, 20H 。置數據指針 MOV R7, 10 。置計數初值 MOV R3, 0 。結果單元清零 MOV R2, 0 。 分別存儲高、低字節(jié) LOOP: MOV A, @R0 。取數 ACALL SORT 。調用求平方子程序 ADD A, R2 。累加平方和 (低字節(jié) ) MOV R2, A MOV A, R3 ADDC A, 0 。加進位 Cy MOV R3, A 。累加平方和 (高字節(jié) ) INC R0 。修改指針 DJNZ R7, LOOP 。未完 ,繼續(xù) 子程序 子程序應用 第 4章 匯編語言程序設計 返回目錄 19:15 48 SJMP EN SORT: MOV DPTR, TAB 。進入子程序查平方表 MOVC A, @A+DPTR RET 。返主程序 TAB: DB 0, 1, 4, 9, 16 DB 25, 36, 49, 64, 81 EN: END 子程序 子程序應用 第 4章 匯編語言程序設計 返回目錄 19:15 49 例 411 設有 50個用 ASCII碼表示的 16進制數存放在內部RAM以 30H為首址的連續(xù)單元中 。 要求將其轉換成相應的 16進制數并存放到外部 RAM以4100H為首址的 25個連續(xù)單元中 。 根據上述要求 , 使用堆棧傳遞參數的方法編寫程序 。 子程序 子程序應用 第 4章 匯編語言程序設計 返回目錄 19:15 50 ORG 4000H MAIN: MOV R0, 2FH 。置取數指針 R0初值 ,從 30H開始 MOV DPTR, 40FFH 。置數據指針 DPTR MOV SP, 20H 。置堆棧指針 SP初值 MOV R2, 19H 。置循環(huán)計數器 R2初值為 25 LOOP: INC R0 。修改 R0 INC DPTR 。修改 DPTR指下一個 MOV A, @R0 。取被轉換的 ASCII碼并壓入堆棧 PUSH ACC ACALL SUB 。調用 SUB子程序 POP 1FH 。相應的 16進制數送 1FH單元 子程序 第 4章 匯編語言程序設計 返回目錄 19:15 51 INC R0 。修改 R0 MOV A, @R0 。取被轉換的 ASCII碼并壓入堆棧 PUSH ACC ACALL SUB 。調用 SUB子程序 POP ACC 。相應的 16進制數送 A SWAP A 。作為高 4位 ORL A, 1FH 。合成兩位 16進制數 MOVX @DPTR, A 。送存數單元 DJNZ R2, LOOP 。轉換結束否?若未完 ,則繼續(xù) SJMP EN SUB: MOV R0, SP 。SP值不能改變 ,否則不能正確返回 子程序
點擊復制文檔內容
教學課件相關推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1