第3章c51說明書完整_第1頁
第3章c51說明書完整_第2頁
第3章c51說明書完整_第3頁
第3章c51說明書完整_第4頁
第3章c51說明書完整_第5頁
已閱讀5頁,還剩79頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、第3章單片機(jī)的匯編語言與程序設(shè)計(jì)單片機(jī)的匯編語言與程序設(shè)計(jì) 3.1匯編語言概述 3.2 MCS-51指令系統(tǒng)簡(jiǎn)介 3.3匯編語言的編程方法 第3章單片機(jī)的匯編語言與程序設(shè)計(jì)單片機(jī)的匯編語言與程序設(shè)計(jì)3.1匯編語言概述 3.1.1 匯編語言指令格式匯編語言指令格式 3.1.2 描述操作數(shù)的簡(jiǎn)記符號(hào)描述操作數(shù)的簡(jiǎn)記符號(hào)3.2 MCS-51指令系統(tǒng)簡(jiǎn)介 3.3匯編語言的編程方法第3章單片機(jī)的匯編語言與程序設(shè)計(jì)單片機(jī)的匯編語言與程序設(shè)計(jì)匯編語言匯編語言(Assembly Language)用助記助記(字字)符符代替操 作碼,用地址符號(hào)代替地址碼的一種面向機(jī)器的程序 設(shè)計(jì)語言;本章學(xué)習(xí)目標(biāo)本章學(xué)習(xí)目標(biāo):

2、了解匯編語言的一般規(guī)則,借助指令手冊(cè)能讀懂匯編程序。匯編語言特點(diǎn)匯編語言特點(diǎn)代碼精煉、執(zhí)行速度快,但不便于編寫 較復(fù)雜的程序;匯編程序處理過程匯編程序處理過程輸入源程序檢查語法正確性(如有 語法錯(cuò)誤,輸出錯(cuò)誤信息)翻譯成二進(jìn)制目標(biāo)程序。 一條匯編語言指令中最多包含4個(gè)區(qū)段,其一般格式為: 標(biāo)號(hào)標(biāo)號(hào): 操作碼操作碼 操作數(shù)操作數(shù) ;注釋注釋第3章單片機(jī)的匯編語言與程序設(shè)計(jì)單片機(jī)的匯編語言與程序設(shè)計(jì) 標(biāo)號(hào)(標(biāo)識(shí)符)當(dāng)前指令行的符號(hào)地址,其值為 該指令的機(jī)器碼首字節(jié)在ROM中的存放地址; 標(biāo)號(hào)由英文字母開頭的16個(gè)字符組成, 不區(qū)分大小寫; 標(biāo)號(hào)與(英文)冒號(hào)可以同時(shí)省略。.0122H0123H01

3、24H. xxH xxH xxH 74H 12HROMSTART 標(biāo)號(hào)標(biāo)號(hào): 操作碼操作碼 操作數(shù)操作數(shù) ;注釋注釋 START: MOV A,#12H ;機(jī)器碼7412H 例如: 標(biāo)號(hào)標(biāo)號(hào): 操作碼操作碼 操作數(shù)操作數(shù) ;注釋注釋第3章單片機(jī)的匯編語言與程序設(shè)計(jì)單片機(jī)的匯編語言與程序設(shè)計(jì) 操作碼是指令的操作行為,由操作碼助記字符操作碼助記字符表征; 51單片機(jī)共有42種操作碼助記符,不區(qū)分大小寫。MOV A,#12H ; move (傳送)SETB P1.0 ; set bit (置位)CJNE A,R0, START ;compare and jump if not equal (比較跳轉(zhuǎn)

4、)舉例: 標(biāo)號(hào)標(biāo)號(hào): 操作碼操作碼 操作數(shù)操作數(shù) ;注釋注釋第3章單片機(jī)的匯編語言與程序設(shè)計(jì)單片機(jī)的匯編語言與程序設(shè)計(jì) 操作數(shù)是指令的操作對(duì)象,用操作數(shù)簡(jiǎn)記符表示,不區(qū)分大小寫; 操作數(shù)可以是3個(gè)、2個(gè)、1個(gè)或沒有操作數(shù); 操作數(shù)大于1時(shí)要用(英文)逗號(hào)隔開。CJNE A,R0, START ;若AR0,轉(zhuǎn)START ADD A,#10H ; A + 10H ACRL A ; A0RET ;子程序返回舉例: 標(biāo)號(hào)標(biāo)號(hào): 操作碼操作碼 操作數(shù)操作數(shù) ;注釋注釋第3章單片機(jī)的匯編語言與程序設(shè)計(jì)單片機(jī)的匯編語言與程序設(shè)計(jì) 注釋是對(duì)指令的解釋性說明,用以提高程序的可讀 性; 可用任何文字或符號(hào)描述,可

5、以省略; 由(英文)分號(hào)開始,無需結(jié)束符號(hào)。MOV A,#12H ;立即數(shù)12HASETB P1.0 ; P1.01CJNE A,R0, START ;若AR0,轉(zhuǎn)START 舉例:第3章單片機(jī)的匯編語言與程序設(shè)計(jì)單片機(jī)的匯編語言與程序設(shè)計(jì)匯編語言中標(biāo)示符標(biāo)示符/十六進(jìn)制地址十六進(jìn)制地址/立即數(shù)立即數(shù)的區(qū)別方法:標(biāo)示符標(biāo)示符標(biāo)號(hào)或匯編符號(hào)統(tǒng)稱為標(biāo)識(shí)符,由英文字母 開頭的16個(gè)字符組成。 例如 EAH,或C6A16進(jìn)制地址進(jìn)制地址若存儲(chǔ)單元地址的最高位值9時(shí),應(yīng)加 前綴“0 ” ,以區(qū)別標(biāo)識(shí)符。 例如 0EAH,或 5AH立即數(shù)立即數(shù)出現(xiàn)在指令中的常數(shù)叫做立即數(shù),應(yīng)加前綴 “ # ”以區(qū)別于地址

