第3章—指令系統(tǒng)與匯編語言程序設計_第1頁
第3章—指令系統(tǒng)與匯編語言程序設計_第2頁
第3章—指令系統(tǒng)與匯編語言程序設計_第3頁
第3章—指令系統(tǒng)與匯編語言程序設計_第4頁
第3章—指令系統(tǒng)與匯編語言程序設計_第5頁
已閱讀5頁,還剩70頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、第3章指令系統(tǒng)與匯編語言程序設計指令系統(tǒng)與匯編語言程序設計 3.1匯編語言概述匯編語言概述3.2指令系統(tǒng)簡介指令系統(tǒng)簡介 3.3匯編語言的編程方法匯編語言的編程方法 第3章單片機的匯編語言與程序設計單片機的匯編語言與程序設計3.1匯編語言概述匯編語言概述 1. 匯編語言指令格式匯編語言指令格式 2.描述操作數(shù)的簡記符號描述操作數(shù)的簡記符號 3.尋址方式尋址方式3.2指令系統(tǒng)簡介指令系統(tǒng)簡介 3.3匯編語言的編程方法匯編語言的編程方法第3章單片機的匯編語言與程序設計單片機的匯編語言與程序設計匯編語言是用匯編語言是用助記符助記符形式表示形式表示指令指令的一種計算機語言的一種計算機語言, 其中助記符

2、由約定的其中助記符由約定的英文字母組成,而指令則是完成特定動作所需的指示和命令。匯編語言程英文字母組成,而指令則是完成特定動作所需的指示和命令。匯編語言程序需要經(jīng)過編譯程序翻譯成機器碼,讓計算機執(zhí)行。序需要經(jīng)過編譯程序翻譯成機器碼,讓計算機執(zhí)行。匯編語言編程的優(yōu)點是代碼精煉、執(zhí)行速度快,但不便于編寫較復雜的程匯編語言編程的優(yōu)點是代碼精煉、執(zhí)行速度快,但不便于編寫較復雜的程序。序。本章學習目的是了解匯編語言的規(guī)則,要求借助指令手冊能讀懂一般匯編本章學習目的是了解匯編語言的規(guī)則,要求借助指令手冊能讀懂一般匯編程序。程序。一條匯編語言指令中最多包含四個區(qū)段,其一般格式為: 標號標號: 操作碼操作碼

