![【ch04】80C51 匯編語言程序設(shè)計_第1頁](http://file4.renrendoc.com/view/a97981eb84d26c7daa268951460ff319/a97981eb84d26c7daa268951460ff3191.gif)
![【ch04】80C51 匯編語言程序設(shè)計_第2頁](http://file4.renrendoc.com/view/a97981eb84d26c7daa268951460ff319/a97981eb84d26c7daa268951460ff3192.gif)
![【ch04】80C51 匯編語言程序設(shè)計_第3頁](http://file4.renrendoc.com/view/a97981eb84d26c7daa268951460ff319/a97981eb84d26c7daa268951460ff3193.gif)
![【ch04】80C51 匯編語言程序設(shè)計_第4頁](http://file4.renrendoc.com/view/a97981eb84d26c7daa268951460ff319/a97981eb84d26c7daa268951460ff3194.gif)
![【ch04】80C51 匯編語言程序設(shè)計_第5頁](http://file4.renrendoc.com/view/a97981eb84d26c7daa268951460ff319/a97981eb84d26c7daa268951460ff3195.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
第四章80C51匯編語言程序設(shè)計工業(yè)和信息化部“十四五”規(guī)劃教材單片機原理及應(yīng)用01概述20%30%40%50%
機器語言機器語言(MachineLanguage)是指直接用機器碼編寫程序、能夠被計算機直接執(zhí)行的機器級語言。
匯編語言匯編語言(AssemblyLanguage)是指用指令助記符代替機器碼的編程語言。
高級語言高級語言(High-LevelLanguage)是在匯編語言的基礎(chǔ)上編寫程序,例如PL/M-51、FranklinC51、MBASIC51等,其優(yōu)點是程序可讀性強,通用性好,適用于不熟悉單片機指令系統(tǒng)的用戶。程序設(shè)計語言定義起始地址偽指令ORG
格式:ORG操作數(shù)說明:操作數(shù)為一個16位的地址,它指出了緊跟ORG后面的那條指令在程序存儲器中的地址。匯編語言偽指令定義賦值偽指令EQU格式:字符名稱EQU操作數(shù)說明:該指令用來給字符名稱賦值。在同一個源程序中,任何一個字符名稱都只能賦值一次。定義數(shù)據(jù)地址賦值偽指令DATA格式:字符名稱DATA操作數(shù)說明:DATA偽指令功能和EQU相類似,它把右邊“表達(dá)式”的值賦給左邊的“字符名稱”。
定義字節(jié)數(shù)據(jù)偽指令DB格式:[標(biāo)號:]DB數(shù)據(jù)表說明:該偽指令用來定義若干字節(jié)數(shù)據(jù)表,并從指定的地址單元開始存放在程序存儲器中。匯編語言偽指令匯編語言偽指令
定義雙字節(jié)數(shù)據(jù)偽指令DW格式:[標(biāo)號:]DW數(shù)據(jù)表說明:DW定義的是雙字節(jié)數(shù)據(jù),而DB定義的是單字節(jié)數(shù)據(jù),其他用法都相同。定義預(yù)留空間偽指令DS格式:[標(biāo)號:JDS操作數(shù)說明:該偽指令用于告訴匯編程序,從指定的地址單元開始(如由標(biāo)號指定首地址),保留由操作數(shù)設(shè)定的字節(jié)數(shù)空間作為備用空間。20%30%40%50%定義位地址賦值偽指令BIT格式:字符名稱BIT位地址說明:該偽指令只能用于有位地址的位(內(nèi)部RAM或SFR中),把位地址賦予規(guī)定的字符名稱。定義匯編結(jié)束偽指令END格式:[標(biāo)號:]END說明:匯編結(jié)束偽指令END用來告訴匯編程序,此源程序到此結(jié)束。匯編語言偽指令1.匯編語言程序設(shè)計步驟匯編語言程序設(shè)計步驟如下:①分析問題;②確定算法;③設(shè)計程序流程圖;④分配內(nèi)存工作單元,確定程序和數(shù)據(jù)區(qū)的起始地址;⑤編寫匯編語言程序;⑥調(diào)試程序。程序匯編方法程序匯編方法匯編語言源程序的匯編和調(diào)試(1)機器匯編匯編過程是將匯編語言源程序翻譯成目標(biāo)程序的過程。機器匯編通常在計算機上(與單片機仿真器聯(lián)機)通過匯編程序?qū)崿F(xiàn)。(2)手工匯編由程序員根據(jù)89C51的指令集將匯編語言源程序的指令逐條人工翻譯成機器碼的過程叫人工匯編。通過人工查找指令表,將每一條指令的機器代碼查出,并分配存儲空間,計算地址偏移量,最后得到目標(biāo)文件。02順序程序設(shè)計順序程序設(shè)計①正確選擇程序存放的地址。在編寫程序時,一般要在程序開頭用一條偽指令ORG指定程序的首地址。首地址應(yīng)該避開單片機的系統(tǒng)保留地址,如復(fù)位地址和中斷入口地址等,且要注意程序存儲器的有效使用空間。②檢查所用的指令是否合法,非法指令由于找不到機器碼,是無法匯編的。③程序要有一定的通用性且易于修改。④為使程序在運行結(jié)束時,不會繼續(xù)跑飛,可在程序的最后一行加一條指令,使程序暫停,如SJMP$。03分支程序設(shè)計【例4.3.1】比較兩個無符號數(shù)的大小。設(shè)從外部存儲單元ST1起存放兩個無符號8位二進制數(shù),要求比較其大小,將大數(shù)存入ST1+2單元中。程序流程圖如圖4-4所示。一般分支程序設(shè)計
【例4.3.2】試編制計算符號函數(shù)y=SGN(x)的程序。設(shè)自變量x已存入標(biāo)號為DATA的單元,其值在-128≤x≤127范圍內(nèi)。符號函數(shù)y存于FSGN單元中。一般分支程序設(shè)計【例4.3.3】比較兩個有符號數(shù)(三分支程序)。內(nèi)部RAM的20H單元和30H單元各存放了一個8位有符號數(shù),請比較這兩個數(shù)的大小,根據(jù)比較結(jié)果點亮發(fā)光二極管(LED)。一般分支程序設(shè)計20%30%40%50%用轉(zhuǎn)移指令表實現(xiàn)散轉(zhuǎn)在某些程序中,需要根據(jù)某一單元的值0,1,2,…,n,相應(yīng)地轉(zhuǎn)向處理程序0,處理程序1,…,處理程序n。用轉(zhuǎn)移地址表實現(xiàn)散轉(zhuǎn)當(dāng)程序轉(zhuǎn)移范圍比較大時,可使用轉(zhuǎn)移地址表方法,即把每個處理程序的入口地址直接置于地址表內(nèi),先用查表指令找到對應(yīng)的轉(zhuǎn)向地址,再把此地址裝入DPTR中。將累加器清零后,用指令JMP@A+DPTR直接轉(zhuǎn)向各個處理程序的入口。散轉(zhuǎn)程序設(shè)計三種無條件轉(zhuǎn)移指令三種無條件轉(zhuǎn)移指令在應(yīng)用上的區(qū)別有以下三點:首先,轉(zhuǎn)移距離不同,LJMP可在64KB范圍內(nèi)轉(zhuǎn)移,AJMP指令可以在本指令取出后的2KB范圍內(nèi)轉(zhuǎn)移,SJMP的轉(zhuǎn)移范圍是以本指令為核心的-126~+129B。其次,匯編后機器碼的字節(jié)數(shù)不同,LJMP是三字節(jié)指令,AJMP和SJMP都是兩字節(jié)指令。最后,LJMP和AJMP都是絕對轉(zhuǎn)移指令,可以計算得到轉(zhuǎn)移目的地址,而SJMP是相對轉(zhuǎn)移指令,只能通過轉(zhuǎn)移偏移量來進行計算。散轉(zhuǎn)程序設(shè)計04循環(huán)程序設(shè)計20%30%40%50%
程序在進入循環(huán)處理之前必須先設(shè)立初值,如循環(huán)次數(shù)計數(shù)器、工作寄存器及其他相關(guān)變量的初始值等,為進入循環(huán)處理做準(zhǔn)備。
循環(huán)體也稱為循環(huán)處理部分,是循環(huán)程序的核心。循環(huán)體用于處理實際的數(shù)據(jù),是重復(fù)執(zhí)行部分。
在重復(fù)執(zhí)行循環(huán)體的過程中,不斷修改和判別循環(huán)變量,直到符合循環(huán)結(jié)束條件。一般情況下,循環(huán)控制有以下幾種方式。循環(huán)程序結(jié)構(gòu)循環(huán)程序組成循環(huán)程序的基本結(jié)構(gòu)循環(huán)程序通常有兩種編程方法:一種是先處理后判斷,另一種是先判斷后處理,如圖4-7所示。循環(huán)程序結(jié)構(gòu)循環(huán)程序結(jié)構(gòu)
多重循環(huán)結(jié)構(gòu)程序?qū)τ谝恍?fù)雜問題,必須采用多重循環(huán)的程序結(jié)構(gòu),即循環(huán)程序中包含循環(huán)程序或一個大循環(huán)程序中包含多個小循環(huán)程序,稱為多重循環(huán)程序結(jié)構(gòu),又稱循環(huán)嵌套。循環(huán)程序與分支程序的比較循環(huán)程序本質(zhì)上是分支程序的一種特殊形式,凡是分支程序可以使用的轉(zhuǎn)移指令,循環(huán)程序一般都可以使用。
單重循環(huán)程序設(shè)計已知有10個單字節(jié)數(shù),依次存放在內(nèi)部RAM40H單元開始的存儲區(qū)中,要求把求和結(jié)果存入寄存器R2、R3中(高位存R2,低位存R3)。循環(huán)程序?qū)嵗?/p>
多重循環(huán)程序設(shè)計——延時程序設(shè)計設(shè)計一個延時1s的程序,設(shè)單片機時鐘晶振頻率為fose=6MHz。循環(huán)程序?qū)嵗?/p>
數(shù)據(jù)傳送程序不同存儲區(qū)域之間的數(shù)據(jù)塊傳輸。將內(nèi)部RAM30H單元開始的內(nèi)容依次傳送到外部RAM0100H單元開始的區(qū)域,直到遇到傳送的內(nèi)容是0為止。循環(huán)程序?qū)嵗?/p>
05查表程序設(shè)計20%30%40%50%
題意分析所謂表格,是指在程序中定義的一串有序的常數(shù),如平方表、字型碼、鍵碼表等。
匯編語言源程序
程序說明從程序存儲器中讀數(shù)據(jù)時,只能先讀到累加器A中,然后再送到題目要求的地方。查表程序設(shè)計在程序中定義一個0~9的平方表,利用查表指令找出累加器A=05H的平方值。06子程序設(shè)計與堆棧技術(shù)【例4.6.1】編程使P1口連接的8個LED按下面方式顯示:從P1.0連接的LED開始,每個LED閃爍10次,再移向下一個LED閃爍10次,循環(huán)不止(原理圖參見圖3-11)。子程序?qū)嵗褩8拍疃褩嶋H上是內(nèi)部RAM的一部分,堆棧的具體位置由堆棧指針SP確定。SP是一個8位寄存器,用于存放堆棧的棧底(初始化)地址和棧頂?shù)刂?。堆棧結(jié)構(gòu)堆棧操作堆棧有兩種最基本操作:向堆棧存入數(shù)據(jù)稱為“入?!被颉皦喝攵褩!?PUSH),從堆棧取出數(shù)據(jù)稱為“彈出堆?!?POP)。堆棧結(jié)構(gòu)
堆棧的功能最初,堆棧是為了子程序調(diào)用和返回而設(shè)計的,執(zhí)行調(diào)用指令(LCALL、ACALL)時,CPU自動把斷點地址壓棧;執(zhí)行返回指令RET時,自動從堆棧中彈出斷點地址。堆棧操作與RAM操作的比較堆棧作為內(nèi)部RAM的一個特殊區(qū)域,有其獨特性,為匯編語言程序設(shè)計提供了更多的方便。子程序結(jié)構(gòu)子程序的編程原則●子程序的第一條指令必須有標(biāo)號,明確子程序入口地址;●以返回指令RET結(jié)束子程序;●簡明扼要的子程序說明部分;●通用性和可浮動性,盡可能避免使用具體的內(nèi)存單元和絕對轉(zhuǎn)移地址等;●注意保護現(xiàn)場和恢復(fù)現(xiàn)場。在計算機內(nèi)部,任何數(shù)據(jù)最終都是以二進制形式表示的。但人們通過外部設(shè)備與計算機交換數(shù)據(jù)采用的常常又是一些別的形式。例如標(biāo)準(zhǔn)的編碼鍵盤和標(biāo)準(zhǔn)的顯示器使用的都是ASCⅡ碼;人們習(xí)慣使用的是十進制數(shù),在計算機中表示為BCD碼等。因此,匯編語言程序設(shè)計中經(jīng)常會碰到代碼轉(zhuǎn)換的問題,這里提供了BCD碼、ASCII碼與二進制數(shù)相互轉(zhuǎn)換的基本方法和子程序代碼。代碼轉(zhuǎn)換程序雙字節(jié)無符號
溫馨提示
- 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)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度知識產(chǎn)權(quán)對賭合同參考范本
- 2025-2030全球醫(yī)用安全輸注類設(shè)備行業(yè)調(diào)研及趨勢分析報告
- 2025年全球及中國一次性多柱層析系統(tǒng)行業(yè)頭部企業(yè)市場占有率及排名調(diào)研報告
- 2025-2030全球皮拉尼電容膜片式真空計行業(yè)調(diào)研及趨勢分析報告
- 2025-2030全球熟海鮮行業(yè)調(diào)研及趨勢分析報告
- 二零二五年度米香型白酒品牌形象設(shè)計合同
- 花藝行業(yè)鮮花訂購合同
- 房地產(chǎn)行業(yè)房屋買賣風(fēng)險告知合同
- 合成橡膠配方設(shè)計與優(yōu)化考核試卷
- 辦公室公共關(guān)系處理考核試卷
- 玻璃鋼煙囪方案
- 中國電信應(yīng)急管理整體解決方案
- 中小學(xué)教師師德師風(fēng)法律法規(guī)培訓(xùn)
- 醫(yī)療器械質(zhì)量管理體系文件模板
- 秦始皇嬴政人物生平介紹PPT
- 在馬克思墓前的講話說課稿公開課一等獎市賽課獲獎?wù)n件
- 骨科無痛病房的建立
- 送養(yǎng)收養(yǎng)合同協(xié)議書
- 塑料成型模具設(shè)計(第2版)江昌勇課件0-導(dǎo)論
- 漢語拼音發(fā)音口型及配圖
- 績效考核管理醫(yī)院績效分配方案包括實施細(xì)則考核表
評論
0/150
提交評論