6、 。 例如 #0EAH,或 #5AH第3章單片機(jī)的匯編語言與程序設(shè)計(jì)單片機(jī)的匯編語言與程序設(shè)計(jì)3.1匯編語言概述 3.1.1 匯編語言指令格式匯編語言指令格式 3.1.2 描述操作數(shù)的簡(jiǎn)記符號(hào)描述操作數(shù)的簡(jiǎn)記符號(hào)3.2 MCS-51指令系統(tǒng)簡(jiǎn)介 3.3匯編語言的編程方法指令手冊(cè)中,每條指令的操作數(shù)操作數(shù)卻是以簡(jiǎn)記符號(hào)簡(jiǎn)記符號(hào)表示的。第3章單片機(jī)的匯編語言與程序設(shè)計(jì)單片機(jī)的匯編語言與程序設(shè)計(jì)掌握簡(jiǎn)記符號(hào)簡(jiǎn)記符號(hào)規(guī)則便于閱讀源程序(查指令手冊(cè))真實(shí)指令中一般都含有具體的操作數(shù),例如: MOV A, R3 或 MOV A, #35H第3章單片機(jī)的匯編語言與程序設(shè)計(jì)單片機(jī)的匯編語言與程序設(shè)計(jì)序號(hào)序號(hào)

7、簡(jiǎn)記符號(hào)簡(jiǎn)記符號(hào) 簡(jiǎn)記符號(hào)的意義簡(jiǎn)記符號(hào)的意義第3章單片機(jī)的匯編語言與程序設(shè)計(jì)單片機(jī)的匯編語言與程序設(shè)計(jì)簡(jiǎn)記符號(hào)的使用練習(xí) MOV 20H,#34H 以direct取代20H,以#data取代#34H 指令原型為 MOV direct, #data MOV R0,A 以Ri取代R0,A保持不變 指令原型為 MOV Ri, A SJMP 30H 以rel取代30H 指令原型為 SJMP rel1 #data2 #data163 Rn4 Ri5 direct6 addr167 addr118 rel9 bit10 /11 $12 第3章單片機(jī)的匯編語言與程序設(shè)計(jì)單片機(jī)的匯編語言與程序設(shè)計(jì)3.1匯編

8、語言概述3.2 MCS-51指令系統(tǒng)簡(jiǎn)介 3.2.1 數(shù)據(jù)傳送與交換類指令數(shù)據(jù)傳送與交換類指令 3.2.2 算術(shù)運(yùn)算類指令算術(shù)運(yùn)算類指令 3.2.3 邏輯運(yùn)算及移位類指令邏輯運(yùn)算及移位類指令 3.2.4 控制轉(zhuǎn)移類指令控制轉(zhuǎn)移類指令 3.2.5 尋址方式尋址方式 3.2.6 偽指令偽指令3.3匯編語言的編程方法指令系統(tǒng)指令系統(tǒng)計(jì)算機(jī)中全部指令的集合51單片機(jī)共有111條指令,按功能功能可劃分為四大類:第3章單片機(jī)的匯編語言與程序設(shè)計(jì)單片機(jī)的匯編語言與程序設(shè)計(jì) 數(shù)據(jù)傳送與交換類(31條) 算術(shù)運(yùn)算類(24條) 邏輯運(yùn)算類(34條) 轉(zhuǎn)移控制類(22條)*也可將分散于上述四類之中的位操作類位操作類

9、指令匯總為第 五大類指令指令指令CPU用于指揮功能部件完成某一指定動(dòng)作的指示 和命令可實(shí)現(xiàn)可實(shí)現(xiàn)RAM、SFR和和ROM之間的數(shù)據(jù)互傳或交換之間的數(shù)據(jù)互傳或交換第3章單片機(jī)的匯編語言與程序設(shè)計(jì)單片機(jī)的匯編語言與程序設(shè)計(jì)數(shù)據(jù)傳送與交換類指令數(shù)據(jù)傳送與交換類指令 (31條)第3章單片機(jī)的匯編語言與程序設(shè)計(jì)單片機(jī)的匯編語言與程序設(shè)計(jì)第3章單片機(jī)的匯編語言與程序設(shè)計(jì)單片機(jī)的匯編語言與程序設(shè)計(jì)數(shù)據(jù)傳送與交換類指令共有8種操作碼:MOV用于訪問片內(nèi)RAMMOVX用于訪問片外RAMMOVC用于訪問程序存儲(chǔ)器XCH和XCHD用于字節(jié)交換SWAP用于A內(nèi)半字節(jié)交換PUSH和POP用于堆棧操作數(shù)據(jù)傳送類指令的基本

10、通式為: , 表示將源操作數(shù)源操作數(shù)(src)的內(nèi)容傳送給目的操作數(shù)目的操作數(shù) (dest) ,傳送后源操作數(shù)中內(nèi)容不變。transfer具有三種具體形式:第3章單片機(jī)的匯編語言與程序設(shè)計(jì)單片機(jī)的匯編語言與程序設(shè)計(jì)MOV數(shù)據(jù)在片內(nèi)片內(nèi)RAM范圍內(nèi)傳送MOVX數(shù)據(jù)在A與片外與片外RAM之間傳送MOVC數(shù)據(jù)在A與與ROM之間傳送第3章單片機(jī)的匯編語言與程序設(shè)計(jì)單片機(jī)的匯編語言與程序設(shè)計(jì)單向箭頭表示只能從源源到目的目的雙向箭頭表示源源和目的目的可以互換位置弧線箭頭表示源源和目的目的相同(唯一)箭頭線旁邊的文字是相應(yīng)的操作碼基本規(guī)律基本規(guī)律:立即數(shù)和ROM地址只能作為源操作數(shù)(單向箭頭);內(nèi)外ROM與