3、操作數(shù)操作數(shù) ;注釋注釋 匯編語言指令格式匯編語言指令格式 第3章單片機的匯編語言與程序設計單片機的匯編語言與程序設計標號標號區(qū)段由用戶定義的區(qū)段由用戶定義的16個字符組成,以英文字母開始個字符組成,以英文字母開始(不區(qū)分大小寫(不區(qū)分大小寫 ),冒號結尾。冒號結尾。.0122H0223H0124H. 35H 77H F4H 74H 12HROM標號代表當前指令的首字節(jié)在存儲器單元中的存放地址,可以省略。START: MOV A,#12H ;立即數(shù)立即數(shù)12HA SETB P1.0 ;P1.01 CJNE A,R0, START ;若若AR0,轉轉START 標號標號: 操作碼操作碼 操作數(shù)操

4、作數(shù) ;注釋注釋第3章單片機的匯編語言與程序設計單片機的匯編語言與程序設計操作碼操作碼區(qū)段是指令的核心部分,不能省略,它由便于記憶的助記字符組成。區(qū)段是指令的核心部分,不能省略,它由便于記憶的助記字符組成。在在MCS-51單片機中共有單片機中共有42種操作碼,每個操作碼為種操作碼,每個操作碼為25個字符,不區(qū)分大個字符,不區(qū)分大小寫。小寫。START: MOV A,#12H ;立即數(shù)立即數(shù)12HA SETB P1.0 ;P1.01 CJNE A,R0, START ;若若AR0,轉轉START 舉例: 標號標號: 操作碼操作碼 操作數(shù)操作數(shù) ;注釋注釋第3章單片機的匯編語言與程序設計單片機的匯

5、編語言與程序設計操作數(shù)操作數(shù)區(qū)段是指令要操作的對象。根據(jù)指令的不同功能,操作數(shù)可以是區(qū)段是指令要操作的對象。根據(jù)指令的不同功能,操作數(shù)可以是3個、個、2個、個、1個或沒有操作數(shù);操作數(shù)大于個或沒有操作數(shù);操作數(shù)大于1時,操作數(shù)之間用英文逗號隔開,不時,操作數(shù)之間用英文逗號隔開,不區(qū)分大小寫。區(qū)分大小寫。START: MOV A,#12H ;立即數(shù)立即數(shù)12HA SETB P1.0 ;P1.01 CJNE A,R0, START ;若若AR0,轉轉START 舉例: 標號標號: 操作碼操作碼 操作數(shù)操作數(shù) ;注釋注釋第3章單片機的匯編語言與程序設計單片機的匯編語言與程序設計注釋注釋區(qū)段是對指令的

6、解釋性說明,用以提高程序的可讀性,可以用任何文字區(qū)段是對指令的解釋性說明,用以提高程序的可讀性,可以用任何文字描述,以英文分號開始,無需結束符號,可以省略。描述,以英文分號開始,無需結束符號,可以省略。START: MOV A,#12H ;立即數(shù)立即數(shù)12HA SETB P1.0 ;P1.01 CJNE A,R0, START ;若若AR0,轉轉START 舉例:第3章單片機的匯編語言與程序設計單片機的匯編語言與程序設計3.1匯編語言概述匯編語言概述 1. 匯編語言指令格式匯編語言指令格式 2.描述操作數(shù)的簡記符號描述操作數(shù)的簡記符號 3.尋址方式尋址方式3.2指令系統(tǒng)簡介指令系統(tǒng)簡介 3.3

7、匯編語言的編程方法匯編語言的編程方法單片機指令手冊中,每條指令的單片機指令手冊中,每條指令的操作數(shù)操作數(shù)都以簡記符號表示。都以簡記符號表示。第3章單片機的匯編語言與程序設計單片機的匯編語言與程序設計 操作數(shù)的簡記符號操作數(shù)的簡記符號 第3章單片機的匯編語言與程序設計單片機的匯編語言與程序設計第3章單片機的匯編語言與程序設計單片機的匯編語言與程序設計指令表舉例MOV A,RnMOV A,R0 MOV A,R4 MOV A,RiMOV A,R0 MOV A,R1MOV A,#dataMOV A,#35H MOV A,#0111 0110BMOV A,directMOV A,20H MOV A,DP

8、LMOV DPTR,#data16MOV DPTR,#1305H MOV DPTR,#65000 第3章單片機的匯編語言與程序設計單片機的匯編語言與程序設計3.1匯編語言概述匯編語言概述 1. 匯編語言指令格式匯編語言指令格式 2.描述操作數(shù)的簡記符號描述操作數(shù)的簡記符號 3.尋址方式尋址方式3.2指令系統(tǒng)簡介指令系統(tǒng)簡介 3.3匯編語言的編程方法匯編語言的編程方法第3章單片機的匯編語言與程序設計單片機的匯編語言與程序設計尋址方式尋址方式尋找操作數(shù)所在地址單元的方式。尋找操作數(shù)所在地址單元的方式。尋址方式越多,計算機的功能就越強。51單片機共有七種尋址方式:直接尋址、寄存器尋直接尋址、寄存器尋

9、址、寄存器間接尋址、立即尋址、變址尋址、位尋址、寄存器間接尋址、立即尋址、變址尋址、位尋址、相對尋址址、相對尋址。 可以先跳過這一節(jié),待學完指令系統(tǒng)后再返回學習可能會易于理解。第3章單片機的匯編語言與程序設計單片機的匯編語言與程序設計(1)直接尋址)直接尋址 MOV A,68H ;A(68H),機器碼為,機器碼為E568H 對于片內(nèi)低128字節(jié)單元可在指令中直接給出單元地址(如MOV A,68H),但對于特殊功能寄存器(位于高128字節(jié)區(qū))除了可用其單元地址給出外,還可用它們的符號形式給出。如: MOV A,0D0H ;A(0D0H),機器碼為,機器碼為E5D0HMOV A,PSW ;APSW

10、,機器碼為,機器碼為E5D0H 它們的形式雖然不同,但匯編后的機器碼是完全一樣的,均為E5D0H。為增強所編程序的可讀性,一般提倡盡量采用后者方式。 (2)寄存器尋址)寄存器尋址 指令中以通用寄存器的形式表示操作數(shù)的尋址方式稱為寄存器尋址,這里的通用寄存器特指:A、B、DPTR、R0R7和CY。 MOV A,R1 ;AR1MUL AB ;BAAB,乘積高位存,乘積高位存B,低位存,低位存AINC DPTR ;DPTRDPTR+1第3章單片機的匯編語言與程序設計單片機的匯編語言與程序設計注意:B寄存器僅在乘法和除法指令中屬于寄存器尋址,在其它指令中則屬于直接尋址。此外,除上面所指出的幾個寄存器外

11、,其它特殊功能寄存器也一律為直接尋址 寄存器間接尋址是二次尋找操作數(shù)地址的尋址方式。 (3)寄存器間接尋址)寄存器間接尋址 由指令指出某一個寄存器的內(nèi)容作為操作數(shù)地址的尋址方式,稱為寄存器間接尋址方式。計算機執(zhí)行這類指令時,它首先根據(jù)指令中的寄存器名稱找到所需要的操作數(shù)地址,再由操作數(shù)地址找到操作數(shù),并完成相應操作。 第3章單片機的匯編語言與程序設計單片機的匯編語言與程序設計寄存器間接尋址使用的寄存器叫做間址寄存器,用R0、R1和DPTR表示。 MOV A,R0 ;尋址范圍為尋址范圍為256B MOVX A,DPTR ;尋址范圍為尋址范圍為64KB 片內(nèi)片內(nèi)RAM30HR034HA30H34H

