MCS-51單片機(jī)匯編語言程序設(shè)計(jì)_第1頁
MCS-51單片機(jī)匯編語言程序設(shè)計(jì)_第2頁
MCS-51單片機(jī)匯編語言程序設(shè)計(jì)_第3頁
MCS-51單片機(jī)匯編語言程序設(shè)計(jì)_第4頁
MCS-51單片機(jī)匯編語言程序設(shè)計(jì)_第5頁
已閱讀5頁,還剩106頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、單片機(jī)原理及其接口技術(shù)單片機(jī)原理及其接口技術(shù)主目錄主目錄上一頁上一頁下一頁下一頁結(jié)結(jié) 束束第第4章章 匯編語言程序設(shè)計(jì)匯編語言程序設(shè)計(jì)教學(xué)目標(biāo)教學(xué)目標(biāo)4.1 4.1 單片機(jī)匯編語言與指令格式單片機(jī)匯編語言與指令格式4.2 4.2 源程序的設(shè)計(jì)步驟和匯編源程序的設(shè)計(jì)步驟和匯編 4.3 4.3 匯編語言程序設(shè)計(jì)匯編語言程序設(shè)計(jì)本章小結(jié)本章小結(jié)思考題與習(xí)題思考題與習(xí)題單片機(jī)原理及其接口技術(shù)單片機(jī)原理及其接口技術(shù)主目錄主目錄上一頁上一頁下一頁下一頁結(jié)結(jié) 束束教學(xué)目標(biāo)教學(xué)目標(biāo) 通過本章教學(xué),要求達(dá)到以下目標(biāo):通過本章教學(xué),要求達(dá)到以下目標(biāo): 1. 熟悉熟悉匯編語言的匯編語言的語句結(jié)構(gòu)語句結(jié)構(gòu); 2. 了

2、解了解手工匯編,計(jì)算偏移量及轉(zhuǎn)移地址的手工匯編,計(jì)算偏移量及轉(zhuǎn)移地址的 方法;方法; 3. 了解了解程序設(shè)計(jì)的步驟,會(huì)畫程序流程圖;程序設(shè)計(jì)的步驟,會(huì)畫程序流程圖; 4. 掌握掌握順序程序、分支程序、循環(huán)程序、子程順序程序、分支程序、循環(huán)程序、子程 序等基本程序的編制方法。序等基本程序的編制方法。 單片機(jī)原理及其接口技術(shù)單片機(jī)原理及其接口技術(shù)主目錄主目錄上一頁上一頁下一頁下一頁結(jié)結(jié) 束束4.1 MCS51單片機(jī)匯編語言與指令格式單片機(jī)匯編語言與指令格式 4.1.1 程序設(shè)計(jì)語言程序設(shè)計(jì)語言程序設(shè)計(jì)語言程序設(shè)計(jì)語言機(jī)器語言機(jī)器語言匯編語言匯編語言高級(jí)語言高級(jí)語言單片機(jī)原理及其接口技術(shù)單片機(jī)原理及

3、其接口技術(shù)主目錄主目錄上一頁上一頁下一頁下一頁結(jié)結(jié) 束束機(jī)器語言機(jī)器語言 由于構(gòu)成計(jì)算機(jī)的電子器件特性所決定由于構(gòu)成計(jì)算機(jī)的電子器件特性所決定, 計(jì)算機(jī)只能計(jì)算機(jī)只能識(shí)別二進(jìn)制代碼。識(shí)別二進(jìn)制代碼。 這種這種以二進(jìn)制代碼來描述指令以二進(jìn)制代碼來描述指令功能的語言功能的語言, 稱之為稱之為機(jī)器語言機(jī)器語言, 用機(jī)器語言組用機(jī)器語言組成的程序成的程序, 稱為稱為目標(biāo)程序目標(biāo)程序。 計(jì)算機(jī)就是按照機(jī)器計(jì)算機(jī)就是按照機(jī)器語言的指令來完成各種功能操作的語言的指令來完成各種功能操作的, 它具有它具有程序簡(jiǎn)捷、占程序簡(jiǎn)捷、占用存儲(chǔ)空間小、執(zhí)行速度快、控制功能強(qiáng)用存儲(chǔ)空間小、執(zhí)行速度快、控制功能強(qiáng)等特點(diǎn)。等特

4、點(diǎn)。單片機(jī)原理及其接口技術(shù)單片機(jī)原理及其接口技術(shù)主目錄主目錄上一頁上一頁下一頁下一頁結(jié)結(jié) 束束匯編語言匯編語言 用來替代機(jī)器語言的進(jìn)行程序設(shè)計(jì)的用來替代機(jī)器語言的進(jìn)行程序設(shè)計(jì)的一種語言,一種語言,由助記符、保留字和偽指令等由助記符、保留字和偽指令等組成組成。很容易讓人們所識(shí)別、記憶和讀寫。很容易讓人們所識(shí)別、記憶和讀寫。 匯編語言編寫出的程序是匯編語言編寫出的程序是匯編語言源程序匯編語言源程序,可由可由“匯編程序匯編程序”翻譯成翻譯成機(jī)器語言程序機(jī)器語言程序(即目(即目標(biāo)代碼)。標(biāo)代碼)。單片機(jī)原理及其接口技術(shù)單片機(jī)原理及其接口技術(shù)主目錄主目錄上一頁上一頁下一頁下一頁結(jié)結(jié) 束束地址地址機(jī)器語言

5、機(jī)器語言匯編語言匯編語言形式形式二進(jìn)制形式二進(jìn)制形式十六進(jìn)制形式十六進(jìn)制形式2000H0111 0100 0000 0101B7405HMOV A , #05H2002H0010 0100 0000 1010B240AHADD A , #0AH2004H1000 0000 1111 1110B80FEHMOV 20H , A單片機(jī)原理及其接口技術(shù)單片機(jī)原理及其接口技術(shù)主目錄主目錄上一頁上一頁下一頁下一頁結(jié)結(jié) 束束匯編程序匯編程序容易讓人們所識(shí)別、記憶和讀寫,容易讓人們所識(shí)別、記憶和讀寫,但不能為機(jī)器直接識(shí)別執(zhí)行但不能為機(jī)器直接識(shí)別執(zhí)行001010010101010101010101機(jī)器語言程序

6、機(jī)器語言程序(即目標(biāo)代碼,(即目標(biāo)代碼,機(jī)器可以識(shí)別機(jī)器可以識(shí)別執(zhí)行執(zhí)行010101010101)010101010101單片機(jī)原理及其接口技術(shù)單片機(jī)原理及其接口技術(shù)主目錄主目錄上一頁上一頁下一頁下一頁結(jié)結(jié) 束束高級(jí)語言高級(jí)語言 是是面向過程和問題面向過程和問題并能獨(dú)并能獨(dú)立于機(jī)器的通用程序立于機(jī)器的通用程序設(shè)設(shè)計(jì)語言,是一種計(jì)語言,是一種接近人們自然語言和常用數(shù)學(xué)表達(dá)式接近人們自然語言和常用數(shù)學(xué)表達(dá)式的計(jì)算機(jī)語言的計(jì)算機(jī)語言。 高級(jí)語言編寫的程序是不能被機(jī)器直接執(zhí)行的,高級(jí)語言編寫的程序是不能被機(jī)器直接執(zhí)行的,但可以被常駐在內(nèi)存或磁盤上的但可以被常駐在內(nèi)存或磁盤上的解釋程序或編譯程序解釋程序

7、或編譯程序等等編譯成目標(biāo)代碼后編譯成目標(biāo)代碼后才能被機(jī)器所執(zhí)行。才能被機(jī)器所執(zhí)行。單片機(jī)原理及其接口技術(shù)單片機(jī)原理及其接口技術(shù)主目錄主目錄上一頁上一頁下一頁下一頁結(jié)結(jié) 束束獨(dú)立于機(jī)器,可移植性強(qiáng)結(jié)構(gòu)化設(shè)計(jì),獨(dú)立于機(jī)器,可移植性強(qiáng)結(jié)構(gòu)化設(shè)計(jì),程序清晰,但是占用存儲(chǔ)空間大程序清晰,但是占用存儲(chǔ)空間大編譯程序編譯程序001010010101010101010101機(jī)器語言程序機(jī)器語言程序(即目標(biāo)代碼,(即目標(biāo)代碼,機(jī)器可以識(shí)別機(jī)器可以識(shí)別執(zhí)行執(zhí)行010101010101)010101010101單片機(jī)原理及其接口技術(shù)單片機(jī)原理及其接口技術(shù)主目錄主目錄上一頁上一頁下一頁下一頁結(jié)結(jié) 束束4.1.2 格匯

8、編語言格式格匯編語言格式MCS51單片機(jī)匯編語言指令的標(biāo)準(zhǔn)格式如下單片機(jī)匯編語言指令的標(biāo)準(zhǔn)格式如下: 標(biāo)號(hào)標(biāo)號(hào): 操作碼操作碼 目的操作數(shù)目的操作數(shù) , 源操作數(shù)源操作數(shù) ; 注釋注釋 例如例如: LOOP: ADD A, 10H ; (A)(A)+10H (1) 方括號(hào)方括號(hào) 表示該項(xiàng)是可選項(xiàng)表示該項(xiàng)是可選項(xiàng), 可有可無??捎锌蔁o。 (2) 標(biāo)號(hào)標(biāo)號(hào)是用戶設(shè)定的符號(hào)是用戶設(shè)定的符號(hào), 它實(shí)際代表該指令所在它實(shí)際代表該指令所在的的地址地址。標(biāo)號(hào)。標(biāo)號(hào)必須以字母開頭必須以字母開頭, 其后跟其后跟18個(gè)字母或個(gè)字母或數(shù)字?jǐn)?shù)字, 并以并以“:”結(jié)尾。結(jié)尾。 單片機(jī)原理及其接口技術(shù)單片機(jī)原理及其接口技