11、A的數(shù)據(jù)傳送只能用MOVC操作碼助記符;片外RAM與A的數(shù)據(jù)傳送只能用MOVX操作碼助記符;PUSH、POP、SWAP只有1個(gè)操作數(shù)(弧線箭頭);位數(shù)據(jù)傳送只能在C(即Cy標(biāo)志位)與bit間進(jìn)行。數(shù)據(jù)傳送目的和源的快捷記憶法實(shí)例1:試分析并指出以下程序段運(yùn)行后,21H單元的結(jié)果如何?MOV R1, #35HMOV A ,R1 MOV 21H,A【解】【解】分析思路如下: 將具體操作數(shù)還原為操作數(shù)簡(jiǎn)記符; 根據(jù)指令表查出相應(yīng)指令功能; 推算出指令的執(zhí)行結(jié)果。源程序源程序 還原簡(jiǎn)記符還原簡(jiǎn)記符指令功能指令功能推算結(jié)果推算結(jié)果MOV R1,#35H MOV Rn,#data Rn#data R1 #

12、35HMOV A,R1 MOV A,Rn A Rn A R1= #35HMOV 21H,A MOV direct,A directA 21H A= #35H答案答案:21H單元的結(jié)果為#35H 第3章單片機(jī)的匯編語言與程序設(shè)計(jì)單片機(jī)的匯編語言與程序設(shè)計(jì)關(guān)注:關(guān)注: MOV A,R1 (機(jī)器碼E9H)工作原理工作原理利用通用寄存器通用寄存器查找操作數(shù)的做法稱為寄存器尋址寄存器尋址通用寄存器通用寄存器:Rn,A,B,CY和DPTR五種類型(一般不考慮A的作用,除非A是指令中唯一的操作數(shù)) 根據(jù)機(jī)器碼E9H先找到片內(nèi)RAM中R1里存放的35H,然后將35H傳送給A,即操作結(jié)果是通過寄存器R1得到的。

13、第3章單片機(jī)的匯編語言與程序設(shè)計(jì)單片機(jī)的匯編語言與程序設(shè)計(jì)實(shí)例2:已知片內(nèi)RAM44H單元為07H,試分析并指出以下程序運(yùn)行后,21H單元的結(jié)果如何? MOV R0, #44H MOV A , R0 MOV 21H,A【解】【解】仿照上例的分析過程:源程序源程序還原簡(jiǎn)記符還原簡(jiǎn)記符指令功能指令功能推算結(jié)果推算結(jié)果MOV R0,#44HMOV Rn,#dataRn#dataR7#44HMOV A,R0MOV A,RiA(Ri)A44H = #07HMOV 21H,AMOV direct,AdirectA21HA= #07H答案答案:上述程序段執(zhí)行后,21H單元的結(jié)果為#07H。第3章單片機(jī)的匯編

14、語言與程序設(shè)計(jì)單片機(jī)的匯編語言與程序設(shè)計(jì)關(guān)注關(guān)注:MOV A,R0(機(jī)器碼E6H)工作原理工作原理:根據(jù)機(jī)器碼E6H先找到片內(nèi)RAM中R0里存放的內(nèi)容44H,然后以44H為RAM地址將其保存的內(nèi)容07H傳送給A。 R0里存放的是操作數(shù)的地址,而不是操作數(shù)結(jié)果。 利用寄存器作為地址指針地址指針間接查找操作數(shù)的做法稱為寄存器間接尋址寄存器間接尋址 可以進(jìn)行間接尋址的寄存器稱為間址寄存器 R0、R1和DPTR是51單片機(jī)僅有的三個(gè)間址寄存器第3章單片機(jī)的匯編語言與程序設(shè)計(jì)單片機(jī)的匯編語言與程序設(shè)計(jì)第3章單片機(jī)的匯編語言與程序設(shè)計(jì)單片機(jī)的匯編語言與程序設(shè)計(jì)屬于寄存器間接尋址方式的傳送類指令第3章單片機(jī)

15、的匯編語言與程序設(shè)計(jì)單片機(jī)的匯編語言與程序設(shè)計(jì)實(shí)例3:已知ROM 2040H內(nèi)容為27H,試分析如下程序段并指出其功能。MOV DPTR,#2010H MOV A,#30H MOVC A,A+DPTRMOV 30H,A第3章單片機(jī)的匯編語言與程序設(shè)計(jì)單片機(jī)的匯編語言與程序設(shè)計(jì)【解】仿照上例的分析過程:源程序還原簡(jiǎn)記符指令功能推算結(jié)果MOV DPTR,#2010H MOV DPTR,#data16DPTR#data16 DPTR#2010HMOV A,#30HMOV A,#dataA#dataA#30HMOVC A,A+DPTR MOVC A,A+DPTRA(A+DPTR) A(2040H)=2

16、7HMOV 30H,AMOVdirect,AdirectA30HA =27H答案答案:將ROM 2040H單元的內(nèi)容送到片內(nèi)RAM 30H單元中。第3章單片機(jī)的匯編語言與程序設(shè)計(jì)單片機(jī)的匯編語言與程序設(shè)計(jì)關(guān)注關(guān)注:MOVC A,A+DPTR(機(jī)器碼93H)第3章單片機(jī)的匯編語言與程序設(shè)計(jì)單片機(jī)的匯編語言與程序設(shè)計(jì)工作原理工作原理:根據(jù)機(jī)器碼93H先找出A中存放的內(nèi)容30H,再找出DPTR中存放的內(nèi)容2010H,然后以這兩項(xiàng)內(nèi)容之和2040H為ROM地址,將其存放的內(nèi)容27H交給A。第3章單片機(jī)的匯編語言與程序設(shè)計(jì)單片機(jī)的匯編語言與程序設(shè)計(jì)第3章單片機(jī)的匯編語言與程序設(shè)計(jì)單片機(jī)的匯編語言與程序設(shè)