12、 MOV A ,R0 操作示意圖操作示意圖片外片外RAM2000HDPTR30HA2000H30HMOVX DPTR,A 操作示意圖操作示意圖第3章單片機的匯編語言與程序設計單片機的匯編語言與程序設計MOV A,#0E2H;A#0E2HMOV DPTR,#2000H ;DPTR#2000H(4)立即尋址)立即尋址 如果操作數(shù)在指令中直接給出,并與操作碼的機器碼一起存放在程序存儲器內(nèi),則程序執(zhí)行時便可立即得到,而不需要另外尋找,故稱為立即尋址。該操作數(shù)稱為立即數(shù),并在其前冠以“#”號,以表示非地址。立即數(shù)可以是8位或16位二進制數(shù),一般用十六進制數(shù)表示 匯編語言規(guī)定,凡以字母開始的十六進制數(shù)(立

13、即數(shù)或地址),在最高位前要加0以便與變量名區(qū)分,因而上述數(shù)據(jù)E2H要寫為0E2H。 第3章單片機的匯編語言與程序設計單片機的匯編語言與程序設計MOVC A,A+DPTR ;A(A+DPTR)MOVC A,A+PC ;A(A+PC)JMP A+DPTR;PC(A+DPTR)(5)變址尋址)變址尋址 變址尋址是以DPTR或PC作為基址寄存器,以累加器A作為變址寄存器,將基址寄存器與變址寄存器的內(nèi)容相加形成操作數(shù)的實際地址。51指令集中采用變址尋址的指令共有三條: A為偏移量寄存器,DPTR或PC為變址寄存器。程序執(zhí)行時,A中的無符號數(shù)先與DPTR或PC中的內(nèi)容相加,形成訪問地址,再通過寄存器間接尋

14、址方式取得實際操作數(shù)。其中前兩條是程序存儲器讀指令,后一條是無條件轉移指令。 MOVC A, A+DPTR 操作示意圖操作示意圖程序存儲器程序存儲器02F1HDPTRA0302H1EH11HA執(zhí)行前執(zhí)行前1EHA執(zhí)行后執(zhí)行后+第3章單片機的匯編語言與程序設計單片機的匯編語言與程序設計MOV C,7FH ;Cy(7FH),其中,其中,7FH是位地址是位地址MOV C,2FH.7 ;Cy(7FH),其中,其中,2FH.7是位地址是位地址MOV C,ACC.7 ;CyACC.7,其中,其中,ACC.7是位地址是位地址(6)位尋址)位尋址 51單片機片內(nèi)RAM里的部分存儲單元和某些特殊功能寄存器除了具

15、有字節(jié)地址外,還具有位地址。這些單元既可以采用字節(jié)方式訪問,也可采用位地址方式訪問。指令中直接給出操作數(shù)所在單元位地址的尋址方式稱為位尋址,例如: 第3章單片機的匯編語言與程序設計單片機的匯編語言與程序設計SJMP START ;PCPC+2+rel(7)相對尋址)相對尋址 相對尋址方式是為了程序的相對轉移而設計的,它以PC的內(nèi)容為基址,與指令中給出的偏移量rel進行合成,得到轉移目的地址,進而改變PC值實現(xiàn)程序的跳轉功能。 該指令的功能是將PC值修改為START語句行所在的首地址,從而使程序從START語句繼續(xù)執(zhí)行,該指令的的原形是SJMP rel。注意,由于rel只能形成-128+127字

16、節(jié)的跳轉,故編程時必須考慮當前行與被跳轉行之間的地址范圍不能超限。 SJMP 08H 操作示意圖操作示意圖程序存儲器程序存儲器SJMP200AH08H2000H+208H執(zhí)行前執(zhí)行前PC2000H執(zhí)行后執(zhí)行后PC第3章單片機的匯編語言與程序設計單片機的匯編語言與程序設計3.1匯編語言概述匯編語言概述 3.2指令系統(tǒng)簡介指令系統(tǒng)簡介 1.數(shù)據(jù)傳送與交換類指令數(shù)據(jù)傳送與交換類指令 2.算術運算類指令算術運算類指令 3.邏輯運算及移位類指令邏輯運算及移位類指令 4.控制轉移類指令控制轉移類指令 5 .偽指令偽指令3.3匯編語言的編程方法匯編語言的編程方法計算機中全部指令的集合稱為計算機中全部指令的集