9、術(shù)主目錄主目錄上一頁上一頁下一頁下一頁結(jié)結(jié) 束束 (3) 操作碼操作碼是用英文縮寫的指令功能助記符。它確是用英文縮寫的指令功能助記符。它確定了本條指令完成什么樣的操作功能。定了本條指令完成什么樣的操作功能。 如如: ADD表表示加法操作。示加法操作。 任何一條指令都必須有該助記符項(xiàng)任何一條指令都必須有該助記符項(xiàng), 不得省略。不得省略。 (4) 目的操作數(shù)目的操作數(shù)提供操作的對(duì)象提供操作的對(duì)象, 并表示操作結(jié)果存并表示操作結(jié)果存放單元的地址放單元的地址, 它與操作碼之間它與操作碼之間必須以一個(gè)或幾個(gè)必須以一個(gè)或幾個(gè)空格分隔空格分隔。 如上例中如上例中A表示操作對(duì)象是累加器表示操作對(duì)象是累加器A的

10、的內(nèi)容內(nèi)容, 并指出操作結(jié)果又回送并指出操作結(jié)果又回送A存放。存放。 標(biāo)號(hào)標(biāo)號(hào): 操作碼操作碼 目的操作數(shù)目的操作數(shù) , 源操作數(shù)源操作數(shù) ; 注釋注釋 例如例如: LOOP: ADD A, 10H ; (A)(A)+10H單片機(jī)原理及其接口技術(shù)單片機(jī)原理及其接口技術(shù)主目錄主目錄上一頁上一頁下一頁下一頁結(jié)結(jié) 束束(5) 源操作數(shù)源操作數(shù)指出的是一個(gè)源地址(或立即數(shù))指出的是一個(gè)源地址(或立即數(shù)), 表示操作的對(duì)象或操作數(shù)來自何處。表示操作的對(duì)象或操作數(shù)來自何處。 它與目它與目的操作數(shù)之間要用的操作數(shù)之間要用“,”號(hào)隔開。號(hào)隔開。 (6) 注釋部分注釋部分是在編寫程序時(shí)是在編寫程序時(shí), 為了增加

11、程序的為了增加程序的可可讀性讀性, 由用戶擬寫對(duì)該條指令或該段程序功能由用戶擬寫對(duì)該條指令或該段程序功能的說明。的說明。 它以分號(hào)它以分號(hào)“;”開頭開頭, 可以用中文、可以用中文、 英文或某些符號(hào)來表示英文或某些符號(hào)來表示, 顯然它不存入計(jì)算機(jī)顯然它不存入計(jì)算機(jī), 只出現(xiàn)在源程序中。只出現(xiàn)在源程序中。 標(biāo)號(hào)標(biāo)號(hào): 操作碼操作碼 目的操作數(shù)目的操作數(shù) , 源操作數(shù)源操作數(shù) ; 注釋注釋 例如例如: LOOP: ADD A, 10H ; (A)(A)+10H單片機(jī)原理及其接口技術(shù)單片機(jī)原理及其接口技術(shù)主目錄主目錄上一頁上一頁下一頁下一頁結(jié)結(jié) 束束操作數(shù)的操作數(shù)的5種合法形式種合法形式1、數(shù)字形式:

12、二進(jìn)制、十進(jìn)制、十六進(jìn)制、數(shù)字形式:二進(jìn)制、十進(jìn)制、十六進(jìn)制01001100B,20D,0A0H2、工作寄存器和特殊功能寄存器、工作寄存器和特殊功能寄存器 R0R7,ACC,SFR3、標(biāo)號(hào)地址、標(biāo)號(hào)地址MOV A , M;設(shè)設(shè)M已定義過已定義過4、帶加減算符的表達(dá)式、帶加減算符的表達(dá)式MOV A , M+15、采用、采用$符符JNB TF0 , $標(biāo)號(hào)標(biāo)號(hào): 操作碼操作碼 目的操作數(shù)目的操作數(shù) , 源操作數(shù)源操作數(shù) ; 注釋注釋 例如例如: LOOP: ADD A, 10H ; (A)(A)+10H單片機(jī)原理及其接口技術(shù)單片機(jī)原理及其接口技術(shù)主目錄主目錄上一頁上一頁下一頁下一頁結(jié)結(jié) 束束u指令

13、性語句使指令性語句使CPU執(zhí)行一個(gè)具體的操作。執(zhí)行一個(gè)具體的操作。u偽指令偽指令不要求計(jì)算機(jī)做任何操作不要求計(jì)算機(jī)做任何操作,也沒有對(duì)應(yīng)的機(jī)器碼也沒有對(duì)應(yīng)的機(jī)器碼,不產(chǎn)生目標(biāo)程序,不影響程序的執(zhí)行不產(chǎn)生目標(biāo)程序,不影響程序的執(zhí)行,僅僅是,僅僅是能夠幫助進(jìn)行能夠幫助進(jìn)行匯編匯編的一些指令。的一些指令。4.1.3 匯編語言構(gòu)成匯編語言構(gòu)成指令性語句:指令性語句:111條指令的助記符語句。條指令的助記符語句。指示性語句:偽指令語句。指示性語句:偽指令語句。單片機(jī)原理及其接口技術(shù)單片機(jī)原理及其接口技術(shù)主目錄主目錄上一頁上一頁下一頁下一頁結(jié)結(jié) 束束15 常用偽指令常用偽指令 單片機(jī)匯編語言程序設(shè)計(jì)中,除

14、了使用指單片機(jī)匯編語言程序設(shè)計(jì)中,除了使用指令系統(tǒng)規(guī)定的指令外,還要用到一些偽指令。令系統(tǒng)規(guī)定的指令外,還要用到一些偽指令。偽指令又稱指示性指令偽指令又稱指示性指令,具有和指令,具有和指令類似的形類似的形式,但匯編時(shí)偽指令并不產(chǎn)生可執(zhí)行的目標(biāo)代式,但匯編時(shí)偽指令并不產(chǎn)生可執(zhí)行的目標(biāo)代碼碼,只是對(duì)匯編過程進(jìn)行某種控制或提供某些,只是對(duì)匯編過程進(jìn)行某種控制或提供某些匯編信息。匯編信息。下面對(duì)常用的偽指令作一簡(jiǎn)單介紹。下面對(duì)常用的偽指令作一簡(jiǎn)單介紹。單片機(jī)原理及其接口技術(shù)單片機(jī)原理及其接口技術(shù)主目錄主目錄上一頁上一頁下一頁下一頁結(jié)結(jié) 束束 用來指定用來指定程序或數(shù)據(jù)的起始位置程序或數(shù)據(jù)的起始位置;