17、計(jì) 利用兩個(gè)寄存器內(nèi)容之和進(jìn)行間接查找操作數(shù)的做法稱為變址尋址變址尋址; A為變址寄存器,DPTR為基址寄存器; PC也可作為基址寄存器,相應(yīng)指令為MOVC A,A+PC,可實(shí)現(xiàn)A(A+PC)的功能。MOVC A,A+DPTR也具有寄存器間接尋址功能,但該操作數(shù)的地址是利用A與DPTR兩個(gè)寄存器內(nèi)容之和間接取得的,A(A+DPTR)第3章單片機(jī)的匯編語言與程序設(shè)計(jì)單片機(jī)的匯編語言與程序設(shè)計(jì)3.1匯編語言概述3.2 MCS-51指令系統(tǒng)簡(jiǎn)介 3.2.1 數(shù)據(jù)傳送與交換類指令數(shù)據(jù)傳送與交換類指令 3.2.2 算術(shù)運(yùn)算類指令算術(shù)運(yùn)算類指令 3.2.3 邏輯運(yùn)算及移位類指令邏輯運(yùn)算及移位類指令 3.2

18、.4 控制轉(zhuǎn)移類指令控制轉(zhuǎn)移類指令 3.2.5 尋址方式尋址方式 3.2.6 偽指令偽指令3.3匯編語言的編程方法第3章單片機(jī)的匯編語言與程序設(shè)計(jì)單片機(jī)的匯編語言與程序設(shè)計(jì)算術(shù)運(yùn)算類指令算術(shù)運(yùn)算類指令 可實(shí)現(xiàn)加、減、乘、除和增可實(shí)現(xiàn)加、減、乘、除和增1、減、減1等運(yùn)算功能等運(yùn)算功能 (24條)第3章單片機(jī)的匯編語言與程序設(shè)計(jì)單片機(jī)的匯編語言與程序設(shè)計(jì)算術(shù)運(yùn)算類指令共有8種操作碼:ADD用于不帶進(jìn)位加法ADDC用于帶進(jìn)位加法SUBB用于帶借位減法INC和DEC用于加1和減1MUL用于乘法DIV用于除法 DA用于十進(jìn)制加法調(diào)整第3章單片機(jī)的匯編語言與程序設(shè)計(jì)單片機(jī)的匯編語言與程序設(shè)計(jì)特點(diǎn)特點(diǎn):除加

19、1和減1外,都需以累加器A為目的操作數(shù);一般都會(huì)影響PSW中的CY、AC、OV和P四個(gè)標(biāo)志位。AC算術(shù)運(yùn)算類指令快捷記憶法第3章單片機(jī)的匯編語言與程序設(shè)計(jì)單片機(jī)的匯編語言與程序設(shè)計(jì)實(shí)例4:試解讀如下程序并說明其實(shí)現(xiàn)的主要功能MOV A,#34HADD A,#0E7HMOV 40H,AMOV A,#12HADDC A,#0FHMOV 41H,A【解】指令分析過程如下:源程序源程序推算結(jié)果推算結(jié)果MOVA,#34HA#34H ADDA,#0E7HA#34H+#0E7H A=#1BH,CY=1MOV 40H,A40HA = #1BHMOVA,#12HA#12HADDC A,#0FHA#12H+#0F

20、H+CY A=#22H, C= 0 MOV 41H,A41H A = #22H 答案答案:實(shí)現(xiàn)兩個(gè)16位數(shù)(1234H與0FE7H)的加法運(yùn)算,并將結(jié)果221BH存入片內(nèi)RAM 40H41H單元。第3章單片機(jī)的匯編語言與程序設(shè)計(jì)單片機(jī)的匯編語言與程序設(shè)計(jì)關(guān)注關(guān)注:MOV A,#34H(機(jī)器碼7434H)工作原理工作原理:根據(jù)機(jī)器碼7434H將指令中包含的立即數(shù)34H送到累加器A中。 這類指令的操作數(shù)就存在于指令自身之中; 這種以指令中存在的立即數(shù)(#data或#data16)作為操作數(shù)的做法稱為立即尋址立即尋址。第3章單片機(jī)的匯編語言與程序設(shè)計(jì)單片機(jī)的匯編語言與程序設(shè)計(jì)實(shí)例5:試解讀如下程序并

21、說明其功能MOVA,#17HMOVB,#68HMULABMOV30H,AMOV31H,B【解】分析過程如下:源程序源程序推算結(jié)果推算結(jié)果MOV A,#17HA#17HMOV B,#68HB#68HMUL ABABBA B=#9 A=#58HMOV 30H,A30HA = #58HMOV 31H,B31HB = #9答案答案:實(shí)現(xiàn)兩個(gè)8位數(shù)(17H與68H)的乘法運(yùn)算,并將乘積958H的高8位和低8位分別存入片內(nèi)RAM 31H和30H單元。第3章單片機(jī)的匯編語言與程序設(shè)計(jì)單片機(jī)的匯編語言與程序設(shè)計(jì)3.1匯編語言概述3.2 MCS-51指令系統(tǒng)簡(jiǎn)介 3.2.1 數(shù)據(jù)傳送與交換類指令數(shù)據(jù)傳送與交換類

22、指令 3.2.2 算術(shù)運(yùn)算類指令算術(shù)運(yùn)算類指令 3.2.3 邏輯運(yùn)算及移位類指令邏輯運(yùn)算及移位類指令 3.2.4 控制轉(zhuǎn)移類指令控制轉(zhuǎn)移類指令 3.2.5 尋址方式尋址方式 3.2.6 偽指令偽指令3.3匯編語言的編程方法第3章單片機(jī)的匯編語言與程序設(shè)計(jì)單片機(jī)的匯編語言與程序設(shè)計(jì)邏輯運(yùn)算及移位類指令邏輯運(yùn)算及移位類指令 可實(shí)現(xiàn)可實(shí)現(xiàn)與、或、異或、求反、置與、或、異或、求反、置1、清、清0、移位等、移位等功能功能(34條)第3章單片機(jī)的匯編語言與程序設(shè)計(jì)單片機(jī)的匯編語言與程序設(shè)計(jì)邏輯運(yùn)算及移位類指令共有10種操作碼:ANL用于邏輯與運(yùn)算ORL用于邏輯或運(yùn)算XRL用于邏輯異或運(yùn)算SETB和CLR用