17、合稱為指令系統(tǒng)指令系統(tǒng)。MCS-51單片機指令系統(tǒng)共有單片機指令系統(tǒng)共有111條指令,條指令,按功能可劃分為四大類:按功能可劃分為四大類: 數(shù)據(jù)傳送與交換類數(shù)據(jù)傳送與交換類 算術運算類算術運算類 邏輯運算類邏輯運算類 轉移控制類(位操作也可作為第五類轉移控制類(位操作也可作為第五類考慮)考慮)第3章單片機的匯編語言與程序設計單片機的匯編語言與程序設計第3章單片機的匯編語言與程序設計單片機的匯編語言與程序設計3.1匯編語言概述匯編語言概述 3.2指令系統(tǒng)簡介指令系統(tǒng)簡介 1.數(shù)據(jù)傳送與交換類指令數(shù)據(jù)傳送與交換類指令 2.算術運算類指令算術運算類指令 3.邏輯運算及移位類指令邏輯運算及移位類指令

18、4.控制轉移類指令控制轉移類指令 5.偽指令偽指令3.3匯編語言的編程方法匯編語言的編程方法數(shù)據(jù)傳送與交換類指令數(shù)據(jù)傳送與交換類指令可實現(xiàn)RAM、SFR和ROM之間的數(shù)據(jù)互傳或交換,共31條。第3章單片機的匯編語言與程序設計單片機的匯編語言與程序設計 助記符助記符 說明說明 MOVMOV、MOVXMOVX、MOVC MOVC 傳送操作傳送操作 XCHXCH、XCHDXCHD、SWAP SWAP 交換操作交換操作 PUSHPUSH、POP POP 堆棧操作堆棧操作v 源操作數(shù)尋址方式源操作數(shù)尋址方式: 立即尋址、直接尋址、寄存器尋址、立即尋址、直接尋址、寄存器尋址、 寄存器間接尋址、變址尋址。寄

19、存器間接尋址、變址尋址。v 目的操作數(shù)尋址方式目的操作數(shù)尋址方式: 直接尋址、寄存器尋址、寄存器間接尋址直接尋址、寄存器尋址、寄存器間接尋址 除了目的操作數(shù)為除了目的操作數(shù)為ACCACC的指令影響奇偶標志的指令影響奇偶標志P P外,一般不影外,一般不影 響標志位。響標志位。數(shù)據(jù)傳送類指令的基本通式為: , 它表示將源單元(src)的內(nèi)容傳送給目的單元 (dest) ,傳送后源單元中內(nèi)容不變。transfer是傳送指令的操作碼: MOV在片內(nèi)RAM范圍內(nèi)傳送 MOVX在片外RAM范圍內(nèi)傳送 MOVC在全部ROM范圍內(nèi)傳送第3章單片機的匯編語言與程序設計單片機的匯編語言與程序設計第3章單片機的匯編

20、語言與程序設計單片機的匯編語言與程序設計第3章單片機的匯編語言與程序設計單片機的匯編語言與程序設計傳送類指令中的兩類特殊指令傳送類指令中的兩類特殊指令 交換類交換類使操作數(shù)的使操作數(shù)的內(nèi)容互換內(nèi)容互換(XCH、XCHD、SWAP) 堆棧類使操作數(shù)的內(nèi)容進出堆棧(PUSH 、POP)0-3第3章單片機的匯編語言與程序設計單片機的匯編語言與程序設計舉例舉例1:分析如下程序段并指出運行后:分析如下程序段并指出運行后20H和和21H單元的結果單元的結果 MOV R0,#20H MOV R0,#38H MOV 21H,#48H 結果:(20H)=38H,(21H)=48H將data送入Ri的內(nèi)容所指向的

21、單元的內(nèi)容所指向的單元中(寄存器間接尋址) R0=20H MOV R0,#38H 等價于MOV 20H,#38H ;MOV Rn,#data;MOV Ri,#data;MOV direct,#data;Rndata;(R0)data;directdata第3章單片機的匯編語言與程序設計單片機的匯編語言與程序設計寄存器間接尋址用到的寄存器有寄存器間接尋址用到的寄存器有Ri、DPTR和和SP,其中其中i = 0 或或1;可以用類似(;可以用類似(R0)表示)表示R0第3章單片機的匯編語言與程序設計單片機的匯編語言與程序設計舉例舉例2:已知片內(nèi):已知片內(nèi)RAM 38H單元中的數(shù)為單元中的數(shù)為12H,

22、試分析如下程序段并指出其功能試分析如下程序段并指出其功能注意:片內(nèi)RAM 38H單元中數(shù)不能直接傳送到外部RAM的1818H單元,必須經(jīng)過累加器A的轉傳。功能:將片內(nèi)RAM 38H單元中的數(shù)12H傳送到外部RAM的1818H單元中。 MOV R0,#38H MOV DPTR,#1818HMOV A,R0MOVX DPTR,A; Rndata; DPTR data16; A(Ri); (DPTR)AR0=38HDPTR =1818HA(38H)=12H(1818H)=12H第3章單片機的匯編語言與程序設計單片機的匯編語言與程序設計舉例舉例3:試分析如下程序段并指出其功能:試分析如下程序段并指出其