15、給出一些給出一些連續(xù)存放數(shù)據(jù)的地址連續(xù)存放數(shù)據(jù)的地址; 為中間運(yùn)算結(jié)果為中間運(yùn)算結(jié)果保留一部分存儲(chǔ)空間保留一部分存儲(chǔ)空間; 為源程序中的為源程序中的符號(hào)和標(biāo)號(hào)賦值符號(hào)和標(biāo)號(hào)賦值; 表示表示源程序結(jié)束源程序結(jié)束等等。等等。 不同版本的匯編語言,偽指令的符號(hào)和含義可能有所不同,但基本用法不同版本的匯編語言,偽指令的符號(hào)和含義可能有所不同,但基本用法是相似的。是相似的。偽指令可以偽指令可以單片機(jī)原理及其接口技術(shù)單片機(jī)原理及其接口技術(shù)主目錄主目錄上一頁上一頁下一頁下一頁結(jié)結(jié) 束束偽指令列表偽指令列表1、 ORG設(shè)置目標(biāo)程序起始地址偽指令設(shè)置目標(biāo)程序起始地址偽指令2、 END結(jié)束匯編偽指令結(jié)束匯編偽指令

16、3、 DB定義字節(jié)偽指令定義字節(jié)偽指令4、 DW定義字偽指令定義字偽指令 5、 DS預(yù)留存儲(chǔ)空間偽指令預(yù)留存儲(chǔ)空間偽指令6、 EQU等值偽指令等值偽指令7、 DATA數(shù)據(jù)地址賦值數(shù)據(jù)地址賦值8、 BIT位地址定義偽指令位地址定義偽指令單片機(jī)原理及其接口技術(shù)單片機(jī)原理及其接口技術(shù)主目錄主目錄上一頁上一頁下一頁下一頁結(jié)結(jié) 束束18一、一、 匯編起始指令匯編起始指令 ORG 指令格式為指令格式為: ORG nn 該偽指令的該偽指令的功能是規(guī)定其后面的目標(biāo)程序或功能是規(guī)定其后面的目標(biāo)程序或數(shù)據(jù)塊的起始地址。數(shù)據(jù)塊的起始地址。它放在一段源程序它放在一段源程序(主程序、子程主程序、子程序序)或數(shù)據(jù)塊的前面

17、,說明緊跟在其后的程序段或數(shù)據(jù)塊或數(shù)據(jù)塊的前面,說明緊跟在其后的程序段或數(shù)據(jù)塊的起始地址就是的起始地址就是ORG后面給出的地址。例如:后面給出的地址。例如: ORG 2000HSTART:MOV A,#7FH 。單片機(jī)原理及其接口技術(shù)單片機(jī)原理及其接口技術(shù)主目錄主目錄上一頁上一頁下一頁下一頁結(jié)結(jié) 束束例如:例如: ORG 2000HSTART:MOV A,#7FH格式:格式:標(biāo)號(hào):標(biāo)號(hào): ORG 地址地址(十六進(jìn)制表示十六進(jìn)制表示)74H7FH2000H1FFFH2001H機(jī)器碼:機(jī)器碼:74 7FH單片機(jī)原理及其接口技術(shù)單片機(jī)原理及其接口技術(shù)主目錄主目錄上一頁上一頁下一頁下一頁結(jié)結(jié) 束束20

18、 例例: ORG 2000H MOV SP, 60H MOV R0, 2FH MOV R2, 0FFH ORG偽指令說明其后面程序的目標(biāo)代碼在存儲(chǔ)器中存?zhèn)沃噶钫f明其后面程序的目標(biāo)代碼在存儲(chǔ)器中存放的放的起始地址是起始地址是2000H, 即即 存儲(chǔ)器地址存儲(chǔ)器地址 程序代碼程序代碼 2000H 75 81 60 2003H 78 2F 2005H 7A FF 單片機(jī)原理及其接口技術(shù)單片機(jī)原理及其接口技術(shù)主目錄主目錄上一頁上一頁下一頁下一頁結(jié)結(jié) 束束21二、二、 匯編結(jié)束指令匯編結(jié)束指令END 指令格式指令格式: 標(biāo)號(hào)標(biāo)號(hào): END 地址或標(biāo)號(hào)地址或標(biāo)號(hào) 格式中格式中標(biāo)號(hào)以及標(biāo)號(hào)以及END后面的地

19、址或標(biāo)號(hào)可有可無后面的地址或標(biāo)號(hào)可有可無。功能功能: 提供匯編結(jié)束標(biāo)志。提供匯編結(jié)束標(biāo)志。匯編程序遇到匯編程序遇到END后就停止匯后就停止匯編編, 對(duì)對(duì) END以后的語句不予處理以后的語句不予處理, 故故END應(yīng)放在程序的結(jié)應(yīng)放在程序的結(jié)束處。束處。 單片機(jī)原理及其接口技術(shù)單片機(jī)原理及其接口技術(shù)主目錄主目錄上一頁上一頁下一頁下一頁結(jié)結(jié) 束束22三、等值指令三、等值指令EQU ( Equal )指令格式指令格式: 字符名稱字符名稱 EQU 數(shù)字或匯編符號(hào)數(shù)字或匯編符號(hào)功能功能: 使指令中的使指令中的字符名稱字符名稱等價(jià)于等價(jià)于給定的給定的數(shù)字或匯編符號(hào)數(shù)字或匯編符號(hào)。 特別注意:特別注意: 必須

20、先賦值后使用必須先賦值后使用, 同一個(gè)同一個(gè)標(biāo)號(hào)只能賦值一次。標(biāo)號(hào)只能賦值一次。 例例: PA EQU 8001H 即給字符即給字符PA賦值為賦值為8001H。 單片機(jī)原理及其接口技術(shù)單片機(jī)原理及其接口技術(shù)主目錄主目錄上一頁上一頁下一頁下一頁結(jié)結(jié) 束束書:書:131頁。編程好習(xí)慣之一:上下對(duì)齊!頁。編程好習(xí)慣之一:上下對(duì)齊! ORG 0500HAA EQU R1BB EQU 10HDELAY EQU 07E6H MOV R0, BB ;R0(10H) MOV A, AA ;A R1 LCALL DELAY ;調(diào)調(diào)07E6H子程序子程序單片機(jī)原理及其接口技術(shù)單片機(jī)原理及其接口技術(shù)主目錄主目錄上一

21、頁上一頁下一頁下一頁結(jié)結(jié) 束束 該偽指令的功能與該偽指令的功能與EQU類似,可以類似,可以將將DATA右邊表達(dá)右邊表達(dá)式的式的 值賦給左邊的字符名稱值賦給左邊的字符名稱。表達(dá)式表達(dá)式可以是常數(shù)、地址可以是常數(shù)、地址標(biāo)號(hào)或表達(dá)式,但標(biāo)號(hào)或表達(dá)式,但不可以不可以是一個(gè)匯編符號(hào)(如是一個(gè)匯編符號(hào)(如R1等)。等)。 DATA和和EQU的主要區(qū)別是:的主要區(qū)別是:EQU中的字符名稱是中的字符名稱是先定義后使用,而先定義后使用,而DATA中的字符名稱沒有這種限制。中的字符名稱沒有這種限制。 定義定義8位數(shù)據(jù)用位數(shù)據(jù)用DATA,定義,定義16位數(shù)據(jù)用位數(shù)據(jù)用XDATA。格式:格式:字符名稱字符名稱 DAT