23、于置1和清0CPL用于取反RL和RR于循環(huán)左移和循環(huán)右移 RLC和RRC用于帶C循環(huán)左移和帶C循環(huán)右移第3章單片機(jī)的匯編語言與程序設(shè)計(jì)單片機(jī)的匯編語言與程序設(shè)計(jì)特點(diǎn)特點(diǎn):字節(jié)運(yùn)算以A為目的操作數(shù)(#data與direct的運(yùn)算例外),位運(yùn)算以C為目的操作數(shù)。CLRCPLCLRSETB邏輯運(yùn)算指令快捷記憶法第3章單片機(jī)的匯編語言與程序設(shè)計(jì)單片機(jī)的匯編語言與程序設(shè)計(jì)特點(diǎn)特點(diǎn):只能針對(duì)A進(jìn)行操作 左移1位相當(dāng)于乘2,右移1位相當(dāng)于除2 。功能功能:對(duì)累加器A進(jìn)行循環(huán)移位操作 循環(huán)移位指令的四種移位關(guān)系第3章單片機(jī)的匯編語言與程序設(shè)計(jì)單片機(jī)的匯編語言與程序設(shè)計(jì)實(shí)例6:試解讀如下程序并說明其功能。 AN

24、LA,#0FHANLP1,#0F0HORLP1,A邏輯或的特性邏輯或的特性:x 0 = x(屏蔽屏蔽);x 1 = 1(置位置位)邏輯與的特性邏輯與的特性:x 0 = 0(清零清零);x 1 = x(屏蔽屏蔽)【解】分析過程如下:源程序源程序推算結(jié)果推算結(jié)果ANL A,#0FHAA00001111B A = #0000 xxxxBANL P1,#0F0HP1P111110000B P1= #XXXX0000BORL P1,AP1P1A P1= #XXXXxxxxB答案答案:把累加器A的低4位送入P1口的低4位,而P1口的高4位保持不變,即實(shí)現(xiàn)了A和P1的數(shù)據(jù)組合。第3章單片機(jī)的匯編語言與程序設(shè)

25、計(jì)單片機(jī)的匯編語言與程序設(shè)計(jì)實(shí)例7:試解讀如下程序并說明其功能。RL A MOV R0,A RL A ADD A,R0【解】本例中用到的RL A指令是不帶C的循環(huán)左移源程序源程序推算結(jié)果推算結(jié)果RL A循環(huán)左移一位(相當(dāng)于A2)MOV R0,AR0 A(保存 A2的值)RL A再次循環(huán)左移一位(相當(dāng)于A4)ADD A,R0A A+R0(相當(dāng)于 A2 + A4)= A6答案答案:利用移位指令實(shí)現(xiàn)了累加器A的內(nèi)容乘6 實(shí)例8:試解讀如下程序并說明其功能。MOV A,40HCPL AINC AMOV 40H,A【解】分析過程如下:源程序源程序推算結(jié)果推算結(jié)果MOV A,40HA 40HCPL AA

26、/AINC AA A+1MOV 40H,A40H A 答案答案:對(duì)片內(nèi)RAM 40H單元中的內(nèi)容取反加1,結(jié)果仍送回40H單元 。關(guān)注關(guān)注:MOV 40H,A(機(jī)器碼F540H)工作工作原理原理:根據(jù)機(jī)器碼F540H將A中存放的內(nèi)容1BH存放到RAM的40H單元。 MOV 40H,A指令的操作數(shù)地址操作數(shù)地址就存在于指令自身中; 以指令中存在的片內(nèi)RAM地址(direct)作為操作數(shù)地址的做法稱為直接尋址直接尋址; direct是片內(nèi)RAM的低128字節(jié)地址,也可是除A、B、C、DPTR外的其它SFR名稱或SFR的字節(jié)地址; 例如MOV P0,A與MOV 80H,A都屬于直接尋址。第3章單片機(jī)

27、的匯編語言與程序設(shè)計(jì)單片機(jī)的匯編語言與程序設(shè)計(jì)3.1匯編語言概述3.2 MCS-51指令系統(tǒng)簡(jiǎn)介 3.2.1 數(shù)據(jù)傳送與交換類指令數(shù)據(jù)傳送與交換類指令 3.2.2 算術(shù)運(yùn)算類指令算術(shù)運(yùn)算類指令 3.2.3 邏輯運(yùn)算及移位類指令邏輯運(yùn)算及移位類指令 3.2.4 控制轉(zhuǎn)移類指令控制轉(zhuǎn)移類指令 3.2.5 尋址方式尋址方式 3.2.6 偽指令偽指令3.3匯編語言的編程方法第3章單片機(jī)的匯編語言與程序設(shè)計(jì)單片機(jī)的匯編語言與程序設(shè)計(jì)控制轉(zhuǎn)移類指令控制轉(zhuǎn)移類指令 通過改變程序計(jì)數(shù)器通過改變程序計(jì)數(shù)器PC值值,實(shí)現(xiàn)程序轉(zhuǎn)移功能,實(shí)現(xiàn)程序轉(zhuǎn)移功能 (22條)第3章單片機(jī)的匯編語言與程序設(shè)計(jì)單片機(jī)的匯編語言與程

28、序設(shè)計(jì)控制轉(zhuǎn)移類指令共有18種操作碼: AJMP、SJMP、LJMP、JMP用于無條件轉(zhuǎn)移 ACALL和LCALL用于子程序調(diào)用 RET和RETI用于子程序和中斷返回 JZ、JNZ、CJNE和DJNZ用于字節(jié)條件轉(zhuǎn)移 JC、JNC、JB、JNB和JBC用于位條件轉(zhuǎn)移 NOP用于空操作第3章單片機(jī)的匯編語言與程序設(shè)計(jì)單片機(jī)的匯編語言與程序設(shè)計(jì)功能功能:根據(jù)轉(zhuǎn)移地址修改PC當(dāng)前值;轉(zhuǎn)移地址轉(zhuǎn)移地址:LJMP16位;AJMP11位; SJMP8位; JMP16位特點(diǎn)特點(diǎn):前三項(xiàng)都可用語句標(biāo)號(hào)代替具體地址; (例如 LJMP START 或 SJMP ) 第四項(xiàng)為變址尋址轉(zhuǎn)移指令 PCA+DPTR無條

29、件轉(zhuǎn)移第3章單片機(jī)的匯編語言與程序設(shè)計(jì)單片機(jī)的匯編語言與程序設(shè)計(jì)功能功能:根據(jù)轉(zhuǎn)移地址(rel )修改PC當(dāng)前值;特點(diǎn)特點(diǎn):rel值為-128127,可用語句標(biāo)號(hào)代替; 例如 JC SMALL以 rel表示操作數(shù)的存在方式相對(duì)尋址相對(duì)尋址 條件轉(zhuǎn)移指令快捷記憶法 第3章單片機(jī)的匯編語言與程序設(shè)計(jì)單片機(jī)的匯編語言與程序設(shè)計(jì)實(shí)例9:編程實(shí)現(xiàn)如下功能: 比較片內(nèi)RAM的30H和40H單元中兩個(gè)無符號(hào)數(shù)的大小,并將大數(shù)存入50H,小數(shù)存入51H,若兩數(shù)相等則使位單元7FH置1。【解】由于指令CJNE具有利用減法判斷雙方關(guān)系且影響C標(biāo)志位的特點(diǎn),故可采用先根據(jù)CJNE進(jìn)行一次跳轉(zhuǎn),然后再根據(jù)C進(jìn)行二次跳

30、轉(zhuǎn)的做法。第3章單片機(jī)的匯編語言與程序設(shè)計(jì)單片機(jī)的匯編語言與程序設(shè)計(jì)實(shí)例9 仿真程序第3章單片機(jī)的匯編語言與程序設(shè)計(jì)單片機(jī)的匯編語言與程序設(shè)計(jì)關(guān)注關(guān)注: SJMP FINISH(機(jī)器碼800EH)這種利用偏移量rel修正轉(zhuǎn)移目標(biāo)地址的做法稱為相對(duì)尋址相對(duì)尋址 工作原理工作原理:根據(jù)機(jī)器碼800EH,由PC當(dāng)前值0009H和指令中含有的偏移偏移量量0EH得到PC修正后的目標(biāo)地址0017H(=0009H+0EH),從而引導(dǎo)程序轉(zhuǎn)向FINISH語句行。* rel值由匯編系統(tǒng)根據(jù)行號(hào)FINISH算出第3章單片機(jī)的匯編語言與程序設(shè)計(jì)單片機(jī)的匯編語言與程序設(shè)計(jì)實(shí)例10:編程實(shí)現(xiàn)如下功能:將存放在片內(nèi)RAM

31、 20H單元開始的10個(gè)數(shù)連續(xù)傳送到片外RAM 50H單元開始的地址處。Rn 0 ?是 PCPC+rel 順序執(zhí)行下條指令 Rn Rn - 1【解】 思路分析: 將R1作為指向外部RAM的低8位地址(50H起)寄存器,P2作為指向外部RAM的高8位地址(00H)寄存器。 利用Rn作為循環(huán)計(jì)數(shù)器,配合DJNZ指令進(jìn)行操作。第3章單片機(jī)的匯編語言與程序設(shè)計(jì)單片機(jī)的匯編語言與程序設(shè)計(jì) MOV R0,#20H ; 片內(nèi)RAM數(shù)據(jù)塊指針R0賦初值 MOV R1,#50H ; 片內(nèi)RAM數(shù)據(jù)塊指針R1賦初值 MOV R3,#0AH ;計(jì)數(shù)器賦初值 MOV P2,#0; 高8位地址由P2提供,賦初值0LAB

32、: MOV A,R0 ; 利用A做中間交換單元 MOVX R1,A ;傳送到片外RAM INC R0; 指針R0加1刷新 INC R1 ; 指針R1加1刷新 DJNZ R3,LAB ; R3減1,判斷循環(huán)是否結(jié)束利用DPTR進(jìn)行片外RAM尋址 MOV R0,#20H ;片內(nèi)RAM數(shù)據(jù)塊指針R0賦初值 MOV DPTR,#50H ;片外RAM數(shù)據(jù)塊指針DPTR賦初值 MOV R3,#0AH ;計(jì)數(shù)器賦初值LAB: MOV A,R0 ;利用A做中間交換單元 MOVX DPTR,A ;傳送到片外RAM INC R0 ; 指針R0加1刷新 INC DPTR ; 指針DPTR加1刷新 DJNZ R3,L

33、AB ;R3減1,判斷循環(huán)是否結(jié)束利用R1和P2進(jìn)行片外RAM尋址第3章單片機(jī)的匯編語言與程序設(shè)計(jì)單片機(jī)的匯編語言與程序設(shè)計(jì)實(shí)例11:試分析如下延時(shí)子程序延時(shí)子程序可實(shí)現(xiàn)的延時(shí)量(設(shè)系統(tǒng)采用12MHz晶振)。 DEL50: MOV R7,#200DEL1: MOV R6,#125DEL2: DJNZ R6,DEL2 DJNZ R7,DEL1 RET;循環(huán)125次;循環(huán)200次 ;返回語句【解解】12MHz晶振時(shí)對(duì)應(yīng)的機(jī)器周期為1s。查手冊(cè)可知,指令DJNZ需要占用機(jī)時(shí)為2s,MOV為1 s ,則改子程序的總延時(shí)量應(yīng)為: (2125+1+2)200+1 = 50.601ms答案答案:該子程序的軟

34、件延時(shí)量約為50毫秒。第3章單片機(jī)的匯編語言與程序設(shè)計(jì)單片機(jī)的匯編語言與程序設(shè)計(jì)實(shí)例12:編程將A中的并行數(shù)據(jù)轉(zhuǎn)換為串行數(shù)據(jù),并通過P1.0口輸出。要求數(shù)據(jù)輸出時(shí)高位在先。 MOV R2,#8;計(jì)數(shù)器初值CLR C;CY清零NEXT: RLC A ;數(shù)據(jù)移位至CY中 MOV P1.0,C ;從P1.0輸出串行數(shù)據(jù) DJNZ R2,NEXT;若轉(zhuǎn)換未完,繼續(xù)【解】利用帶進(jìn)位循環(huán)和循環(huán)控制指令可實(shí)現(xiàn)并/傳轉(zhuǎn)換第3章單片機(jī)的匯編語言與程序設(shè)計(jì)單片機(jī)的匯編語言與程序設(shè)計(jì)關(guān)注關(guān)注:CLR C(機(jī)器碼C3H)這種利用位地址bit作為指令操作數(shù)的做法稱為位尋址;位尋址;bit可以是片內(nèi)RAM可位尋址區(qū)內(nèi)的位

35、地址,也可以是SFR中的位地址或位名稱;該程序的第二和第四條指令都屬于位尋址方法。工作原理工作原理:根據(jù)機(jī)器碼C3H,將進(jìn)位標(biāo)志CY的值清零。由于CY具有0D7H位地址,因而CLR C與CLR 0D7H具有同等功能。第3章單片機(jī)的匯編語言與程序設(shè)計(jì)單片機(jī)的匯編語言與程序設(shè)計(jì)3.1匯編語言概述3.2 MCS-51指令系統(tǒng)簡(jiǎn)介 3.2.1 數(shù)據(jù)傳送與交換類指令數(shù)據(jù)傳送與交換類指令 3.2.2 算術(shù)運(yùn)算類指令算術(shù)運(yùn)算類指令 3.2.3 邏輯運(yùn)算及移位類指令邏輯運(yùn)算及移位類指令 3.2.4 控制轉(zhuǎn)移類指令控制轉(zhuǎn)移類指令 3.2.5 尋址方式尋址方式 3.2.6 偽指令偽指令3.3匯編語言的編程方法第3

36、章單片機(jī)的匯編語言與程序設(shè)計(jì)單片機(jī)的匯編語言與程序設(shè)計(jì)尋址方式是對(duì)操作數(shù)存在規(guī)律的歸納,一條指令究竟屬于哪種尋址方式往往并不重要,也不會(huì)影響它的使用,因而不必過意追究。51單片機(jī)共有七種尋址方式: 直接尋址、寄存器尋址、寄存器間接尋址、立即尋址、 變址尋址、位尋址、相對(duì)尋址。尋址方式越多,單片機(jī)的功能就越強(qiáng);CPU取得操作數(shù)的方法稱為尋址方法 第3章單片機(jī)的匯編語言與程序設(shè)計(jì)單片機(jī)的匯編語言與程序設(shè)計(jì)(1)直接尋址)直接尋址 指令中包含direct形式操作數(shù)的尋址方式稱為直接尋址direct既可以是片內(nèi)RAM的低128字節(jié)地址,也可以是除A、B、C、DPTR外的其它特殊功能寄存器名。 MOV

