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

正文內(nèi)容

mcs51程序設(shè)計-展示頁

2024-08-08 10:02本頁面
  

【正文】 務(wù)時,有時會遇到多次重復(fù)處理的問題,用循環(huán)程序的方法來解決就比較合適。因?yàn)楹唵纬绦颍織l指令只執(zhí)行一次,而分支程序則根據(jù)條件的不同,會跳過一些指令,執(zhí)行另一些指令。 程序?yàn)?: 圖 54:例 5 流程圖 ORG 0000H CMPT: JNB , NCH ; (A)0,不需轉(zhuǎn)換 CPL A ADD A, 1 SETB ;保存符號 NCH: RET END 分支程序在實(shí)際使用中用處很大,除了用于比較數(shù)的大小之外,常用于控制子程序的轉(zhuǎn)移。因此,程序首先判斷被轉(zhuǎn)換數(shù)的符號,負(fù)數(shù)進(jìn)行轉(zhuǎn)換,正數(shù)即為補(bǔ)碼。流程圖見圖 54 程序?yàn)椋? ORG 0000H START: CLR C SUBB A, 30H JC NASC ;( A) 0,不是十六進(jìn)制數(shù) CJNE A, 0AH, MM MM: JC ASC ; 0≤( A) 0AH,是十六進(jìn)制數(shù) SUBB A, 07H CJNE A, 0AH, NN NN: JC NASC CJN A, 10H, LL LL: JC ASC NASC: SETB F0 ASC: RET END 例 6: 求單字節(jié)有符號二進(jìn)制數(shù)的補(bǔ)碼。在這一范圍內(nèi)的 ASCII 碼減 30H 或 37H 就可以獲得對應(yīng)的十六進(jìn)制數(shù)。 例 5 : 將 ASCII 碼表的 ASCII 碼轉(zhuǎn)換為十六進(jìn)制數(shù),如果 ASCII 碼不能轉(zhuǎn)換成十六進(jìn)制數(shù),用戶標(biāo)志位置 1。執(zhí)行 JNC 指令后,形成了分支。設(shè)兩數(shù) X, Y,當(dāng) X≥ Y 時,用 XY 結(jié)果開始 設(shè)置指針 DPTR 初始值 取第一個數(shù)存入 R2 取第二個數(shù) 后者減前者 進(jìn)位標(biāo)志是否為 0? 存后者 結(jié)束 存前者 無借位( CY)產(chǎn)生,反之借位為 1,表 示 X< Y。由于這是一條帶借位的減法指令,在執(zhí)行該指令前,先把進(jìn)位位清零。 例 4: 兩個無符號數(shù)比較大小 設(shè)兩個連續(xù)外部 RAM 單元 ST1 和 ST2 中存放不帶符號的二進(jìn)制數(shù),找出其中的大數(shù)存入 ST3 單元中。根據(jù)判斷、比較的結(jié)果轉(zhuǎn)向不同的分支。 5 . 2 分支程序設(shè)計 在 處理實(shí)際事務(wù)中,只用簡單程序設(shè)計的方法是不夠的。 此例相反的過程是將字節(jié)拆開分成兩個半字節(jié):例如將 40H 單元中的內(nèi)容拆開后分別送 41H、 42H 單元中。要求取出兩個單元中的低半字節(jié)、合并成一個字節(jié)后,存 42H 單元。下面的程序都是講的通用子程序。一般的教科書講通用子程序,理解起來,有些困難。我們使用時用下面比較簡單的程序, ORG 0000H 開始 R0← 40H A←( R0) A 送( 42H) ( 40H) +( 41H)和送 A 返回 MOV 40H, 01H MOV 41H, 02H ACALL AD1 END 這樣使用起來很方便,向 40H、 41H 單元送數(shù),叫入口參數(shù)。 此程序也可這樣寫,用子程序調(diào)用的方法寫。如以上 1+2 的程序,也可以這樣寫,先將加數(shù)和被加數(shù)分別送入 40H、 41H 單元,加完后和送入 42H 單元。一般編寫程序時,編成通用的程序。 該程序若用 ADD A, direct 指令編程時,可寫出如下程序: ORG 0000H MOV 30H, 02 MOV A, 01 ADD A, 30H END 該程序若用 ADD A, Ri 指令編程時,可寫出如下程序: ORG 0000H MOV R0, 02 MOV A, 01 ADD A, R0 END 注意間接尋址方式的用法, Ri (i=0, 1) 即 Ri 只有 R0 和 R1 該程序若用 ADD A, data 指令編程時,可寫出如下程序: ORG 0000H MOV A, 01 ADD A, 02 END 從以上例子可見,同一個程序有多種編寫方法,思路不同編出來的程序不同,但結(jié)果都一樣,但我們認(rèn)為最后一個程序較好。 MOV R2, 02 ; 2 送 R2 MOV A, 01 ; 1 送 A ADD A, R2 ;相加,結(jié)果 3 存 A 中 END ;程序結(jié)束標(biāo)志,必不可少的。 例 1: 編寫 1+2 的程序 首先用 ADD A, Rn 指令,該指令是將寄存器 Rn 中的數(shù)與累加器 A 中的數(shù)相加,結(jié)果存于 A 中,這就要求先將 1 和 2 分別送到 A 中和寄存器 Rn 中,而 Rn 有四組,每組有八個單元 R0~R7,首先要知道 Rn 在哪組,默認(rèn)值(不設(shè)定值)是第 0 組,在同一個程序中,同組中的 Rn 不能重復(fù)使用,不然會數(shù)據(jù)出錯,唯獨(dú) A 可反復(fù)使用,不出問題。計算 機(jī)是按指令在存儲器中存放的先后次序來順序執(zhí)行程序的。以下程序?yàn)榱藢W(xué)習(xí)的方便都可全軟件仿真,每一個程序可在仿真軟件中檢驗(yàn)它的正確性。程序看懂了,再編一些短的,容易的程序,特別是一些專用語句的編程方法要記下,慢慢逐步編長程序,編多了,熟能生巧。 將編制出的程序在計算機(jī)上調(diào)試,直至實(shí)現(xiàn)預(yù)定的功能。 確定數(shù)據(jù)結(jié)構(gòu)、算法、工作單元、變量設(shè)定。本章將通過一些基本程序,介紹部分常用程序設(shè)計方法。第 5 章 MCS— 51 程序設(shè)計 程序設(shè)計是為了解決某一個問題,將指令有序地組合在一起。程序有簡有繁,有些復(fù)雜程序往往是由簡單的基本程序所構(gòu)成。 程序設(shè)計的過程大致可以分為以下幾個步驟: 編制說明要解決問題的程序框圖。 根據(jù)所用計 算機(jī)的指令系統(tǒng),按照已編制的程序框圖用匯編語言編制出源程序。 程序編寫是一個較復(fù)雜艱難的過程,要有較強(qiáng)的抽象思維和邏輯思維能力,學(xué)習(xí)編程 一般先看程序,分析程序。編好的程序要用軟件仿真或硬件仿真檢驗(yàn)其正確性。 5 . 1 簡單程序設(shè)計 簡單程序又稱順序程序。除非用特殊指令讓它跳轉(zhuǎn),不然它會在 PC 控制下執(zhí)行。明確了這些后,可寫出程序如下: ORG 0000H ; 定下面這段程序在存儲器中的首地址,必不可少的。 程序到此編寫完成,然后在仿真軟件中調(diào)試、驗(yàn)證,若不對,反復(fù)修改程序,直到完全正確為止。以上加法程序是最簡單的形式,加法有多種:有 無進(jìn)位加法、有進(jìn)位加法、有有符號加法、有無符號加法,還有浮點(diǎn)數(shù)的加法、單字節(jié)加法、雙字節(jié)加法、多字節(jié)加法等等。在調(diào)用通用程序之前,先判斷是哪一種類型,再調(diào)相應(yīng)的子程序。它的完整程序是: ORG 0000H MOV 40H, 01H MOV 41H, 02H AD1: MOV R0, 40H ; 設(shè) R0 為數(shù)據(jù)指針 MOV A, R0 ;取 N1 INC R0 ;修改指針 ADD A, R0 ; N1+N2 INC R0 MOV R0, A ;存結(jié)果 END 流程圖如圖 51 所示。將加的這一部分寫成通用程序: AD1: MOV R0, 40H ; 設(shè) R0 為數(shù)據(jù)指針 MOV A, R0 ;取 N1 INC R0 ;修改指針 ADD A, R0 ; N1+N2 INC R0 MOV R0, A ;存結(jié)果 RET 使用這個程序之前,先將加數(shù)、被加數(shù)送入 40H、 41H 單元,完整的程序如下: ORG 0000H MOV 40H, 01H MOV 41H, 02H ACALL AD1 AD1: MOV R0, 40H ; 設(shè) R0 為數(shù)據(jù)指針 MOV A, R0 ;取 N1 INC R0 ;修改指針 ADD A, R0 ; N1+N2 INC R0 MOV R0, A ;存結(jié)果 RET END 標(biāo)號 AD1 到 RET 的這段程序就為子程序, 圖 51 例 1 流程圖 有時將這些專用的子程序存入 ROM 中,不可改寫。將和送入 42H 單元,稱為出口參數(shù)。我們在看書的時候要適應(yīng)這種思路。 例 2: 將兩個半字節(jié)數(shù)合并成一個一字節(jié)數(shù) 設(shè):內(nèi)部 RAM40H, 41H 單元中分別存放著 8 位二進(jìn)制數(shù)。 流程圖如圖 52 所示 程序如下: ORG 0000H START: MOV R1, 40H MOV A, R1 ANL A, 0FH ;取第一個半字節(jié) SWAP A INC R1 XCH A, R1 ;取第二字節(jié) ANL A, 0FH ;取第二個半字節(jié) ORL A, R1 ;拼字 INC R1 MOV R1, A ;存放結(jié)果 圖 52 例 2 流程圖 RET END 上面程序先要在 RAM 的 40H、 41H 單元中輸入兩個數(shù) ,(輸入法見第二章軟件仿真部分)例如輸入 08 和 06,再看 86 是否送入 42H 單元。 例 3 拆字程序 ORG 0000H 開始 ( 40H)內(nèi)容送 A,屏 蔽高位,交換高低位 A←( R0) A 與( R1)或后 送( 42H) 取( 41H)內(nèi)容,屏蔽高位,送 A 返回 START: MOV R1, 40H MOV A, R1 MOV B, A ;暫存 B 中 ANL A, 0FH ;取第一個半字節(jié) INC R1 MOV R1, A ;存放第一個半字節(jié) MOV B, A SWAP A ANL A, 0FH ;取第二個半字節(jié) INC R1 MOV R1, A ;存放第二個半字節(jié) RET END 上面程序要在 40H 中輸入兩個數(shù),例如 86 再看 6 是否送入 41H 單元, 8 是否送入 42H單元。因?yàn)榇蟛糠殖绦蚩偘信袛唷⒈容^等情況。 下面舉兩個分支程序的例子。 流程圖見圖 53 程序如下: ORG 8000H ST1 EQU 8040H START1: CLR C ; 進(jìn)位位清零 MOV DPTR, ST1 ; 設(shè)數(shù)據(jù)指針 MOVX A, DPTR ; 取第一數(shù) MOV R2, A ; 暫存 R2 INC DPTR MOVX A, DTPR ; 取第二個數(shù) SUBB A, R2 ;
點(diǎn)擊復(fù)制文檔內(nèi)容
研究報告相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1