22、A 表達(dá)式表達(dá)式格式格式: 字符名稱字符名稱 EQU 數(shù)字或匯編符號(hào)數(shù)字或匯編符號(hào)四、數(shù)據(jù)賦值指令四、數(shù)據(jù)賦值指令DATA單片機(jī)原理及其接口技術(shù)單片機(jī)原理及其接口技術(shù)主目錄主目錄上一頁上一頁下一頁下一頁結(jié)結(jié) 束束25五、五、 定義字節(jié)指令定義字節(jié)指令DB指令格式指令格式: 標(biāo)號(hào)標(biāo)號(hào): DB 8位二進(jìn)制數(shù)表位二進(jìn)制數(shù)表功能功能: 把把 8 位二進(jìn)制數(shù)表位二進(jìn)制數(shù)表依次存入從標(biāo)號(hào)開始的連續(xù)的存依次存入從標(biāo)號(hào)開始的連續(xù)的存儲(chǔ)單元中。儲(chǔ)單元中。 標(biāo)號(hào)區(qū)段可有可無標(biāo)號(hào)區(qū)段可有可無, DB指令之后的指令之后的 8 位二進(jìn)制數(shù)表是位二進(jìn)制數(shù)表是一個(gè)字節(jié)常數(shù)一個(gè)字節(jié)常數(shù)或或用逗號(hào)隔開的字節(jié)串用逗號(hào)隔開的字節(jié)串

23、, 也可以是用也可以是用引號(hào)括引號(hào)括起來的起來的ASCII碼字符串碼字符串 (一個(gè)一個(gè) ASCII字符相當(dāng)于一個(gè)字節(jié)字符相當(dāng)于一個(gè)字節(jié))。 單片機(jī)原理及其接口技術(shù)單片機(jī)原理及其接口技術(shù)主目錄主目錄上一頁上一頁下一頁下一頁結(jié)結(jié) 束束 ORG 2000HTAB1: DB 30H,8AH, 73 DB 01011010B, 5, A30H8AH49H5AH35H41H2000H2001H2002H2003H2004H2005H 由于由于ORG 2000H,所以,所以TAB1的地址為的地址為2000H,因此,以上,因此,以上偽指令經(jīng)匯編后,將對(duì)偽指令經(jīng)匯編后,將對(duì)2000H開始的連續(xù)存儲(chǔ)單元賦值:開始

24、的連續(xù)存儲(chǔ)單元賦值:;十進(jìn)制數(shù);十進(jìn)制數(shù)73以十六進(jìn)制數(shù)存放以十六進(jìn)制數(shù)存放; 01011010B=5AH;35H是數(shù)字是數(shù)字5的的ASCII碼碼;41H是字母是字母A的的ASCII碼碼單片機(jī)原理及其接口技術(shù)單片機(jī)原理及其接口技術(shù)主目錄主目錄上一頁上一頁下一頁下一頁結(jié)結(jié) 束束27六、六、 定義字指令定義字指令DW指令格式指令格式: 標(biāo)號(hào)標(biāo)號(hào): DW 16 位數(shù)據(jù)表位數(shù)據(jù)表功能:功能:與與DB相似相似, 區(qū)別區(qū)別僅在于從指定地址開始存放的是指僅在于從指定地址開始存放的是指令中的令中的 16 位數(shù)據(jù)位數(shù)據(jù)。每個(gè)。每個(gè) 16 位數(shù)據(jù)要占兩個(gè)存儲(chǔ)單元位數(shù)據(jù)要占兩個(gè)存儲(chǔ)單元, 高高8 位先存位先存, 低

25、低 8 位后存位后存, 這和這和MCS -51指令中的指令中的16位數(shù)據(jù)位數(shù)據(jù)存放順序是一致的。存放順序是一致的。 單片機(jī)原理及其接口技術(shù)單片機(jī)原理及其接口技術(shù)主目錄主目錄上一頁上一頁下一頁下一頁結(jié)結(jié) 束束 ORG 1500HTAB2: DW 1234H,80H,10 12H34H00H80H00H0AH1500H匯編以后:匯編以后:1501H1502H1503H1504H1505H單片機(jī)原理及其接口技術(shù)單片機(jī)原理及其接口技術(shù)主目錄主目錄上一頁上一頁下一頁下一頁結(jié)結(jié) 束束29 七七. 定義空間偽指令定義空間偽指令DS 格式:格式: 標(biāo)號(hào):標(biāo)號(hào): DS 表達(dá)式表達(dá)式 功能:功能:從指定的地址開始

26、,保留若干個(gè)存儲(chǔ)單元作從指定的地址開始,保留若干個(gè)存儲(chǔ)單元作為備用的空間。為備用的空間。 單片機(jī)原理及其接口技術(shù)單片機(jī)原理及其接口技術(shù)主目錄主目錄上一頁上一頁下一頁下一頁結(jié)結(jié) 束束 ORG 1000HSPC:DS 20H DB 30H,8FH匯編后從匯編后從1000H開始,預(yù)留開始,預(yù)留32(20H)個(gè)字節(jié)的內(nèi)存單元,然后個(gè)字節(jié)的內(nèi)存單元,然后從從1020H開始,按照下一條開始,按照下一條DB指指令賦值,即令賦值,即(1020H)=30H,(1021H)=8FH??湛?2個(gè)個(gè)單元單元30H8FH1000H1020H0FFFH1021H101FH單片機(jī)原理及其接口技術(shù)單片機(jī)原理及其接口技術(shù)主目錄

27、主目錄上一頁上一頁下一頁下一頁結(jié)結(jié) 束束31八、八、BIT位地址賦值偽指令位地址賦值偽指令格式:格式: 字符名稱字符名稱 BIT 位地址位地址功能:功能: 把右邊的位地址賦給左邊的把右邊的位地址賦給左邊的“字符字符名名”。例如: ORG 0300H A1 BIT 00H A2 BIT P1.0 MOV C,A1 MOV A2,C單片機(jī)原理及其接口技術(shù)單片機(jī)原理及其接口技術(shù)主目錄主目錄上一頁上一頁下一頁下一頁結(jié)結(jié) 束束4.2 源程序的設(shè)計(jì)步驟和匯編源程序的設(shè)計(jì)步驟和匯編設(shè)計(jì)步驟設(shè)計(jì)步驟1、擬定設(shè)計(jì)任務(wù)書、擬定設(shè)計(jì)任務(wù)書2、建立數(shù)學(xué)模型、建立數(shù)學(xué)模型3、確立算法、確立算法4、繪制程序流程圖、繪制程

28、序流程圖5、編制匯編語言源程序、編制匯編語言源程序6、上機(jī)調(diào)試、上機(jī)調(diào)試單片機(jī)原理及其接口技術(shù)單片機(jī)原理及其接口技術(shù)主目錄主目錄上一頁上一頁下一頁下一頁結(jié)結(jié) 束束33 單片機(jī)匯編語言程序設(shè)計(jì)的基本步驟如下:?jiǎn)纹瑱C(jī)匯編語言程序設(shè)計(jì)的基本步驟如下: (1) (1) 題意分析題意分析 (2) (2) 畫出程序流程圖畫出程序流程圖 熟悉并了解匯編語言指令的基本格式和主要熟悉并了解匯編語言指令的基本格式和主要特點(diǎn),特點(diǎn),明確被控對(duì)象對(duì)軟件的要求,設(shè)計(jì)出算法明確被控對(duì)象對(duì)軟件的要求,設(shè)計(jì)出算法。 程序流程圖也稱為程序框圖程序流程圖也稱為程序框圖,是根據(jù)控制流程,是根據(jù)控制流程設(shè)計(jì)的,它可以設(shè)計(jì)的,它可以使

29、程序清晰,結(jié)構(gòu)合理,便于調(diào)試。使程序清晰,結(jié)構(gòu)合理,便于調(diào)試。 單片機(jī)原理及其接口技術(shù)單片機(jī)原理及其接口技術(shù)主目錄主目錄上一頁上一頁下一頁下一頁結(jié)結(jié) 束束34 (3) (3) 分配內(nèi)存工作區(qū)及有關(guān)端口地址分配內(nèi)存工作區(qū)及有關(guān)端口地址 (4) (4) 編制匯編源程序。編制匯編源程序。 (5) (5) 編譯、仿真、調(diào)試程序。編譯、仿真、調(diào)試程序。 (6) (6) 固化程序。固化程序。 分配內(nèi)存工作區(qū),要根據(jù)程序區(qū)、數(shù)據(jù)區(qū)、分配內(nèi)存工作區(qū),要根據(jù)程序區(qū)、數(shù)據(jù)區(qū)、暫存區(qū)、堆棧區(qū)等預(yù)計(jì)所占空間大小,對(duì)暫存區(qū)、堆棧區(qū)等預(yù)計(jì)所占空間大小,對(duì)片內(nèi)外片內(nèi)外存儲(chǔ)區(qū)進(jìn)行合理分配存儲(chǔ)區(qū)進(jìn)行合理分配并并確定每個(gè)區(qū)域的首