23、功能MOV DPTR,#120H MOV A,#5 MOVC A,A+DPTRMOV 30H,A; DPTR data16; Adata; A(A+DPTR); (30H)A; DPTR =120H; A=5; A(125H); (30H)A功能:將功能:將ROM 125H地址中的數(shù)取出送到片內(nèi)地址中的數(shù)取出送到片內(nèi)RAM的的30H單元中。單元中。意義:采用DPTR作為基址寄存器,A作為變址寄存器,查找事先存放在ROM數(shù)據(jù)塊中的數(shù)據(jù)值,其中DPTR指向數(shù)據(jù)塊的首地址。第3章單片機的匯編語言與程序設計單片機的匯編語言與程序設計舉例舉例3”:在如下所示的在如下所示的ROM 120H地址開始的地址開

24、始的10個個單元中存放著整數(shù)單元中存放著整數(shù)09的十進制平方值,的十進制平方值,編寫一查表程序段,計算整數(shù)編寫一查表程序段,計算整數(shù)5的平方值,的平方值,并將結果送入并將結果送入RAM 30單元。單元。 執(zhí)行結果:(執(zhí)行結果:(30H)=25 ROM地址數(shù)值0128H640127H490126H360125H250124H160123H090122H040121H010120H00查表做法:查表做法:1、在、在ROM中設置一數(shù)據(jù)塊;中設置一數(shù)據(jù)塊;2、將數(shù)據(jù)塊的首地址賦值給、將數(shù)據(jù)塊的首地址賦值給DPTR;3、將欲查的數(shù)存入累加器、將欲查的數(shù)存入累加器A;4、執(zhí)行、執(zhí)行MOV A,A+DPTR

25、查表指令;查表指令;5、查表后的結果送入指定單元。、查表后的結果送入指定單元。 第3章單片機的匯編語言與程序設計單片機的匯編語言與程序設計舉例舉例4:已知已知70H中有一個數(shù),其值在中有一個數(shù),其值在09范圍內(nèi),編制程序把它范圍內(nèi),編制程序把它變?yōu)橄鄳淖優(yōu)橄鄳腁SCII碼。碼。解:解:09的的ASCII碼為碼為30H39H。利用半字節(jié)交換指令可以把。利用半字節(jié)交換指令可以把09的的數(shù)裝配成相應的數(shù)裝配成相應的ASCII碼。碼。 MOV R0,#70H; R070H MOV A,#30H; A30H XCHD A,R0; A中形成相應ASCII碼 MOV R0,A; ASCII碼送回70H單

26、元0-3第3章單片機的匯編語言與程序設計單片機的匯編語言與程序設計數(shù)據(jù)傳送對象和方向示意圖數(shù)據(jù)傳送對象和方向示意圖Cbit虛線框代表片內(nèi)RAM范圍立即數(shù)和ROM地址只能作為源操作數(shù)ROM和外部RAM只能與A進行往來PUSH和POP只能對direct進行操作位傳送只能在C與bit間進行第3章單片機的匯編語言與程序設計單片機的匯編語言與程序設計3.1匯編語言概述匯編語言概述 3.2指令系統(tǒng)簡介指令系統(tǒng)簡介 1.數(shù)據(jù)傳送與交換類指令數(shù)據(jù)傳送與交換類指令 2.算術運算類指令算術運算類指令 3.邏輯運算及移位類指令邏輯運算及移位類指令 4.控制轉移類指令控制轉移類指令 5 .偽指令偽指令3.3匯編語言的

27、編程方法匯編語言的編程方法第3章單片機的匯編語言與程序設計單片機的匯編語言與程序設計算術運算類指令算術運算類指令共有共有24條,包括加、減、乘、除條,包括加、減、乘、除和增減和增減1運算等。運算等。第3章單片機的匯編語言與程序設計單片機的匯編語言與程序設計特點特點:算術運算指令一般對程序狀態(tài)字:算術運算指令一般對程序狀態(tài)字PSW中的中的CY、AC、OV三個標志位有影響。三個標志位有影響。第3章單片機的匯編語言與程序設計單片機的匯編語言與程序設計舉例5:試解讀如下程序并說明其功能 MOVA,#34H ADD A,#0E7H MOV40H,A MOVA,#12H ADDCA,#0FH MOV41H

28、,A; A 34H; A= A+data; (40H) A; A 12H; A= A+data+CY; (41H) AA =34HA= 1BH; C=1H(40H) = 1BHA = 12HA= 22H(41H) =22H功能:1234H與0FE7H兩個16位數(shù)相加,結果為221BH。第一步先對低8位相加,結果存入40H單元;第二步再對高8位相加,結果存入41H單元,其中第二步為帶進位相加。 注意:對于用十六進制數(shù)表示的數(shù)字或地址,若其最高位是AF,則需在最高位前加零(與“標號” 或“標示符”區(qū)分)。第3章單片機的匯編語言與程序設計單片機的匯編語言與程序設計舉例舉例6:試解讀如下程序并說明其功