37、40H, A ;指令原形 MOV direct,A(2)寄存器尋址)寄存器尋址 第3章單片機(jī)的匯編語言與程序設(shè)計(jì)單片機(jī)的匯編語言與程序設(shè)計(jì)指令中包含通用寄存器通用寄存器形式操作數(shù)的尋址方式稱為寄存器尋址通用寄存器只能是Rn,A,B,CY和DPTR五種類型MOV A,R1 ;指令原形 MOV A,Rn(3)寄存器間接尋址)寄存器間接尋址 第3章單片機(jī)的匯編語言與程序設(shè)計(jì)單片機(jī)的匯編語言與程序設(shè)計(jì)MOV A, R0 ;指令原形 MOV A,Ri指令中包含“間址寄存器間址寄存器”形式操作數(shù)的尋址方式稱為寄存器間接尋址間址寄存器只能由R0、R1或DPTR三個(gè)寄存器兼任第3章單片機(jī)的匯編語言與程序設(shè)計(jì)單

38、片機(jī)的匯編語言與程序設(shè)計(jì)MOV A, #44H;指令原形 MOV A,#data(4)立即尋址)立即尋址 指令中包含#data或#data16形式操作數(shù)的尋址方式稱為立即尋址 第3章單片機(jī)的匯編語言與程序設(shè)計(jì)單片機(jī)的匯編語言與程序設(shè)計(jì)(5)變址尋址)變址尋址 MOVC A, A+DPTR ;A(A+DPTR)指令中包含“A+基址寄存器基址寄存器”形式操作數(shù)的尋址方式稱為變址尋址方式基址寄存器只能由DPTR或PC兼任兼任 MOVC A,A+PCMOVC A,A+DPTRJMP A, A+DPTR僅有3條變址尋址指令第3章單片機(jī)的匯編語言與程序設(shè)計(jì)單片機(jī)的匯編語言與程序設(shè)計(jì)MOV C, 2FH ;