30、地址確定每個(gè)區(qū)域的首地址,便于編程使用。便于編程使用。單片機(jī)原理及其接口技術(shù)單片機(jī)原理及其接口技術(shù)主目錄主目錄上一頁上一頁下一頁下一頁結(jié)結(jié) 束束4.2 源程序的設(shè)計(jì)步驟和匯編源程序的設(shè)計(jì)步驟和匯編 匯編(匯編程序)匯編(匯編程序) 源程序源程序 目標(biāo)碼目標(biāo)碼 (匯編語言)(匯編語言) (機(jī)器語言)(機(jī)器語言) 反匯編(匯編程序)反匯編(匯編程序)匯編和反匯編示意圖匯編和反匯編示意圖單片機(jī)原理及其接口技術(shù)單片機(jī)原理及其接口技術(shù)主目錄主目錄上一頁上一頁下一頁下一頁結(jié)結(jié) 束束4.2 源程序的設(shè)計(jì)步驟和匯編源程序的設(shè)計(jì)步驟和匯編匯編匯編1、人工匯編、人工匯編2、機(jī)器匯編、機(jī)器匯編P136 P136 表

31、表4.24.2P137 P137 表表4.34.3第一次匯編:翻譯機(jī)器碼第一次匯編:翻譯機(jī)器碼第二次匯編:計(jì)算偏移量第二次匯編:計(jì)算偏移量人工匯編人工匯編單片機(jī)原理及其接口技術(shù)單片機(jī)原理及其接口技術(shù)主目錄主目錄上一頁上一頁下一頁下一頁結(jié)結(jié) 束束P136 例例4.1 LENORG 0100HORG 0100HSUMSUM DATA 1FH DATA 1FHBLOCK DATA 20HBLOCK DATA 20HSTART: MOV R0,#BLOCKSTART: MOV R0,#BLOCK MOV A,R0 MOV A,R0 CJNE A,#00H, CJNE A,#00H,LOOPLOOPHE

32、REHERE: SJMP $: SJMP $LOOPLOOP: CLR A: CLR ANEXTNEXT: INC R0: INC R0 ADD A,R0 ADD A,R0 DJNZ BLOCK, DJNZ BLOCK,NEXTNEXT MOV SUM, A MOV SUM, A SJMP SJMP HEREHERE END ENDRAMRAM20H20H1FH1FHSUMSUMBLOCKBLOCKLEN個(gè)單元內(nèi)容求和編程好習(xí)慣之一:上下對(duì)齊,清晰易讀!編程好習(xí)慣之一:上下對(duì)齊,清晰易讀!單片機(jī)原理及其接口技術(shù)單片機(jī)原理及其接口技術(shù)主目錄主目錄上一頁上一頁下一頁下一頁結(jié)結(jié) 束束第一次匯編:翻譯

33、機(jī)器碼第一次匯編:翻譯機(jī)器碼地址地址指令碼指令碼標(biāo)號(hào)標(biāo)號(hào)指令助記符指令助記符1000H1000H78 2078 20STARTSTARTMOV R0,#BLOCKMOV R0,#BLOCK1002H1002HE6E6MOV A,R0MOV A,R01003H1003HB4 00 B4 00 LOOPLOOPCJNE A,#00H,CJNE A,#00H,LOOPLOOP1006H1006H80 80 $ $HEREHERESJMP SJMP $ $1008H1008HE4E4LOOPLOOPCLR ACLR A1009H1009H0808NEXTNEXTINC R0INC R0100AH100

34、AH2626ADD A,R0ADD A,R0100BH100BHD5 20 D5 20 NEXTNEXTDJNZ BLOCK,DJNZ BLOCK,NEXTNEXT100EH100EHF5 1FF5 1FMOV SUM, AMOV SUM, A1010H1010H80 80 HEREHERESJMPSJMP HERE HERESUMSUM DATA 1FH DATA 1FHBLOCK DATA 20HBLOCK DATA 20H單片機(jī)原理及其接口技術(shù)單片機(jī)原理及其接口技術(shù)主目錄主目錄上一頁上一頁下一頁下一頁結(jié)結(jié) 束束第二次匯編:第二次匯編:計(jì)算偏移量計(jì)算偏移量地址地址指令碼指令碼指令碼指令碼標(biāo)

35、號(hào)標(biāo)號(hào)指令助記符指令助記符1000H78 20STARTMOV R0,#BLOCK1002HE6MOV A,R01003HB4 00 LOOPB4 00 02CJNE A,#00H,LOOP1006H80 $80 FEHERESJMP $1008HE4LOOPCLR A1009H08NEXTINC R0100AH26ADD A,R0100BHD5 20 NEXTD5 20 FBDJNZ BLOCK,NEXT100EHF5 1FMOV SUM, A1010H80 HERE80 F4SJMP HERE地址偏移量目標(biāo)地址轉(zhuǎn)移指令起始地址轉(zhuǎn)移指令字節(jié)數(shù)地址偏移量目標(biāo)地址轉(zhuǎn)移指令起始地址轉(zhuǎn)移指令字節(jié)數(shù)L

36、OOPLOOP1008100810031003030302H02H$ $10061006100610062 202H 02H ,補(bǔ)碼為,補(bǔ)碼為 FEHFEHNEXTNEXT10091009100B100B030305H05H,補(bǔ)碼為,補(bǔ)碼為FBHFBH單片機(jī)原理及其接口技術(shù)單片機(jī)原理及其接口技術(shù)主目錄主目錄上一頁上一頁下一頁下一頁結(jié)結(jié) 束束4.2 源程序的設(shè)計(jì)步驟和匯編源程序的設(shè)計(jì)步驟和匯編匯編匯編1、人工匯編、人工匯編2、機(jī)器匯編、機(jī)器匯編第一次匯編:翻譯機(jī)器碼第一次匯編:翻譯機(jī)器碼第二次匯編:計(jì)算偏移量第二次匯編:計(jì)算偏移量機(jī)器匯編機(jī)器匯編匯編匯編軟件軟件匯編源程序匯編源程序 目標(biāo)代碼目標(biāo)

37、代碼(機(jī)器語言)(機(jī)器語言)單片機(jī)原理及其接口技術(shù)單片機(jī)原理及其接口技術(shù)主目錄主目錄上一頁上一頁下一頁下一頁結(jié)結(jié) 束束4.3.1 簡(jiǎn)單程序設(shè)計(jì)簡(jiǎn)單程序設(shè)計(jì)4.3.2 分支程序設(shè)計(jì)分支程序設(shè)計(jì)4.3.3 散轉(zhuǎn)程序設(shè)計(jì)散轉(zhuǎn)程序設(shè)計(jì)4.3.4 循環(huán)程序設(shè)計(jì)循環(huán)程序設(shè)計(jì)4.3.5 查表程序設(shè)計(jì)查表程序設(shè)計(jì)4.3.6 子程序設(shè)計(jì)和參數(shù)傳遞子程序設(shè)計(jì)和參數(shù)傳遞4.3 匯編語言程序設(shè)計(jì)匯編語言程序設(shè)計(jì)單片機(jī)原理及其接口技術(shù)單片機(jī)原理及其接口技術(shù)主目錄主目錄上一頁上一頁下一頁下一頁結(jié)結(jié) 束束例例 1 兩個(gè)無符號(hào)雙字節(jié)數(shù)相加。兩個(gè)無符號(hào)雙字節(jié)數(shù)相加。 設(shè)被加數(shù)存放于內(nèi)部設(shè)被加數(shù)存放于內(nèi)部RAM的的40H(高位字

38、節(jié))(高位字節(jié)), 41H(低(低位字節(jié))位字節(jié)), 加數(shù)存放于加數(shù)存放于50H(高位字節(jié))(高位字節(jié)), 51H(低位字節(jié))(低位字節(jié)), 和數(shù)存入和數(shù)存入 40H和和41H單元中。單元中。 4.3.1 簡(jiǎn)單程序設(shè)計(jì)簡(jiǎn)單程序設(shè)計(jì)沒有分支、順序執(zhí)行的程序沒有分支、順序執(zhí)行的程序40H41H50H51H40H41H+CY單片機(jī)原理及其接口技術(shù)單片機(jī)原理及其接口技術(shù)主目錄主目錄上一頁上一頁下一頁下一頁結(jié)結(jié) 束束 ORG 0000H LJMP MAIN ORG 0100H MAIN: CLR C ; 將將Cy清零清零 MOV R0, 41H ; 將將被加數(shù)被加數(shù)地址送數(shù)據(jù)指針地址送數(shù)據(jù)指針R0 MO