29、能:試解讀如下程序并說明其功能 CLRCMOV A,#34HSUBB A,#0E7HMOV 40H,AMOV A,#12HSUBB A,#0FHMOV 41H,A; CY位清零位清零; A 34H; AA -0E7H-CY; (40H) A; A 12H; AA -0FH-CY; (41H) AC=0A=34HA=4D;C=1; (40H) =4D; A =12H; A= 02H; (41H) = 02H功能:1234H與0FE7H兩個16位數(shù)相減,結果為24DH。第一步先對低8位相減,結果存入40H單元;第二步再對高8位相減,結果存入41H單元,兩步減法都是帶借位相減。 注意:運算時需要首先

30、清理注意:運算時需要首先清理CY位。位。 第3章單片機的匯編語言與程序設計單片機的匯編語言與程序設計舉例舉例7:試解讀如下程序并說明其功能:試解讀如下程序并說明其功能MOVA,#17HMOVB,#68HMULABMOV30H,AMOV31H,B; A17H; B68H; ABBA; (30H) A; (31H) B; A=17H; B=68H; B= 9;A=58H; (30H) 58H; (31H) 09H功能:計算17H68H的程序,其中乘積低8位送A,高8位送B。結果為958H,高8位送入31H單元,低8位送入30H單元。第3章單片機的匯編語言與程序設計單片機的匯編語言與程序設計算術運算

31、指令快捷記憶法算術運算指令快捷記憶法 規(guī)律:除形成閉環(huán)連線的運算外(只有1個操作數(shù)),其余運算都要以A為目的操作數(shù)。第3章單片機的匯編語言與程序設計單片機的匯編語言與程序設計3.1匯編語言概述 3.2指令系統(tǒng)簡介 1.數(shù)據(jù)傳送與交換類指令 2.算術運算類指令 3.邏輯運算及移位類指令邏輯運算及移位類指令 4.控制轉移類指令 5 .偽指令3.3匯編語言的編程方法第3章單片機的匯編語言與程序設計單片機的匯編語言與程序設計邏輯運算及移位類指令邏輯運算及移位類指令共有共有34條,可以實現(xiàn)二進制數(shù)的與、條,可以實現(xiàn)二進制數(shù)的與、或、異或、求反、置或、異或、求反、置1、清零、移位等邏輯操作。、清零、移位等

32、邏輯操作。第3章單片機的匯編語言與程序設計單片機的匯編語言與程序設計第3章單片機的匯編語言與程序設計單片機的匯編語言與程序設計舉例舉例8:試解讀如下程序并說明其功能:試解讀如下程序并說明其功能編制程序,將編制程序,將M1單元中數(shù)字單元中數(shù)字09的的ASCII碼變?yōu)橄鄳獢?shù)碼變?yōu)橄鄳獢?shù)字的字的BCD碼。碼。 解解:由于:由于09的的ASCII碼為碼為30H39H,故只要將,故只要將09數(shù)數(shù)字字ASCII碼的高碼的高4位變?yōu)槲蛔優(yōu)?,低,低4位不變就是其位不變就是其BCD碼。碼。邏輯與的特性邏輯與的特性:x 0 = 0(清零);(清零);x 1 = x(屏蔽)(屏蔽) ANL M1,#0000 11

33、11B;(M1)(M1)0FH第3章單片機的匯編語言與程序設計單片機的匯編語言與程序設計舉例舉例9:試解讀如下程序并說明其功能:試解讀如下程序并說明其功能。 ANLA,#0FHANLP1,#0F0HORLP1,A功能:把累加器A中低4位送入P1口低4位,P1口的高4位不變(實現(xiàn)了一次數(shù)據(jù)組合); AA0FH; P1P1F0H; P1P1A邏輯或的特性邏輯或的特性:x 0 = x(屏蔽);(屏蔽);x 1 = 1(置位)(置位); A = 0000 xxxxB; P1= XXXX0000B; P1= XXXXxxxxB第3章單片機的匯編語言與程序設計單片機的匯編語言與程序設計舉例舉例10:試解讀

34、如下程序并說明其功能:試解讀如下程序并說明其功能。MOV A,40HCPL AINCAMOV 40H,A功能:對功能:對40H單元中的數(shù)求補,運算后結果仍送回單元中的數(shù)求補,運算后結果仍送回40H單元單元 。; A(40H); A/A; A A+1;(40H) A 第3章單片機的匯編語言與程序設計單片機的匯編語言與程序設計功能:將A.5與80H位相與的結果,通過P1.4輸出。 舉例舉例11:已知:已知A.5=1,位地址,位地址(80H)=0。試解讀如。試解讀如下程序并說明其功能下程序并說明其功能。MOV C,A.5ANLC,80HMOV P1.4,C; C A.5; C C 80H; P1.4

