![第3章c51說明書完整_第1頁](http://file3.renrendoc.com/fileroot_temp3/2022-6/4/e5290158-8254-4167-9ade-54c839a01f1a/e5290158-8254-4167-9ade-54c839a01f1a1.gif)
![第3章c51說明書完整_第2頁](http://file3.renrendoc.com/fileroot_temp3/2022-6/4/e5290158-8254-4167-9ade-54c839a01f1a/e5290158-8254-4167-9ade-54c839a01f1a2.gif)
![第3章c51說明書完整_第3頁](http://file3.renrendoc.com/fileroot_temp3/2022-6/4/e5290158-8254-4167-9ade-54c839a01f1a/e5290158-8254-4167-9ade-54c839a01f1a3.gif)
![第3章c51說明書完整_第4頁](http://file3.renrendoc.com/fileroot_temp3/2022-6/4/e5290158-8254-4167-9ade-54c839a01f1a/e5290158-8254-4167-9ade-54c839a01f1a4.gif)
![第3章c51說明書完整_第5頁](http://file3.renrendoc.com/fileroot_temp3/2022-6/4/e5290158-8254-4167-9ade-54c839a01f1a/e5290158-8254-4167-9ade-54c839a01f1a5.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、第3章單片機的匯編語言與程序設(shè)計單片機的匯編語言與程序設(shè)計 3.1匯編語言概述 3.2 MCS-51指令系統(tǒng)簡介 3.3匯編語言的編程方法 第3章單片機的匯編語言與程序設(shè)計單片機的匯編語言與程序設(shè)計3.1匯編語言概述 3.1.1 匯編語言指令格式匯編語言指令格式 3.1.2 描述操作數(shù)的簡記符號描述操作數(shù)的簡記符號3.2 MCS-51指令系統(tǒng)簡介 3.3匯編語言的編程方法第3章單片機的匯編語言與程序設(shè)計單片機的匯編語言與程序設(shè)計匯編語言匯編語言(Assembly Language)用助記助記(字字)符符代替操 作碼,用地址符號代替地址碼的一種面向機器的程序 設(shè)計語言;本章學(xué)習(xí)目標(biāo)本章學(xué)習(xí)目標(biāo):
2、了解匯編語言的一般規(guī)則,借助指令手冊能讀懂匯編程序。匯編語言特點匯編語言特點代碼精煉、執(zhí)行速度快,但不便于編寫 較復(fù)雜的程序;匯編程序處理過程匯編程序處理過程輸入源程序檢查語法正確性(如有 語法錯誤,輸出錯誤信息)翻譯成二進制目標(biāo)程序。 一條匯編語言指令中最多包含4個區(qū)段,其一般格式為: 標(biāo)號標(biāo)號: 操作碼操作碼 操作數(shù)操作數(shù) ;注釋注釋第3章單片機的匯編語言與程序設(shè)計單片機的匯編語言與程序設(shè)計 標(biāo)號(標(biāo)識符)當(dāng)前指令行的符號地址,其值為 該指令的機器碼首字節(jié)在ROM中的存放地址; 標(biāo)號由英文字母開頭的16個字符組成, 不區(qū)分大小寫; 標(biāo)號與(英文)冒號可以同時省略。.0122H0123H01
3、24H. xxH xxH xxH 74H 12HROMSTART 標(biāo)號標(biāo)號: 操作碼操作碼 操作數(shù)操作數(shù) ;注釋注釋 START: MOV A,#12H ;機器碼7412H 例如: 標(biāo)號標(biāo)號: 操作碼操作碼 操作數(shù)操作數(shù) ;注釋注釋第3章單片機的匯編語言與程序設(shè)計單片機的匯編語言與程序設(shè)計 操作碼是指令的操作行為,由操作碼助記字符操作碼助記字符表征; 51單片機共有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)號標(biāo)號: 操作碼操作碼 操作數(shù)操作數(shù) ;注釋注釋第3章單片機的匯編語言與程序設(shè)計單片機的匯編語言與程序設(shè)計 操作數(shù)是指令的操作對象,用操作數(shù)簡記符表示,不區(qū)分大小寫; 操作數(shù)可以是3個、2個、1個或沒有操作數(shù); 操作數(shù)大于1時要用(英文)逗號隔開。CJNE A,R0, START ;若AR0,轉(zhuǎn)START ADD A,#10H ; A + 10H ACRL A ; A0RET ;子程序返回舉例: 標(biāo)號標(biāo)號: 操作碼操作碼 操作數(shù)操作數(shù) ;注釋注釋第3章單片機的匯編語言與程序設(shè)計單片機的匯編語言與程序設(shè)計 注釋是對指令的解釋性說明,用以提高程序的可讀 性; 可用任何文字或符號描述,可
5、以省略; 由(英文)分號開始,無需結(jié)束符號。MOV A,#12H ;立即數(shù)12HASETB P1.0 ; P1.01CJNE A,R0, START ;若AR0,轉(zhuǎn)START 舉例:第3章單片機的匯編語言與程序設(shè)計單片機的匯編語言與程序設(shè)計匯編語言中標(biāo)示符標(biāo)示符/十六進制地址十六進制地址/立即數(shù)立即數(shù)的區(qū)別方法:標(biāo)示符標(biāo)示符標(biāo)號或匯編符號統(tǒng)稱為標(biāo)識符,由英文字母 開頭的16個字符組成。 例如 EAH,或C6A16進制地址進制地址若存儲單元地址的最高位值9時,應(yīng)加 前綴“0 ” ,以區(qū)別標(biāo)識符。 例如 0EAH,或 5AH立即數(shù)立即數(shù)出現(xiàn)在指令中的常數(shù)叫做立即數(shù),應(yīng)加前綴 “ # ”以區(qū)別于地址
6、 。 例如 #0EAH,或 #5AH第3章單片機的匯編語言與程序設(shè)計單片機的匯編語言與程序設(shè)計3.1匯編語言概述 3.1.1 匯編語言指令格式匯編語言指令格式 3.1.2 描述操作數(shù)的簡記符號描述操作數(shù)的簡記符號3.2 MCS-51指令系統(tǒng)簡介 3.3匯編語言的編程方法指令手冊中,每條指令的操作數(shù)操作數(shù)卻是以簡記符號簡記符號表示的。第3章單片機的匯編語言與程序設(shè)計單片機的匯編語言與程序設(shè)計掌握簡記符號簡記符號規(guī)則便于閱讀源程序(查指令手冊)真實指令中一般都含有具體的操作數(shù),例如: MOV A, R3 或 MOV A, #35H第3章單片機的匯編語言與程序設(shè)計單片機的匯編語言與程序設(shè)計序號序號
7、簡記符號簡記符號 簡記符號的意義簡記符號的意義第3章單片機的匯編語言與程序設(shè)計單片機的匯編語言與程序設(shè)計簡記符號的使用練習(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章單片機的匯編語言與程序設(shè)計單片機的匯編語言與程序設(shè)計3.1匯編
8、語言概述3.2 MCS-51指令系統(tǒng)簡介 3.2.1 數(shù)據(jù)傳送與交換類指令數(shù)據(jù)傳送與交換類指令 3.2.2 算術(shù)運算類指令算術(shù)運算類指令 3.2.3 邏輯運算及移位類指令邏輯運算及移位類指令 3.2.4 控制轉(zhuǎn)移類指令控制轉(zhuǎn)移類指令 3.2.5 尋址方式尋址方式 3.2.6 偽指令偽指令3.3匯編語言的編程方法指令系統(tǒng)指令系統(tǒng)計算機中全部指令的集合51單片機共有111條指令,按功能功能可劃分為四大類:第3章單片機的匯編語言與程序設(shè)計單片機的匯編語言與程序設(shè)計 數(shù)據(jù)傳送與交換類(31條) 算術(shù)運算類(24條) 邏輯運算類(34條) 轉(zhuǎn)移控制類(22條)*也可將分散于上述四類之中的位操作類位操作類
9、指令匯總為第 五大類指令指令指令CPU用于指揮功能部件完成某一指定動作的指示 和命令可實現(xiàn)可實現(xiàn)RAM、SFR和和ROM之間的數(shù)據(jù)互傳或交換之間的數(shù)據(jù)互傳或交換第3章單片機的匯編語言與程序設(shè)計單片機的匯編語言與程序設(shè)計數(shù)據(jù)傳送與交換類指令數(shù)據(jù)傳送與交換類指令 (31條)第3章單片機的匯編語言與程序設(shè)計單片機的匯編語言與程序設(shè)計第3章單片機的匯編語言與程序設(shè)計單片機的匯編語言與程序設(shè)計數(shù)據(jù)傳送與交換類指令共有8種操作碼:MOV用于訪問片內(nèi)RAMMOVX用于訪問片外RAMMOVC用于訪問程序存儲器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章單片機的匯編語言與程序設(shè)計單片機的匯編語言與程序設(shè)計MOV數(shù)據(jù)在片內(nèi)片內(nèi)RAM范圍內(nèi)傳送MOVX數(shù)據(jù)在A與片外與片外RAM之間傳送MOVC數(shù)據(jù)在A與與ROM之間傳送第3章單片機的匯編語言與程序設(shè)計單片機的匯編語言與程序設(shè)計單向箭頭表示只能從源源到目的目的雙向箭頭表示源源和目的目的可以互換位置弧線箭頭表示源源和目的目的相同(唯一)箭頭線旁邊的文字是相應(yīng)的操作碼基本規(guī)律基本規(guī)律:立即數(shù)和ROM地址只能作為源操作數(shù)(單向箭頭);內(nèi)外ROM與
11、A的數(shù)據(jù)傳送只能用MOVC操作碼助記符;片外RAM與A的數(shù)據(jù)傳送只能用MOVX操作碼助記符;PUSH、POP、SWAP只有1個操作數(shù)(弧線箭頭);位數(shù)據(jù)傳送只能在C(即Cy標(biāo)志位)與bit間進行。數(shù)據(jù)傳送目的和源的快捷記憶法實例1:試分析并指出以下程序段運行后,21H單元的結(jié)果如何?MOV R1, #35HMOV A ,R1 MOV 21H,A【解】【解】分析思路如下: 將具體操作數(shù)還原為操作數(shù)簡記符; 根據(jù)指令表查出相應(yīng)指令功能; 推算出指令的執(zhí)行結(jié)果。源程序源程序 還原簡記符還原簡記符指令功能指令功能推算結(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章單片機的匯編語言與程序設(shè)計單片機的匯編語言與程序設(shè)計關(guān)注:關(guān)注: MOV A,R1 (機器碼E9H)工作原理工作原理利用通用寄存器通用寄存器查找操作數(shù)的做法稱為寄存器尋址寄存器尋址通用寄存器通用寄存器:Rn,A,B,CY和DPTR五種類型(一般不考慮A的作用,除非A是指令中唯一的操作數(shù)) 根據(jù)機器碼E9H先找到片內(nèi)RAM中R1里存放的35H,然后將35H傳送給A,即操作結(jié)果是通過寄存器R1得到的。
13、第3章單片機的匯編語言與程序設(shè)計單片機的匯編語言與程序設(shè)計實例2:已知片內(nèi)RAM44H單元為07H,試分析并指出以下程序運行后,21H單元的結(jié)果如何? MOV R0, #44H MOV A , R0 MOV 21H,A【解】【解】仿照上例的分析過程:源程序源程序還原簡記符還原簡記符指令功能指令功能推算結(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章單片機的匯編
14、語言與程序設(shè)計單片機的匯編語言與程序設(shè)計關(guān)注關(guān)注:MOV A,R0(機器碼E6H)工作原理工作原理:根據(jù)機器碼E6H先找到片內(nèi)RAM中R0里存放的內(nèi)容44H,然后以44H為RAM地址將其保存的內(nèi)容07H傳送給A。 R0里存放的是操作數(shù)的地址,而不是操作數(shù)結(jié)果。 利用寄存器作為地址指針地址指針間接查找操作數(shù)的做法稱為寄存器間接尋址寄存器間接尋址 可以進行間接尋址的寄存器稱為間址寄存器 R0、R1和DPTR是51單片機僅有的三個間址寄存器第3章單片機的匯編語言與程序設(shè)計單片機的匯編語言與程序設(shè)計第3章單片機的匯編語言與程序設(shè)計單片機的匯編語言與程序設(shè)計屬于寄存器間接尋址方式的傳送類指令第3章單片機
15、的匯編語言與程序設(shè)計單片機的匯編語言與程序設(shè)計實例3:已知ROM 2040H內(nèi)容為27H,試分析如下程序段并指出其功能。MOV DPTR,#2010H MOV A,#30H MOVC A,A+DPTRMOV 30H,A第3章單片機的匯編語言與程序設(shè)計單片機的匯編語言與程序設(shè)計【解】仿照上例的分析過程:源程序還原簡記符指令功能推算結(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章單片機的匯編語言與程序設(shè)計單片機的匯編語言與程序設(shè)計關(guān)注關(guān)注:MOVC A,A+DPTR(機器碼93H)第3章單片機的匯編語言與程序設(shè)計單片機的匯編語言與程序設(shè)計工作原理工作原理:根據(jù)機器碼93H先找出A中存放的內(nèi)容30H,再找出DPTR中存放的內(nèi)容2010H,然后以這兩項內(nèi)容之和2040H為ROM地址,將其存放的內(nèi)容27H交給A。第3章單片機的匯編語言與程序設(shè)計單片機的匯編語言與程序設(shè)計第3章單片機的匯編語言與程序設(shè)計單片機的匯編語言與程序設(shè)
17、計 利用兩個寄存器內(nèi)容之和進行間接查找操作數(shù)的做法稱為變址尋址變址尋址; A為變址寄存器,DPTR為基址寄存器; PC也可作為基址寄存器,相應(yīng)指令為MOVC A,A+PC,可實現(xiàn)A(A+PC)的功能。MOVC A,A+DPTR也具有寄存器間接尋址功能,但該操作數(shù)的地址是利用A與DPTR兩個寄存器內(nèi)容之和間接取得的,A(A+DPTR)第3章單片機的匯編語言與程序設(shè)計單片機的匯編語言與程序設(shè)計3.1匯編語言概述3.2 MCS-51指令系統(tǒng)簡介 3.2.1 數(shù)據(jù)傳送與交換類指令數(shù)據(jù)傳送與交換類指令 3.2.2 算術(shù)運算類指令算術(shù)運算類指令 3.2.3 邏輯運算及移位類指令邏輯運算及移位類指令 3.2
18、.4 控制轉(zhuǎn)移類指令控制轉(zhuǎn)移類指令 3.2.5 尋址方式尋址方式 3.2.6 偽指令偽指令3.3匯編語言的編程方法第3章單片機的匯編語言與程序設(shè)計單片機的匯編語言與程序設(shè)計算術(shù)運算類指令算術(shù)運算類指令 可實現(xiàn)加、減、乘、除和增可實現(xiàn)加、減、乘、除和增1、減、減1等運算功能等運算功能 (24條)第3章單片機的匯編語言與程序設(shè)計單片機的匯編語言與程序設(shè)計算術(shù)運算類指令共有8種操作碼:ADD用于不帶進位加法ADDC用于帶進位加法SUBB用于帶借位減法INC和DEC用于加1和減1MUL用于乘法DIV用于除法 DA用于十進制加法調(diào)整第3章單片機的匯編語言與程序設(shè)計單片機的匯編語言與程序設(shè)計特點特點:除加
19、1和減1外,都需以累加器A為目的操作數(shù);一般都會影響PSW中的CY、AC、OV和P四個標(biāo)志位。AC算術(shù)運算類指令快捷記憶法第3章單片機的匯編語言與程序設(shè)計單片機的匯編語言與程序設(shè)計實例4:試解讀如下程序并說明其實現(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 答案答案:實現(xiàn)兩個16位數(shù)(1234H與0FE7H)的加法運算,并將結(jié)果221BH存入片內(nèi)RAM 40H41H單元。第3章單片機的匯編語言與程序設(shè)計單片機的匯編語言與程序設(shè)計關(guān)注關(guān)注:MOV A,#34H(機器碼7434H)工作原理工作原理:根據(jù)機器碼7434H將指令中包含的立即數(shù)34H送到累加器A中。 這類指令的操作數(shù)就存在于指令自身之中; 這種以指令中存在的立即數(shù)(#data或#data16)作為操作數(shù)的做法稱為立即尋址立即尋址。第3章單片機的匯編語言與程序設(shè)計單片機的匯編語言與程序設(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答案答案:實現(xiàn)兩個8位數(shù)(17H與68H)的乘法運算,并將乘積958H的高8位和低8位分別存入片內(nèi)RAM 31H和30H單元。第3章單片機的匯編語言與程序設(shè)計單片機的匯編語言與程序設(shè)計3.1匯編語言概述3.2 MCS-51指令系統(tǒng)簡介 3.2.1 數(shù)據(jù)傳送與交換類指令數(shù)據(jù)傳送與交換類
22、指令 3.2.2 算術(shù)運算類指令算術(shù)運算類指令 3.2.3 邏輯運算及移位類指令邏輯運算及移位類指令 3.2.4 控制轉(zhuǎn)移類指令控制轉(zhuǎn)移類指令 3.2.5 尋址方式尋址方式 3.2.6 偽指令偽指令3.3匯編語言的編程方法第3章單片機的匯編語言與程序設(shè)計單片機的匯編語言與程序設(shè)計邏輯運算及移位類指令邏輯運算及移位類指令 可實現(xiàn)可實現(xiàn)與、或、異或、求反、置與、或、異或、求反、置1、清、清0、移位等、移位等功能功能(34條)第3章單片機的匯編語言與程序設(shè)計單片機的匯編語言與程序設(shè)計邏輯運算及移位類指令共有10種操作碼:ANL用于邏輯與運算ORL用于邏輯或運算XRL用于邏輯異或運算SETB和CLR用
23、于置1和清0CPL用于取反RL和RR于循環(huán)左移和循環(huán)右移 RLC和RRC用于帶C循環(huán)左移和帶C循環(huán)右移第3章單片機的匯編語言與程序設(shè)計單片機的匯編語言與程序設(shè)計特點特點:字節(jié)運算以A為目的操作數(shù)(#data與direct的運算例外),位運算以C為目的操作數(shù)。CLRCPLCLRSETB邏輯運算指令快捷記憶法第3章單片機的匯編語言與程序設(shè)計單片機的匯編語言與程序設(shè)計特點特點:只能針對A進行操作 左移1位相當(dāng)于乘2,右移1位相當(dāng)于除2 。功能功能:對累加器A進行循環(huán)移位操作 循環(huán)移位指令的四種移位關(guān)系第3章單片機的匯編語言與程序設(shè)計單片機的匯編語言與程序設(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位保持不變,即實現(xiàn)了A和P1的數(shù)據(jù)組合。第3章單片機的匯編語言與程序設(shè)
25、計單片機的匯編語言與程序設(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答案答案:利用移位指令實現(xiàn)了累加器A的內(nèi)容乘6 實例8:試解讀如下程序并說明其功能。MOV A,40HCPL AINC AMOV 40H,A【解】分析過程如下:源程序源程序推算結(jié)果推算結(jié)果MOV A,40HA 40HCPL AA
26、/AINC AA A+1MOV 40H,A40H A 答案答案:對片內(nèi)RAM 40H單元中的內(nèi)容取反加1,結(jié)果仍送回40H單元 。關(guān)注關(guān)注:MOV 40H,A(機器碼F540H)工作工作原理原理:根據(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章單片機
27、的匯編語言與程序設(shè)計單片機的匯編語言與程序設(shè)計3.1匯編語言概述3.2 MCS-51指令系統(tǒng)簡介 3.2.1 數(shù)據(jù)傳送與交換類指令數(shù)據(jù)傳送與交換類指令 3.2.2 算術(shù)運算類指令算術(shù)運算類指令 3.2.3 邏輯運算及移位類指令邏輯運算及移位類指令 3.2.4 控制轉(zhuǎn)移類指令控制轉(zhuǎn)移類指令 3.2.5 尋址方式尋址方式 3.2.6 偽指令偽指令3.3匯編語言的編程方法第3章單片機的匯編語言與程序設(shè)計單片機的匯編語言與程序設(shè)計控制轉(zhuǎn)移類指令控制轉(zhuǎn)移類指令 通過改變程序計數(shù)器通過改變程序計數(shù)器PC值值,實現(xiàn)程序轉(zhuǎn)移功能,實現(xiàn)程序轉(zhuǎn)移功能 (22條)第3章單片機的匯編語言與程序設(shè)計單片機的匯編語言與程
28、序設(shè)計控制轉(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章單片機的匯編語言與程序設(shè)計單片機的匯編語言與程序設(shè)計功能功能:根據(jù)轉(zhuǎn)移地址修改PC當(dāng)前值;轉(zhuǎn)移地址轉(zhuǎn)移地址:LJMP16位;AJMP11位; SJMP8位; JMP16位特點特點:前三項都可用語句標(biāo)號代替具體地址; (例如 LJMP START 或 SJMP ) 第四項為變址尋址轉(zhuǎn)移指令 PCA+DPTR無條
29、件轉(zhuǎn)移第3章單片機的匯編語言與程序設(shè)計單片機的匯編語言與程序設(shè)計功能功能:根據(jù)轉(zhuǎn)移地址(rel )修改PC當(dāng)前值;特點特點:rel值為-128127,可用語句標(biāo)號代替; 例如 JC SMALL以 rel表示操作數(shù)的存在方式相對尋址相對尋址 條件轉(zhuǎn)移指令快捷記憶法 第3章單片機的匯編語言與程序設(shè)計單片機的匯編語言與程序設(shè)計實例9:編程實現(xiàn)如下功能: 比較片內(nèi)RAM的30H和40H單元中兩個無符號數(shù)的大小,并將大數(shù)存入50H,小數(shù)存入51H,若兩數(shù)相等則使位單元7FH置1?!窘狻坑捎谥噶頒JNE具有利用減法判斷雙方關(guān)系且影響C標(biāo)志位的特點,故可采用先根據(jù)CJNE進行一次跳轉(zhuǎn),然后再根據(jù)C進行二次跳
30、轉(zhuǎn)的做法。第3章單片機的匯編語言與程序設(shè)計單片機的匯編語言與程序設(shè)計實例9 仿真程序第3章單片機的匯編語言與程序設(shè)計單片機的匯編語言與程序設(shè)計關(guān)注關(guān)注: SJMP FINISH(機器碼800EH)這種利用偏移量rel修正轉(zhuǎn)移目標(biāo)地址的做法稱為相對尋址相對尋址 工作原理工作原理:根據(jù)機器碼800EH,由PC當(dāng)前值0009H和指令中含有的偏移偏移量量0EH得到PC修正后的目標(biāo)地址0017H(=0009H+0EH),從而引導(dǎo)程序轉(zhuǎn)向FINISH語句行。* rel值由匯編系統(tǒng)根據(jù)行號FINISH算出第3章單片機的匯編語言與程序設(shè)計單片機的匯編語言與程序設(shè)計實例10:編程實現(xiàn)如下功能:將存放在片內(nèi)RAM
31、 20H單元開始的10個數(shù)連續(xù)傳送到片外RAM 50H單元開始的地址處。Rn 0 ?是 PCPC+rel 順序執(zhí)行下條指令 Rn Rn - 1【解】 思路分析: 將R1作為指向外部RAM的低8位地址(50H起)寄存器,P2作為指向外部RAM的高8位地址(00H)寄存器。 利用Rn作為循環(huán)計數(shù)器,配合DJNZ指令進行操作。第3章單片機的匯編語言與程序設(shè)計單片機的匯編語言與程序設(shè)計 MOV R0,#20H ; 片內(nèi)RAM數(shù)據(jù)塊指針R0賦初值 MOV R1,#50H ; 片內(nèi)RAM數(shù)據(jù)塊指針R1賦初值 MOV R3,#0AH ;計數(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進行片外RAM尋址 MOV R0,#20H ;片內(nèi)RAM數(shù)據(jù)塊指針R0賦初值 MOV DPTR,#50H ;片外RAM數(shù)據(jù)塊指針DPTR賦初值 MOV R3,#0AH ;計數(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進行片外RAM尋址第3章單片機的匯編語言與程序設(shè)計單片機的匯編語言與程序設(shè)計實例11:試分析如下延時子程序延時子程序可實現(xiàn)的延時量(設(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晶振時對應(yīng)的機器周期為1s。查手冊可知,指令DJNZ需要占用機時為2s,MOV為1 s ,則改子程序的總延時量應(yīng)為: (2125+1+2)200+1 = 50.601ms答案答案:該子程序的軟
34、件延時量約為50毫秒。第3章單片機的匯編語言與程序設(shè)計單片機的匯編語言與程序設(shè)計實例12:編程將A中的并行數(shù)據(jù)轉(zhuǎn)換為串行數(shù)據(jù),并通過P1.0口輸出。要求數(shù)據(jù)輸出時高位在先。 MOV R2,#8;計數(shù)器初值CLR C;CY清零NEXT: RLC A ;數(shù)據(jù)移位至CY中 MOV P1.0,C ;從P1.0輸出串行數(shù)據(jù) DJNZ R2,NEXT;若轉(zhuǎn)換未完,繼續(xù)【解】利用帶進位循環(huán)和循環(huán)控制指令可實現(xiàn)并/傳轉(zhuǎn)換第3章單片機的匯編語言與程序設(shè)計單片機的匯編語言與程序設(shè)計關(guān)注關(guān)注:CLR C(機器碼C3H)這種利用位地址bit作為指令操作數(shù)的做法稱為位尋址;位尋址;bit可以是片內(nèi)RAM可位尋址區(qū)內(nèi)的位
35、地址,也可以是SFR中的位地址或位名稱;該程序的第二和第四條指令都屬于位尋址方法。工作原理工作原理:根據(jù)機器碼C3H,將進位標(biāo)志CY的值清零。由于CY具有0D7H位地址,因而CLR C與CLR 0D7H具有同等功能。第3章單片機的匯編語言與程序設(shè)計單片機的匯編語言與程序設(shè)計3.1匯編語言概述3.2 MCS-51指令系統(tǒng)簡介 3.2.1 數(shù)據(jù)傳送與交換類指令數(shù)據(jù)傳送與交換類指令 3.2.2 算術(shù)運算類指令算術(shù)運算類指令 3.2.3 邏輯運算及移位類指令邏輯運算及移位類指令 3.2.4 控制轉(zhuǎn)移類指令控制轉(zhuǎn)移類指令 3.2.5 尋址方式尋址方式 3.2.6 偽指令偽指令3.3匯編語言的編程方法第3
36、章單片機的匯編語言與程序設(shè)計單片機的匯編語言與程序設(shè)計尋址方式是對操作數(shù)存在規(guī)律的歸納,一條指令究竟屬于哪種尋址方式往往并不重要,也不會影響它的使用,因而不必過意追究。51單片機共有七種尋址方式: 直接尋址、寄存器尋址、寄存器間接尋址、立即尋址、 變址尋址、位尋址、相對尋址。尋址方式越多,單片機的功能就越強;CPU取得操作數(shù)的方法稱為尋址方法 第3章單片機的匯編語言與程序設(shè)計單片機的匯編語言與程序設(shè)計(1)直接尋址)直接尋址 指令中包含direct形式操作數(shù)的尋址方式稱為直接尋址direct既可以是片內(nèi)RAM的低128字節(jié)地址,也可以是除A、B、C、DPTR外的其它特殊功能寄存器名。 MOV
37、40H, A ;指令原形 MOV direct,A(2)寄存器尋址)寄存器尋址 第3章單片機的匯編語言與程序設(shè)計單片機的匯編語言與程序設(shè)計指令中包含通用寄存器通用寄存器形式操作數(shù)的尋址方式稱為寄存器尋址通用寄存器只能是Rn,A,B,CY和DPTR五種類型MOV A,R1 ;指令原形 MOV A,Rn(3)寄存器間接尋址)寄存器間接尋址 第3章單片機的匯編語言與程序設(shè)計單片機的匯編語言與程序設(shè)計MOV A, R0 ;指令原形 MOV A,Ri指令中包含“間址寄存器間址寄存器”形式操作數(shù)的尋址方式稱為寄存器間接尋址間址寄存器只能由R0、R1或DPTR三個寄存器兼任第3章單片機的匯編語言與程序設(shè)計單
38、片機的匯編語言與程序設(shè)計MOV A, #44H;指令原形 MOV A,#data(4)立即尋址)立即尋址 指令中包含#data或#data16形式操作數(shù)的尋址方式稱為立即尋址 第3章單片機的匯編語言與程序設(shè)計單片機的匯編語言與程序設(shè)計(5)變址尋址)變址尋址 MOVC A, A+DPTR ;A(A+DPTR)指令中包含“A+基址寄存器基址寄存器”形式操作數(shù)的尋址方式稱為變址尋址方式基址寄存器只能由DPTR或PC兼任兼任 MOVC A,A+PCMOVC A,A+DPTRJMP A, A+DPTR僅有3條變址尋址指令第3章單片機的匯編語言與程序設(shè)計單片機的匯編語言與程序設(shè)計MOV C, 2FH ;
39、 指令原形 MOV C,bit SETB 0E0H ; 指令原形 SETB bitCLR P1.0 ; 指令原形 CLR bit(6)位尋址)位尋址 指令中包含bit形式操作數(shù)的尋址方式稱為位尋址方式bit形式的位地址可以是片內(nèi)RAM中的位地址,也可以是SFR中的位地址或位名稱 第3章單片機的匯編語言與程序設(shè)計單片機的匯編語言與程序設(shè)計(7)相對尋址)相對尋址 SJMP FINISH; 指令原形 SJMP rel指令中包含rel形式操作數(shù)的尋址方式稱為相對尋址方式rel可以是片內(nèi)RAM或ROM地址偏移量的形式,也可以是標(biāo)號的形式。第3章單片機的匯編語言與程序設(shè)計單片機的匯編語言與程序設(shè)計3.1
40、匯編語言概述3.2 MCS-51指令系統(tǒng)簡介 3.2.1 數(shù)據(jù)傳送與交換類指令數(shù)據(jù)傳送與交換類指令 3.2.2 算術(shù)運算類指令算術(shù)運算類指令 3.2.3 邏輯運算及移位類指令邏輯運算及移位類指令 3.2.4 控制轉(zhuǎn)移類指令控制轉(zhuǎn)移類指令 3.2.5 尋址方式尋址方式 3.2.6 偽指令偽指令3.3匯編語言的編程方法3.2.5.偽指令偽指令 第3章單片機的匯編語言與程序設(shè)計單片機的匯編語言與程序設(shè)計匯編語言指令的兩類指令:硬指令硬指令(指令性語句)匯編后可以產(chǎn)生機器 碼的指令,如前介紹的111條指令;偽指令偽指令(指示性語句)用于指示匯編系統(tǒng)軟件要完成的操作 ,一般不產(chǎn)生機器碼常用的偽指令: O
41、RG、END、EQU、DATA、BIT、DB第3章單片機的匯編語言與程序設(shè)計單片機的匯編語言與程序設(shè)計 MCS-51常用偽指令 偽指令名稱格式功能描述ORG(Oringin)程序起始地址ORG 16位地址用于定義匯編程序或數(shù)據(jù)在ROM中存放的起始地址EQU(Equate)等值指令標(biāo)識符 EQU 數(shù)或匯編符號用于將一個數(shù)值或匯編符號賦給該標(biāo)示符DATA(Data)數(shù)據(jù)地址賦值標(biāo)識符 DATA 內(nèi)存字節(jié)地址用于將一個內(nèi)部 RAM 的地址賦給該標(biāo)示符BIT(Bit)位地址賦值標(biāo)識符 DATA 位地址或位名稱用于將一個位地址或位名稱賦給該標(biāo)示符DB(Define Byte)定義字節(jié)標(biāo)號: DB 用于把
42、項或項表中的字節(jié)(8位)數(shù)值依次存入標(biāo)號開始的存儲單元中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ù)值或匯編符號數(shù)值或匯編符號功能:用于將一個數(shù)值或匯編符號賦給該標(biāo)示符舉例:ADDR EQU 2000H ;將2000H賦予 ADDR ADDR EQU MEM2 ;
43、將MEM2賦予 ADDR說明說明: 第2條語句的匯編符號MEM2必須是已賦值過的(3)DATA(= data)格式:標(biāo)示符標(biāo)示符 DATA 內(nèi)部內(nèi)部RAM地址或表達(dá)式地址或表達(dá)式功能:用于將一個內(nèi)部 RAM 的地址賦給該標(biāo)示符舉例: COUNT DATA 50H ;將50H賦予 COUNT COUNT EQU 50H ;將50H賦予 COUNTEQU與與DATA區(qū)別區(qū)別: 1)EQU須先定義后使用,而DATA可無須如此。 2)EQU可用于匯編符號,而DATA不能。 3)DATA可用于表達(dá)式,而EQU不行。 (4)BIT(= bit)格式:標(biāo)示符標(biāo)示符 BIT 位地址或位名稱位地址或位名稱功能:
44、用于將一個位地址或位名稱賦給該標(biāo)示符舉例: KEY1 BIT P1.0 ;將P1.0賦予KEY1(5)DB(= define byte)格式:標(biāo)號標(biāo)號: DB n1,n2,ni功能:用于定義以字節(jié)為單位以字節(jié)為單位的常數(shù)表規(guī)則: ”ni”按順序存在標(biāo)號地址開始的單元中; 常數(shù)之間用英文逗號分開,最后一個不要逗號例如: JPH: DB 12H,20H,35H,40H,58H 表示字節(jié)常數(shù)12H將放置在JPH語句標(biāo)號對應(yīng)的ROM地址處,其它常數(shù)依此順延排列(6)END(= end)格式:END功能:用于表示匯編程序到此結(jié)束說明:放在源程序的最后一行,并只允許有一個END第3章單片機的匯編語言與程序設(shè)計單片機的匯編語言與程序設(shè)計3.1匯編語言概述 3.2指令系統(tǒng)簡介 3.3匯編語言的編程方法第3章單片機的匯編語言與程序設(shè)計單片機的匯編語言與程序設(shè)計匯編語言程序設(shè)計步驟匯編語言程序設(shè)計步驟 分析問題,確定算法或解題思路 畫程序流程圖編寫匯編程序程序調(diào)試與修改用匯編語言進行程序設(shè)計的過程和用高級語言進行程序設(shè)計的過程類似,一般需要經(jīng)過以下幾個步驟:第3章單片機的匯編語言與程序設(shè)計單片機
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年企業(yè)物料策劃供應(yīng)合同協(xié)議
- 2025年律師事務(wù)所服務(wù)協(xié)議標(biāo)準(zhǔn)文本
- 2025年通信電源項目申請報告模板
- 2025年穿水冷卻裝置項目提案報告
- 2025年住宅銷售經(jīng)紀(jì)服務(wù)協(xié)議
- 2025年市場準(zhǔn)入合規(guī)策劃合作框架協(xié)議
- 2025年企業(yè)簽訂網(wǎng)絡(luò)安全協(xié)議
- 2025年企業(yè)股東間保密協(xié)議策劃樣本
- 2025年實習(xí)生供求策劃協(xié)議書模板
- 2025年丹陽市美容院股東權(quán)益策劃與分配合同書
- 2024年江蘇省無錫市中考英語試卷附答案
- 河南開封介紹課件
- 通信設(shè)備售后服務(wù)方案
- 行政倫理學(xué)教程(第四版)課件 第5章?行政責(zé)任
- HYT 215-2017 近岸海域海洋生物多樣性評價技術(shù)指南
- 初中生物校本課程綱要
- 賣花生混聲合唱簡譜
- 占道作業(yè)交通安全設(shè)施設(shè)置技術(shù)要求
- 數(shù)學(xué)方法在物理中的應(yīng)用
- 《肝豆?fàn)詈俗冃浴氛n件
- 體育教學(xué)小組合作
評論
0/150
提交評論