39、V R1, 51H ; 將將加數(shù)加數(shù)地址送數(shù)據(jù)指針地址送數(shù)據(jù)指針R1 AD1: MOV A, R0 ; 被加數(shù)低字節(jié)的內(nèi)容送入被加數(shù)低字節(jié)的內(nèi)容送入A ADD A, R1 ; 兩個(gè)低字節(jié)相加兩個(gè)低字節(jié)相加 MOV R0, A ; 低字節(jié)的和存入被加數(shù)低字節(jié)中低字節(jié)的和存入被加數(shù)低字節(jié)中 DEC R0 ; 指向被加數(shù)高位字節(jié)指向被加數(shù)高位字節(jié) DEC R1 ; 指向加數(shù)高位字節(jié)指向加數(shù)高位字節(jié) MOV A, R0 ; 被加數(shù)高位字節(jié)送入被加數(shù)高位字節(jié)送入A ADDC A, R1 ; 兩個(gè)高位字節(jié)帶兩個(gè)高位字節(jié)帶Cy相加相加 MOV R0, A ; 高位字節(jié)的和送被加數(shù)高位字節(jié)高位字節(jié)的和送被加數(shù)

40、高位字節(jié)SJMP $ ENDR0R1單片機(jī)原理及其接口技術(shù)單片機(jī)原理及其接口技術(shù)主目錄主目錄上一頁上一頁下一頁下一頁結(jié)結(jié) 束束例例 2 將兩個(gè)半字節(jié)數(shù)合并成一個(gè)一字節(jié)數(shù)。將兩個(gè)半字節(jié)數(shù)合并成一個(gè)一字節(jié)數(shù)。 設(shè)內(nèi)部設(shè)內(nèi)部RAM 40H, 41H單元中分別存放著單元中分別存放著 8 位二進(jìn)制數(shù)位二進(jìn)制數(shù), 要求取出兩個(gè)單元中的低半字節(jié)要求取出兩個(gè)單元中的低半字節(jié), 并成一個(gè)字節(jié)后并成一個(gè)字節(jié)后, 存入存入 50H單元中(從單元中(從40H單元取的數(shù)放在單元取的數(shù)放在高高4位,從位,從41H單元取的單元取的數(shù)放在數(shù)放在低低4位)。位)。? ? ? ?X X X X? ? ? ?Y Y Y Y40H4

41、1HX X X XY Y Y Y50H單片機(jī)原理及其接口技術(shù)單片機(jī)原理及其接口技術(shù)主目錄主目錄上一頁上一頁下一頁下一頁結(jié)結(jié) 束束 ORG 0000H LJMP START ORG 0100HSTART: MOV R1, 40H ; 設(shè)置設(shè)置R1為數(shù)據(jù)指針為數(shù)據(jù)指針 MOV A, R1 ; 取出第一個(gè)單元中的內(nèi)容取出第一個(gè)單元中的內(nèi)容 ANL A, 0FH ; 取第一個(gè)數(shù)的低半字節(jié)取第一個(gè)數(shù)的低半字節(jié) SWAP A ; 移至高半字節(jié)移至高半字節(jié) INC R1 ; 修改數(shù)據(jù)指針修改數(shù)據(jù)指針 XCH A, R1 ; 取第二個(gè)單元中的內(nèi)容取第二個(gè)單元中的內(nèi)容 ANL A, 0FH ; 取第二個(gè)數(shù)的低半

42、字節(jié)取第二個(gè)數(shù)的低半字節(jié) ORL A, R1 ; 拼字拼字 MOV 50H, A ; 存放結(jié)果存放結(jié)果 SJMP $ END ? ? ? ?X X X X? ? ? ?Y Y Y Y40H41HX X X XY Y Y Y50H單片機(jī)原理及其接口技術(shù)單片機(jī)原理及其接口技術(shù)主目錄主目錄上一頁上一頁下一頁下一頁結(jié)結(jié) 束束 ORG0000H LJMP START ORG 0500HSTART: MOV R0,#22H MOV R0,#00H;22H清零MOV A,20H;20H中的BCD碼送AXCHD A,R0;低位BCD送22HORL 22H,#30H;完成低位BCD的轉(zhuǎn)換SWAP A;高位BCD

43、碼送低4位ORL A,#30H;完成高位BCD的轉(zhuǎn)換MOV 21H,A;存入21HSJMP $ENDP138 例例4.2 由由BCD碼碼求求ASCII碼碼 BCD_HBCD_LASCII_HASCII_L030H030H131H131H939H939HBCDBCD碼碼ASCIIASCII碼碼20H20H21H21H22H22H單片機(jī)原理及其接口技術(shù)單片機(jī)原理及其接口技術(shù)主目錄主目錄上一頁上一頁下一頁下一頁結(jié)結(jié) 束束P139 例例4.3:已知已知16位補(bǔ)碼位補(bǔ)碼(負(fù)數(shù)負(fù)數(shù)),求原碼的絕對(duì)值。,求原碼的絕對(duì)值。 ORG ORG 0000H0000H LJMP LJMPMIANMIAN ORG OR

44、G 0300H0300H NUMNUMDATA 20HDATA 20HMAIN: MOV MAIN: MOV R0,#NUMR0,#NUM MOV MOV A,R0A,R0 ; ;低低8 8位位A A CPL CPL A A ADD ADD A,#01HA,#01H MOV MOV R0,AR0,A INC INC R0R0 MOV MOV A,R0A,R0 ; ;高高8 8位位A A CPL CPL A A ADDC ADDC A,#00HA,#00H ANL ANL A,#7FH;A,#7FH;去掉符號(hào)位去掉符號(hào)位 MOV MOV R0,AR0,A SJMP SJMP $ $ ; ;結(jié)束結(jié)

45、束 ENDEND為什么不用為什么不用INC A(P100)D_LD_HNUMNUMNUMNUM1 1單片機(jī)原理及其接口技術(shù)單片機(jī)原理及其接口技術(shù)主目錄主目錄上一頁上一頁下一頁下一頁結(jié)結(jié) 束束分支結(jié)構(gòu)框圖分支結(jié)構(gòu)框圖 (a) 單分支流程單分支流程 (b) 多分支流程多分支流程 4.3.2 分支程序設(shè)計(jì)分支程序設(shè)計(jì)單片機(jī)原理及其接口技術(shù)單片機(jī)原理及其接口技術(shù)主目錄主目錄上一頁上一頁下一頁下一頁結(jié)結(jié) 束束000 xxx-+011yP140 例例4.5例例 設(shè)設(shè)x存放在內(nèi)部存放在內(nèi)部RAM的的30H單元中,結(jié)果單元中,結(jié)果y存存入入31H單元單元.流程圖流程圖存結(jié)果存結(jié)果結(jié)束結(jié)束YA+1YAX開始開始