35、 C; C 1; C 10=0; P1.4 0第3章單片機的匯編語言與程序設計單片機的匯編語言與程序設計邏輯運算指令快捷記憶法邏輯運算指令快捷記憶法 規(guī)律:除#data與direct外,幾乎所有運算都是以A為目的操作數(shù)。第3章單片機的匯編語言與程序設計單片機的匯編語言與程序設計3.1匯編語言概述 3.2指令系統(tǒng)簡介 1.數(shù)據(jù)傳送與交換類指令 2.算術運算類指令 3.邏輯運算及移位類指令 4.控制轉移類指令控制轉移類指令 5 .偽指令3.3匯編語言的編程方法第3章單片機的匯編語言與程序設計單片機的匯編語言與程序設計控制轉移類指令控制轉移類指令共有共有22條,條,主要功能是通過改變主要功能是通過改

36、變程序計數(shù)器程序計數(shù)器PC的內(nèi)容,進而改變程序流向。的內(nèi)容,進而改變程序流向。第3章單片機的匯編語言與程序設計單片機的匯編語言與程序設計第3章單片機的匯編語言與程序設計單片機的匯編語言與程序設計功能:可根據(jù)功能:可根據(jù)A中的數(shù)實現(xiàn)分支程序的跳轉。中的數(shù)實現(xiàn)分支程序的跳轉。 舉例舉例12:設:設A中為整數(shù)中為整數(shù)0n,B中為整數(shù)中為整數(shù)3。試解讀如下程。試解讀如下程序并說明其功能(提示,序并說明其功能(提示,LJMP為為3字節(jié)指令)字節(jié)指令)。; ABBA; DPTR BLOCK; PCA+DPTR; PCLOOP0; PCLOOP1; PCLOOP2 ;0號分支入口號分支入口 ;1號分支入口號

37、分支入口 MUL AB MOV DPTR, #BLOCKJMP A+DPTR BLOCK: LJMP LOOP0 LJMP LOOP1 LJMP LOOP2 LOOP0: ;0號分支入口號分支入口LOOP1: ;1號分支入口號分支入口; A = 0, 3, 6, 9.,3n; DPTR =BLOCK; PC3n + BLOCK; PCLOOP0; PCLOOP1; PCLOOP2;0號分支入口號分支入口;1號分支入口號分支入口第3章單片機的匯編語言與程序設計單片機的匯編語言與程序設計功能:比較功能:比較30H和和40H中兩個無符號數(shù)的大小,將大數(shù)存中兩個無符號數(shù)的大小,將大數(shù)存入入50H,小數(shù)

38、存入,小數(shù)存入51H,若兩數(shù)相等則使,若兩數(shù)相等則使7FH位置位置1。 MOV A,30H CJNE A,40H,NOEQU SETB 7FH SJMP FINISHNOEQU: JC SMALL MOV 50H,A MOV 51H,40H SJMP FINISHSMALL: MOV 50H,40H MOV 51H,AFINISH: SJMP $; A (30H); 若若A(40H)轉轉NOEQU; (7FH) 1; PCPCFINISH; 若若CY=1,則,則PCPCSMALL; (50H) A; (51H) (40H); PCPCFINISH; (50H) (40H); (51H) A;

39、PC=PC當前當前舉例舉例13:試解讀如下程序并說明其功能:試解讀如下程序并說明其功能。做法:先判斷比較雙方是否相等,隨后再利用C判斷不相等時的關系。第3章單片機的匯編語言與程序設計單片機的匯編語言與程序設計總延時量:總延時量:(2125+1+2)200+1 = 50.601ms舉例舉例14:試分析如下延時子程序可實現(xiàn)的延時量:試分析如下延時子程序可實現(xiàn)的延時量。DEL50: MOV R7,#200DEL1: MOV R6,#125DEL2: DJNZ R6,DEL2 DJNZ R7,DEL1 RET;循環(huán)循環(huán)125次次;循環(huán)循環(huán)200次次RnRn-1若Rn0,則 PCPC+rel否則順序進行