39、 指令原形 MOV C,bit SETB 0E0H ; 指令原形 SETB bitCLR P1.0 ; 指令原形 CLR bit(6)位尋址)位尋址 指令中包含bit形式操作數(shù)的尋址方式稱為位尋址方式bit形式的位地址可以是片內(nèi)RAM中的位地址,也可以是SFR中的位地址或位名稱 第3章單片機(jī)的匯編語言與程序設(shè)計(jì)單片機(jī)的匯編語言與程序設(shè)計(jì)(7)相對(duì)尋址)相對(duì)尋址 SJMP FINISH; 指令原形 SJMP rel指令中包含rel形式操作數(shù)的尋址方式稱為相對(duì)尋址方式rel可以是片內(nèi)RAM或ROM地址偏移量的形式,也可以是標(biāo)號(hào)的形式。第3章單片機(jī)的匯編語言與程序設(shè)計(jì)單片機(jī)的匯編語言與程序設(shè)計(jì)3.1

40、匯編語言概述3.2 MCS-51指令系統(tǒng)簡(jiǎn)介 3.2.1 數(shù)據(jù)傳送與交換類指令數(shù)據(jù)傳送與交換類指令 3.2.2 算術(shù)運(yùn)算類指令算術(shù)運(yùn)算類指令 3.2.3 邏輯運(yùn)算及移位類指令邏輯運(yùn)算及移位類指令 3.2.4 控制轉(zhuǎn)移類指令控制轉(zhuǎn)移類指令 3.2.5 尋址方式尋址方式 3.2.6 偽指令偽指令3.3匯編語言的編程方法3.2.5.偽指令偽指令 第3章單片機(jī)的匯編語言與程序設(shè)計(jì)單片機(jī)的匯編語言與程序設(shè)計(jì)匯編語言指令的兩類指令:硬指令硬指令(指令性語句)匯編后可以產(chǎn)生機(jī)器 碼的指令,如前介紹的111條指令;偽指令偽指令(指示性語句)用于指示匯編系統(tǒng)軟件要完成的操作 ,一般不產(chǎn)生機(jī)器碼常用的偽指令: O