46、N(A)=0?N(A)0?A- -1單片機(jī)原理及其接口技術(shù)單片機(jī)原理及其接口技術(shù)主目錄主目錄上一頁上一頁下一頁下一頁結(jié)結(jié) 束束 ORG 2000HSTART: MOV A, 30H ;AX JZ LP2 ;X=0轉(zhuǎn)移轉(zhuǎn)移 JNB ACC.7, LP1 ;X0轉(zhuǎn)移轉(zhuǎn)移 MOV A, #0FFH ;X0則則Y=1LP2: MOV 31H, A ;31HY END流程圖流程圖存結(jié)果存結(jié)果結(jié)束結(jié)束YA+1YAX開始開始N(A)=0?N(A)0?A- -1單片機(jī)原理及其接口技術(shù)單片機(jī)原理及其接口技術(shù)主目錄主目錄上一頁上一頁下一頁下一頁結(jié)結(jié) 束束 比較兩個(gè)無符號(hào)數(shù)的大小。比較兩個(gè)無符號(hào)數(shù)的大小。 設(shè)設(shè)外部

47、外部RAM的存儲(chǔ)單元的存儲(chǔ)單元ST1和和ST2中存放兩個(gè)不帶符號(hào)中存放兩個(gè)不帶符號(hào)的二進(jìn)制數(shù)的二進(jìn)制數(shù), 找出其中的找出其中的大大數(shù)數(shù)存入外部存入外部 RAM 中的中的 ST3單元中。單元中。 例例P142 例例4.7ST1ST1D_1D_2MAX(D_1,D_2)ST2ST2ST3ST3AR2單片機(jī)原理及其接口技術(shù)單片機(jī)原理及其接口技術(shù)主目錄主目錄上一頁上一頁下一頁下一頁結(jié)結(jié) 束束 程序如下:程序如下: ORG 0000H LJMP START ORG 1000H ST1 EQU 0000H ST2 EQU 0001H ST3 EQU 0002H START: CLR C ; 清零清零Cy

48、MOV DPTR, ST1 ; 第一個(gè)數(shù)的指針第一個(gè)數(shù)的指針 MOVX A, DPTR ; 取第一個(gè)數(shù)取第一個(gè)數(shù) MOV R2, A ; 保存保存 MOV DPTR, ST2 ; 第二個(gè)數(shù)的指針第二個(gè)數(shù)的指針 MOVX A, DPTR ; 取第二個(gè)數(shù)取第二個(gè)數(shù) 0000H0000HD_1D_2MAX(D_1,D_2)0001H0001H0002H0002HAR2單片機(jī)原理及其接口技術(shù)單片機(jī)原理及其接口技術(shù)主目錄主目錄上一頁上一頁下一頁下一頁結(jié)結(jié) 束束 CLR C SUBB A, R2 ; 兩數(shù)比較,相減后兩數(shù)比較,相減后A中的值已變化中的值已變化JNC BIG1 ; 若若AR2, 則轉(zhuǎn)存則轉(zhuǎn)存

49、AXCH A, R2 ;若若AR2,交換后,交換后A中為大數(shù)中為大數(shù)SJMP BIG0BIG1: MOVX A, DPTR ; 第二個(gè)數(shù)大第二個(gè)數(shù)大,重新取出第二個(gè)數(shù)重新取出第二個(gè)數(shù)BIG0: MOV DPTR, ST3 MOVX DPTR, A ; 存大數(shù)存大數(shù) SJMP $ END是否可以采用其他是否可以采用其他指令生成指令生成Cy位呢?位呢?單片機(jī)原理及其接口技術(shù)單片機(jī)原理及其接口技術(shù)主目錄主目錄上一頁上一頁下一頁下一頁結(jié)結(jié) 束束u比較是進(jìn)行一次減法運(yùn)算,但比較是進(jìn)行一次減法運(yùn)算,但其差值不保存其差值不保存,兩個(gè)數(shù)的原值不受,兩個(gè)數(shù)的原值不受影響,而影響,而標(biāo)志位標(biāo)志位CY要受到影響要受

50、到影響。u當(dāng)當(dāng) data1R2 , 則轉(zhuǎn)存則轉(zhuǎn)存A XCH A, R2 ; Cy=1,A=95 跳跳 CJNE A , #90 , LOOP2;與與90比較,形成比較,形成Cy LOOP2:JC NEXT;90 跳跳 INC GRADB ;B級(jí)人數(shù)加級(jí)人數(shù)加1 SJMP NEXTNEXT1:INC GRADA ;A級(jí)人數(shù)加級(jí)人數(shù)加1NEXT: INC DPTR ;修改學(xué)生成績(jī)指針;修改學(xué)生成績(jī)指針 DJNZ R2,LOOP ;是否統(tǒng)計(jì)完,未完跳是否統(tǒng)計(jì)完,未完跳 SJMP $ END單片機(jī)原理及其接口技術(shù)單片機(jī)原理及其接口技術(shù)主目錄主目錄上一頁上一頁下一頁下一頁結(jié)結(jié) 束束 散轉(zhuǎn)程序是分支程序的

51、一種散轉(zhuǎn)程序是分支程序的一種, 它它可根據(jù)運(yùn)可根據(jù)運(yùn)算結(jié)果或輸入數(shù)據(jù)將程序轉(zhuǎn)入不同的分支算結(jié)果或輸入數(shù)據(jù)將程序轉(zhuǎn)入不同的分支。4.3.3 散轉(zhuǎn)程序設(shè)計(jì)散轉(zhuǎn)程序設(shè)計(jì)單片機(jī)原理及其接口技術(shù)單片機(jī)原理及其接口技術(shù)主目錄主目錄上一頁上一頁下一頁下一頁結(jié)結(jié) 束束4.3.3 散轉(zhuǎn)程序設(shè)計(jì)散轉(zhuǎn)程序設(shè)計(jì)指令:指令:JMP A+DPTR特點(diǎn):特點(diǎn): 由由 DPTR的內(nèi)容決定分支轉(zhuǎn)移程序的的內(nèi)容決定分支轉(zhuǎn)移程序的首地址首地址, 由累加器由累加器 A的的內(nèi)容來內(nèi)容來動(dòng)態(tài)選擇動(dòng)態(tài)選擇其中的某一個(gè)分支轉(zhuǎn)移程序。其中的某一個(gè)分支轉(zhuǎn)移程序。 助記符格式助記符格式機(jī)器碼機(jī)器碼(B)相應(yīng)操作相應(yīng)操作指令說明指令說明機(jī)器周期機(jī)器

52、周期JMP A+DPTR01110011PCA+DPTR64 KB內(nèi)相對(duì)轉(zhuǎn)移內(nèi)相對(duì)轉(zhuǎn)移2單片機(jī)原理及其接口技術(shù)單片機(jī)原理及其接口技術(shù)主目錄主目錄上一頁上一頁下一頁下一頁結(jié)結(jié) 束束P141 例例4.6AJMPAJMPROUT00ROUT00AJMPAJMPROUT01ROUT01AJMPAJMPROUT127ROUT127 N=128的分支程序。已知的分支程序。已知R3的值為的值為00H7FH中中的一個(gè),請(qǐng)編出根據(jù)的一個(gè),請(qǐng)編出根據(jù)R3中的值轉(zhuǎn)移到相應(yīng)分支程序的中的值轉(zhuǎn)移到相應(yīng)分支程序的程序。程序。 指令指令0指令指令1指令指令127TAB+00HTAB+00H+01H+01H+02H+02H+

53、03H+03H+FEH+FEH+FFH+FFH設(shè)散轉(zhuǎn)指令表首地址為:設(shè)散轉(zhuǎn)指令表首地址為:TAB,賦給,賦給DPTR各子程序入口地址為:各子程序入口地址為:ROUT00ROUT127ROMROMJMP A+DPTR R3=0,跳轉(zhuǎn)到,跳轉(zhuǎn)到TAB處執(zhí)行分支處執(zhí)行分支0R3=1,跳轉(zhuǎn)到,跳轉(zhuǎn)到TAB+2處執(zhí)行分支處執(zhí)行分支1R3=127,跳轉(zhuǎn)到,跳轉(zhuǎn)到TAB+254處執(zhí)行分支處執(zhí)行分支127單片機(jī)原理及其接口技術(shù)單片機(jī)原理及其接口技術(shù)主目錄主目錄上一頁上一頁下一頁下一頁結(jié)結(jié) 束束P141 例例4.6 ORG 0100H MOV A,R3 ;R3A RL A ; AA2 MOV DPTR, #TA