40、 ACALL DEL50 ;調用延時子程序使用:(設指令(設指令DJNZ耗時為耗時為2s, 指令指令MOV為為1 s)第3章單片機的匯編語言與程序設計單片機的匯編語言與程序設計控制轉移類指令快捷記憶法控制轉移類指令快捷記憶法 規(guī)律:所有條件轉移都只能是在rel的范圍內(nèi)進行,即-128127。 第3章單片機的匯編語言與程序設計單片機的匯編語言與程序設計3.1匯編語言概述 3.2指令系統(tǒng)簡介 1.數(shù)據(jù)傳送與交換類指令 2.算術運算類指令 3.邏輯運算及移位類指令 4.控制轉移類指令 5 .偽指令偽指令3.3匯編語言的編程方法第3章單片機的匯編語言與程序設計單片機的匯編語言與程序設計匯編語言指令的兩

41、類指令匯編語言指令的兩類指令:硬指令硬指令(指令性語句)(指令性語句)匯編后可以產(chǎn)生機器匯編后可以產(chǎn)生機器 碼的指令,如前介紹的碼的指令,如前介紹的111條指令;條指令;偽指令偽指令(指示性語句)(指示性語句)用于對匯編過程提供必用于對匯編過程提供必 要信息的指令,匯編后不會產(chǎn)生機器碼要信息的指令,匯編后不會產(chǎn)生機器碼常用的偽指令:常用的偽指令: ORG、END、EQU、DB、DW、DS、BIT第3章單片機的匯編語言與程序設計單片機的匯編語言與程序設計 MCS-51常用偽指令常用偽指令 第3章單片機的匯編語言與程序設計單片機的匯編語言與程序設計舉例舉例15:采用偽指令的做法重新編寫平方值查表程

42、序。采用偽指令的做法重新編寫平方值查表程序。 解解:為方便比較,下圖列出了匯編后的機器代碼及存放地址:為方便比較,下圖列出了匯編后的機器代碼及存放地址 第3章單片機的匯編語言與程序設計單片機的匯編語言與程序設計3.1匯編語言概述 3.2指令系統(tǒng)簡介 3.3匯編語言的編程方法第3章單片機的匯編語言與程序設計單片機的匯編語言與程序設計匯編語言程序的開發(fā)過程匯編語言程序的開發(fā)過程 確定編程思路確定編程思路畫程序流程圖畫程序流程圖編寫匯編程序編寫匯編程序程序編譯調試程序編譯調試用匯編語言進行程序設計的過程和用高級語言進行程序設計的過程類似,一般需要經(jīng)過以下幾個步驟:第3章單片機的匯編語言與程序設計單片

43、機的匯編語言與程序設計流程圖(程序框圖)流程圖(程序框圖) 表示出程序的執(zhí)行過程或解題步驟和方法表示出程序的執(zhí)行過程或解題步驟和方法 給出程序的結構,體現(xiàn)整體與部分之間的關系給出程序的結構,體現(xiàn)整體與部分之間的關系 便于閱讀、理解程序,查找錯誤便于閱讀、理解程序,查找錯誤舉例舉例16:在單片機在單片機P1口外接口外接8個發(fā)光二極管(低電平驅動)。個發(fā)光二極管(低電平驅動)。試編寫一匯編程序,實現(xiàn)試編寫一匯編程序,實現(xiàn)LED循環(huán)點亮功能:循環(huán)點亮功能:第3章單片機的匯編語言與程序設計單片機的匯編語言與程序設計XTAL218XTAL119ALE30EA31PSEN29RST9P0.0/AD039P

44、0.1/AD138P0.2/AD237P0.3/AD336P0.4/AD435P0.5/AD534P0.6/AD633P0.7/AD732P1.01P1.12P1.23P1.34P1.45P1.56P1.67P1.78P3.0/RXD10P3.1/TXD11P3.2/INT012P3.3/INT113P3.4/T014P3.7/RD17P3.6/WR16P3.5/T115P2.7/A1528P2.0/A821P2.1/A922P2.2/A1023P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427U1AT89C51C11nFX1CRYSTALC21nFC322uFR

45、esistorResistorR11kD1LED-REDResistorResistorR2220D2LED-REDD3LED-REDD4LED-REDResistorResistorR4220ResistorResistorR5220ResistorResistorR6220D5LED-REDD6LED-REDD7LED-REDResistorResistorR3220ResistorResistorR7220ResistorResistorR8220ResistorResistorR9220D9LED-REDP1.0P1.1P1.2 P1.7P1.6 P1.0的順序,無限循環(huán)。的順序,無限

46、循環(huán)。采用軟件延時方法控制閃爍時間間隔采用軟件延時方法控制閃爍時間間隔(約(約50ms)。)。解:解:仿真開發(fā)過程如下仿真開發(fā)過程如下 第3章單片機的匯編語言與程序設計單片機的匯編語言與程序設計電路原理圖設計:電路原理圖設計:利用利用Proteus軟件的軟件的ISIS模塊繪制原理模塊繪制原理圖。考慮到圖。考慮到LED低低電平驅動要求,硬電平驅動要求,硬件電路設計時需使件電路設計時需使LED的陰極應接的陰極應接P1口,陽極通過限流口,陽極通過限流電阻與電阻與+5V電源相電源相接。接。 XTAL218XTAL119ALE30EA31PSEN29RST9P0.0/AD039P0.1/AD138P0.

47、2/AD237P0.3/AD336P0.4/AD435P0.5/AD534P0.6/AD633P0.7/AD732P1.01P1.12P1.23P1.34P1.45P1.56P1.67P1.78P3.0/RXD10P3.1/TXD11P3.2/INT012P3.3/INT113P3.4/T014P3.7/RD17P3.6/WR16P3.5/T115P2.7/A1528P2.0/A821P2.1/A922P2.2/A1023P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427U1AT89C51C11nFX1CRYSTALC21nFC322uFResistorResistorR11kD1LED-REDResistorResistorR2220D2LED-REDD3LE

溫馨提示

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

最新文檔

評論

0/150

提交評論