41、RG、END、EQU、DATA、BIT、DB第3章單片機(jī)的匯編語言與程序設(shè)計(jì)單片機(jī)的匯編語言與程序設(shè)計(jì) MCS-51常用偽指令 偽指令名稱格式功能描述ORG(Oringin)程序起始地址ORG 16位地址用于定義匯編程序或數(shù)據(jù)在ROM中存放的起始地址EQU(Equate)等值指令標(biāo)識(shí)符 EQU 數(shù)或匯編符號(hào)用于將一個(gè)數(shù)值或匯編符號(hào)賦給該標(biāo)示符DATA(Data)數(shù)據(jù)地址賦值標(biāo)識(shí)符 DATA 內(nèi)存字節(jié)地址用于將一個(gè)內(nèi)部 RAM 的地址賦給該標(biāo)示符BIT(Bit)位地址賦值標(biāo)識(shí)符 DATA 位地址或位名稱用于將一個(gè)位地址或位名稱賦給該標(biāo)示符DB(Define Byte)定義字節(jié)標(biāo)號(hào): DB 用于把

42、項(xiàng)或項(xiàng)表中的字節(jié)(8位)數(shù)值依次存入標(biāo)號(hào)開始的存儲(chǔ)單元中END(End)結(jié)束匯編END用于指示匯編源程序段結(jié)束(1)ORG(= origin)格式:ORG xxxx(16位地址)功能:用于定義匯編程序或數(shù)據(jù)在ROM中存放的首地址舉例: ORG 100H START: MOV A,R4 MOV B,A : ORG后面第1條指令的首地址為100H,即START的值為100H。(2)EQU(= equate)格式:標(biāo)示符標(biāo)示符 EQU 數(shù)值或匯編符號(hào)數(shù)值或匯編符號(hào)功能:用于將一個(gè)數(shù)值或匯編符號(hào)賦給該標(biāo)示符舉例:ADDR EQU 2000H ;將2000H賦予 ADDR ADDR EQU MEM2 ;

43、將MEM2賦予 ADDR說明說明: 第2條語句的匯編符號(hào)MEM2必須是已賦值過的(3)DATA(= data)格式:標(biāo)示符標(biāo)示符 DATA 內(nèi)部?jī)?nèi)部RAM地址或表達(dá)式地址或表達(dá)式功能:用于將一個(gè)內(nèi)部 RAM 的地址賦給該標(biāo)示符舉例: COUNT DATA 50H ;將50H賦予 COUNT COUNT EQU 50H ;將50H賦予 COUNTEQU與與DATA區(qū)別區(qū)別: 1)EQU須先定義后使用,而DATA可無須如此。 2)EQU可用于匯編符號(hào),而DATA不能。 3)DATA可用于表達(dá)式,而EQU不行。 (4)BIT(= bit)格式:標(biāo)示符標(biāo)示符 BIT 位地址或位名稱位地址或位名稱功能:

44、用于將一個(gè)位地址或位名稱賦給該標(biāo)示符舉例: KEY1 BIT P1.0 ;將P1.0賦予KEY1(5)DB(= define byte)格式:標(biāo)號(hào)標(biāo)號(hào): DB n1,n2,ni功能:用于定義以字節(jié)為單位以字節(jié)為單位的常數(shù)表規(guī)則: ”ni”按順序存在標(biāo)號(hào)地址開始的單元中; 常數(shù)之間用英文逗號(hào)分開,最后一個(gè)不要逗號(hào)例如: JPH: DB 12H,20H,35H,40H,58H 表示字節(jié)常數(shù)12H將放置在JPH語句標(biāo)號(hào)對(duì)應(yīng)的ROM地址處,其它常數(shù)依此順延排列(6)END(= end)格式:END功能:用于表示匯編程序到此結(jié)束說明:放在源程序的最后一行,并只允許有一個(gè)END第3章單片機(jī)的匯編語言與程序設(shè)計(jì)單片機(jī)的匯編語言與程序設(shè)計(jì)3.1匯編語言概述 3.2指令系統(tǒng)簡(jiǎn)介 3.3匯編語言的編程方法第3章單片機(jī)的匯編語言與程序設(shè)計(jì)單片機(jī)的匯編語言與程序設(shè)計(jì)匯編語言程序設(shè)計(jì)步驟匯編語言程序設(shè)計(jì)步驟 分析問題,確定算法或解題思路 畫程序流程圖編寫匯編程序程序調(diào)試與修改用匯編語言進(jìn)行程序設(shè)計(jì)的過程和用高級(jí)語言進(jìn)行程序設(shè)計(jì)的過程類似,一般需要經(jīng)過以下幾個(gè)步驟:第3章單片機(jī)的匯編語言與程序設(shè)計(jì)單片機(jī)

溫馨提示

  • 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)論