54、B ;表首地址送;表首地址送DPTR JMP A+DPTR ;根據(jù);根據(jù)A值轉(zhuǎn)移值轉(zhuǎn)移 TAB: AJMP ROUT00 ;當(dāng);當(dāng)(R3)=0時(shí)轉(zhuǎn)時(shí)轉(zhuǎn)ROUT00執(zhí)行執(zhí)行 AJMP ROUT01 ;當(dāng);當(dāng)(R3)=1時(shí)轉(zhuǎn)時(shí)轉(zhuǎn)ROUT01執(zhí)行執(zhí)行 AJMP ROUT127 ;當(dāng);當(dāng)(R3)=127時(shí)轉(zhuǎn)時(shí)轉(zhuǎn)ROUT127執(zhí)行執(zhí)行ROUT00: ROUT01: ROUT127: END單片機(jī)原理及其接口技術(shù)單片機(jī)原理及其接口技術(shù)主目錄主目錄上一頁上一頁下一頁下一頁結(jié)結(jié) 束束4.3.4 循環(huán)程序設(shè)計(jì)循環(huán)程序設(shè)計(jì) 循環(huán)程序一般由四個(gè)主要部分組成循環(huán)程序一般由四個(gè)主要部分組成: (1) 初始化部分初始化部

55、分: 為循環(huán)程序做準(zhǔn)備為循環(huán)程序做準(zhǔn)備, 如規(guī)定循環(huán)次數(shù)、如規(guī)定循環(huán)次數(shù)、 給各變量和地址指針預(yù)置初值。給各變量和地址指針預(yù)置初值。 (2) 處理部分處理部分: 為反復(fù)執(zhí)行的程序段為反復(fù)執(zhí)行的程序段, 是循環(huán)程序的實(shí)是循環(huán)程序的實(shí)體體, 也是循環(huán)程序的主體。也是循環(huán)程序的主體。 (3) 循環(huán)控制部分循環(huán)控制部分: 這部分的作用是這部分的作用是修改循環(huán)變量和控修改循環(huán)變量和控制變量制變量, 并判斷循環(huán)是否結(jié)束并判斷循環(huán)是否結(jié)束, 直到符合結(jié)束條件時(shí)直到符合結(jié)束條件時(shí), 跳出跳出循環(huán)為止。循環(huán)為止。 (4) 結(jié)束部分結(jié)束部分: 這部分主要是這部分主要是對(duì)循環(huán)程序的結(jié)果進(jìn)行分對(duì)循環(huán)程序的結(jié)果進(jìn)行分析

56、、析、 處理和存放處理和存放。 單片機(jī)原理及其接口技術(shù)單片機(jī)原理及其接口技術(shù)主目錄主目錄上一頁上一頁下一頁下一頁結(jié)結(jié) 束束4.3.3 循環(huán)程序設(shè)計(jì)循環(huán)程序設(shè)計(jì)先處理后判斷先處理后判斷先判斷后處理先判斷后處理一、一、 單重循環(huán)單重循環(huán) 單片機(jī)原理及其接口技術(shù)單片機(jī)原理及其接口技術(shù)主目錄主目錄上一頁上一頁下一頁下一頁結(jié)結(jié) 束束 例例 工作單元清零。工作單元清零。 在應(yīng)用系統(tǒng)程序設(shè)計(jì)時(shí)在應(yīng)用系統(tǒng)程序設(shè)計(jì)時(shí), 有時(shí)經(jīng)常需要將存儲(chǔ)器中部分地址單有時(shí)經(jīng)常需要將存儲(chǔ)器中部分地址單元作為工作單元元作為工作單元, 存放程序執(zhí)行的中間值或執(zhí)行結(jié)果存放程序執(zhí)行的中間值或執(zhí)行結(jié)果, 工作單元清零工作單元清零工作常常放

57、在程序的初始化部分中。工作常常放在程序的初始化部分中。 設(shè)有設(shè)有50個(gè)工作單元個(gè)工作單元, 其首址為外部存儲(chǔ)器其首址為外部存儲(chǔ)器8000H單元單元, 則其工作則其工作單元清零程序如下單元清零程序如下: CLEAR: CLR A MOV DPTR, 8000H ; 工作單元首址送指針工作單元首址送指針 MOV R2, #50 ; 置循環(huán)次數(shù)置循環(huán)次數(shù)CLEAR1: MOVX DPTR, A INC DPTR ; 修改指針修改指針 DJNZ R2, CLEAR1 ; 控制循環(huán)控制循環(huán) RET 先處理后判斷先處理后判斷單片機(jī)原理及其接口技術(shù)單片機(jī)原理及其接口技術(shù)主目錄主目錄上一頁上一頁下一頁下一頁結(jié)

58、結(jié) 束束例例 設(shè)在內(nèi)部設(shè)在內(nèi)部RAM的的BLOCK單元開始處有長(zhǎng)度為單元開始處有長(zhǎng)度為L(zhǎng)EN個(gè)的無符號(hào)數(shù)據(jù)塊個(gè)的無符號(hào)數(shù)據(jù)塊, 試編一求和程序試編一求和程序, 并將和并將和存入內(nèi)部存入內(nèi)部RAM的的SUM單元(設(shè)和不超過單元(設(shè)和不超過8 位)。位)。 BLOCK EQU 20H SUM EQU 19H LEN EQU 05HSTART: CLR A ; 清累加器清累加器A MOV R2, LEN ; 數(shù)據(jù)塊長(zhǎng)度送數(shù)據(jù)塊長(zhǎng)度送R2 MOV R1, BLOCK ; 數(shù)據(jù)塊首址送數(shù)據(jù)塊首址送R1 LOOP: ADD A, R1 ; 循環(huán)加法循環(huán)加法 INC R1 ; 修改地址指針修改地址指針 DJ

59、NZ R2, LOOP ; 修改計(jì)數(shù)器并判斷修改計(jì)數(shù)器并判斷 MOV SUM, A ; 存和存和 RET 先處理后判斷先處理后判斷單片機(jī)原理及其接口技術(shù)單片機(jī)原理及其接口技術(shù)主目錄主目錄上一頁上一頁下一頁下一頁結(jié)結(jié) 束束1、上述程序?qū)?、上述程序?qū)傧忍幚砗笈袛嘞忍幚砗笈袛唷?、當(dāng)、當(dāng)LEN0時(shí),將出錯(cuò)。時(shí),將出錯(cuò)。改正辦法:改正辦法:先判斷后處理先判斷后處理。見書中例題見書中例題P146 例例4.9(1),自學(xué)。,自學(xué)。說明:說明: 課后思考,本題若采用課后思考,本題若采用先處理后判先處理后判斷的控制斷的控制,如何修改可以避免,如何修改可以避免LEN=0的的錯(cuò)誤?錯(cuò)誤?單片機(jī)原理及其接口技術(shù)單片

60、機(jī)原理及其接口技術(shù)主目錄主目錄上一頁上一頁下一頁下一頁結(jié)結(jié) 束束68圖圖 查找程序流程圖查找程序流程圖NYNR0R0+1N0FFH結(jié)束結(jié)束開始開始R0M R164HR1- -1=0?(R0)=a?NR0Y 例例 查找程序。設(shè)在以查找程序。設(shè)在以M M為為起始地址的內(nèi)部起始地址的內(nèi)部RAMRAM中連續(xù)存中連續(xù)存放有放有100100個(gè)單字節(jié)數(shù),試編一個(gè)單字節(jié)數(shù),試編一程序查找一個(gè)為程序查找一個(gè)為a a的數(shù),找到的數(shù),找到后把其地址送后把其地址送N N單元,若這個(gè)單元,若這個(gè)數(shù)不存在,則把數(shù)不存在,則把FFHFFH送送N N單元。單元。 解:使用比較指令查找,編解:使用比較指令查找,編寫成循環(huán)程序,

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論