片機原理與應(yīng)用第二章.ppt_第1頁
片機原理與應(yīng)用第二章.ppt_第2頁
片機原理與應(yīng)用第二章.ppt_第3頁
片機原理與應(yīng)用第二章.ppt_第4頁
片機原理與應(yīng)用第二章.ppt_第5頁
已閱讀5頁,還剩139頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

單片機原理與應(yīng)用,四川文理學(xué)院 Email: 2019年7月14日,第2章 MCS-51單片機指令系統(tǒng)與匯編語言程序設(shè)計,主要內(nèi)容: MCS-51單片機的尋址方式、指令系統(tǒng)、基本程序結(jié)構(gòu)及匯編語言的開發(fā)和調(diào)試。重點在于尋址方式、各種指令的應(yīng)用、程序設(shè)計的規(guī)范、程序設(shè)計的思想及典型程序的理解和掌握。難點在于控制轉(zhuǎn)移、位操作指令的理解及各種指令的靈活應(yīng)用,以及程序設(shè)計的基本方法和針對具體的硬件設(shè)計出最合理的軟件。,指令系統(tǒng):一臺計算機所能識別、執(zhí)行的指令的集合就是它的指令系統(tǒng)。 機器語言:指令系統(tǒng)是一套控制計算機執(zhí)行操作的二進制編碼,稱為機器語言。機器語言指令是計算機惟一能識別和執(zhí)行的指令。 匯編語言:指令系統(tǒng)是利用指令助記符來描述的,稱為匯編語言。 計算機的指令系統(tǒng)一般都是利用匯編語言描述的,是由計算機硬件設(shè)計所決定的。指令系統(tǒng)沒有通用性。 單片機一般是空機,未含任何系統(tǒng)軟件。因此在第一次使用前,必須對其進行編程,,2.1 概述,2.1.1 匯編語言指令格式與偽指令,1常用單位與術(shù)語 位(bit):位是計算機所能表示的最小的、最基本的數(shù)據(jù)單位,位通常是指一個二進制位。 字節(jié)(Byte):一個連續(xù)的8位二進制數(shù)碼稱為一個字節(jié),即1Byte=8bit。 字(Word):通常由16位二進制數(shù)碼組成,即1Word=2Byte。 字長:字長是指計算機一次處理二進制數(shù)碼位的多少。MCS-51型單片機是8位機,所以說它的字長為8位。 MCS-51系列單片機都是以Intel公司最早的典型產(chǎn)品8051為核心,增加了一定的功能部件后構(gòu)成的。本章以8051為主介紹MCS-51系列單片機 。,2匯編語言指令格式,指令格式:指令的表示方式稱為指令格式,它規(guī)定了指令的長度和內(nèi)部信息的安排。完整的指令格式如下: 標號: 操作碼 操作數(shù) ,操作數(shù) ;注釋 其中: 項是可選項。 標號:指本條指令起始地址的符號,也稱為指令的符號地址。代表該條指令在程序編譯時的具體地址。 操作碼:又稱助記符,它是由對應(yīng)的英文縮寫構(gòu)成的,是指令語句的關(guān)鍵。它規(guī)定了指令具體的操作功能,描述指令的操作性質(zhì),是一條指令中不可缺少的內(nèi)容。 操作數(shù):它既可以是一個具體的數(shù)據(jù),也可以是存放數(shù)據(jù)的地址。 注釋:注釋也是指令語句的可選項,它是為增加程序的可讀性而設(shè)置的,是針對某指令而添加的說明性文字,不產(chǎn)生可執(zhí)行的目標代碼。,偽指令(也稱為匯編程序的控制命令)是程序員發(fā)給匯編程序的命令,用來設(shè)置符號值、保留和初始化存儲空間、控制用戶程序代碼的位置。 偽指令只出現(xiàn)在匯編前的源程序中,僅提供匯編用的某些控制信息,不產(chǎn)生可執(zhí)行的目標代碼,是CPU不能執(zhí)行的指令。,3偽指令,(1)定位偽指令 ORG 格式:ORG n 其中:n通常為絕對地址,可以是十六進制數(shù)、標號或表達式。 功能:規(guī)定編譯后的機器代碼存放的起始位置。在一個匯編語言源程序中允許存在多條定位偽指令,但每一個n值都應(yīng)和前面生成的機器指令存放地址不重疊。 例如程序: ORG 1000H START: MOV A,#20H MOV B,#30H ,3偽指令,(2)結(jié)束匯編偽指令END 格式:標號: END 表達式 功能:放在匯編語言源程序的末尾,表明源程序的匯編到此結(jié)束,其后的任何內(nèi)容不予理睬。,3偽指令,(3)賦值偽指令EQU 格式:字符名稱x EQU 賦值項n 功能:將賦值項n的值賦予字符名稱x。程序中凡出現(xiàn)該字符名稱x就等同于該賦值項n,其值在整個程序中有效。賦值項n可以是常數(shù)、地址、標號或表達式。在使用時,必須先賦值后使用。 “字符名稱”與“標號”的區(qū)別是“字符名稱”后無冒號,而“標號”后面有冒號。,3偽指令,(4)定義字節(jié)偽指令 DB 格式:標號: DB x1, x2, xn 功能:將8位數(shù)據(jù)(或8位數(shù)據(jù)組)x1, x2, xn順序存放在從當(dāng)前程序存儲器地址開始的存儲單元中。xi可以是8位數(shù)據(jù)、ASCII碼、表達式,也可以是括在單引號內(nèi)的字符串。兩個數(shù)據(jù)之間用逗號“,”分隔。 xi為數(shù)值常數(shù)時,取值范圍為00HFFH。xi為ASCII碼時,要使用單引號,以示區(qū)別。xi為字符串常數(shù)時,其長度不應(yīng)超過80個字符。,3偽指令,(5)定義雙字節(jié)偽指令 DW 格式:標號: DW x1, x2, xn 功能:將雙字節(jié)數(shù)據(jù)或雙字節(jié)數(shù)據(jù)組順序存放在從標號指定地址單元開始的存儲單元中。其中,xi為16位數(shù)值常數(shù),占兩個存儲單元,先存高8位(存入低位地址單元中),后存低8位(存入高位地址單元中)。,3偽指令,(6)預(yù)留存儲空間偽指令DS 格式:標號: DS n 功能:從標號指定地址單元開始,預(yù)留n個存儲單元,匯編時不對這些存儲單元賦值。n可以是數(shù)據(jù),也可以是表達式。,3偽指令,(7)定義位地址符號偽指令BIT 格式:字符名稱x BIT 位地址n 功能:將位地址n的值賦予字符名稱x。程序中凡出現(xiàn)該字符名稱x就代表該位地址。位地址n可以是絕對地址,也可以是符號地址。,3偽指令,(8)數(shù)據(jù)地址賦值偽指令DATA 格式:字符名稱x DATA 表達式n 功能:把表達式n的值賦值給左邊的字符名稱x。n可以是數(shù)據(jù)或地址,也可以是包含所定義的“字符名稱x”在內(nèi)的表達式,但不能是匯編符號。 DATA與EQU的主要區(qū)別是:EQU定義的“字符名稱”必須先定義后使用,而DATA定義的“字符名稱”沒有這種限制。所以,DATA偽指令通常用在源程序的開頭或末尾。,3偽指令,2.1.2 指令的分類,MCS-51指令系統(tǒng)有111條指令,可按下列幾種方式分類: 按指令字節(jié)數(shù)分類 單字節(jié)指令(49條)、雙字節(jié)指令(46條)和三字節(jié)指令(16條)。 2. 按指令執(zhí)行時間分類 單機器周期指令(65條)、雙機器周期指令(44條)和四機器周期指令(2條)。 3. 按功能分類 數(shù)據(jù)傳送指令(29條)、算術(shù)操作指令(24條)、邏輯操作指令(24條)、控制轉(zhuǎn)移指令(17條)和位操作指令(17條)。,2.1.3 指令中的常用符號,Rn(n=07):表示當(dāng)前工作寄存器R0R7中的任一個寄存器。 Ri(i=0或1):表示通用寄存器組中用于間接尋址的兩個寄存器R0, R1。 #data:表示8位直接參與操作的立即數(shù)。 #data16:表示16位直接參與操作的立即數(shù)。 direct:表示片內(nèi)RAM的8位單元地址。 addr11:表示11位目的地址,主要用于ACALL和AJMP指令中。 addr16:表示16位目的地址,主要用于LCALL和LJMP指令中。 rel:用補碼形式表示的8位二進制地址偏移量,取值范圍為128+127,主要用于相對轉(zhuǎn)移指令,以形成轉(zhuǎn)移的目的地址。 DPTR:數(shù)據(jù)指針,用于寄存器間接尋址方式和變址尋址方式。,2.1.3 指令中的常用符號,bit:表示片內(nèi)RAM的位尋址區(qū),或者是可以位尋址的SFR的位地址。 A(或ACC)、 B :表示累加器、 B寄存器。 C:表示PSW中的進位標志位Cy。 :在間接尋址方式中,表示間接尋址寄存器指針的前綴標志。 $:表示當(dāng)前的指令地址。 /:在位操作指令中,表示對該位先求反后再參與操作。 (X):表示由X所指定的某寄存器或某單元中的內(nèi)容。 (X):表示由X間接尋址單元中的內(nèi)容。 :表示指令的操作結(jié)果是將箭頭右邊的內(nèi)容傳送到左邊。 :表示指令的操作結(jié)果是將箭頭左邊的內(nèi)容傳送到右邊。 、 、 :表示邏輯或、與、異或。,尋址方式:在計算機中,說明操作數(shù)所在地址的方法稱為指令的尋址方式。 計算機執(zhí)行程序?qū)嶋H上是在不斷尋找操作數(shù)并進行操作的過程。 每種計算機在設(shè)計時已決定了它具有哪些尋址方式,尋址方式越多,計算機的靈活性越強,指令系統(tǒng)也就越復(fù)雜。 MCS-51單片機的指令系統(tǒng)提供了7種尋址方式,分別為立即尋址、直接尋址、寄存器尋址、寄存器間接尋址、變址尋址、相對尋址和位尋址。一條指令可能含多種尋址方式。,2.2 MCS-51單片機的尋址方式,2.2.1 立即尋址,定義:將立即參與操作的數(shù)據(jù)直接寫在指令中,這種尋址方式稱為立即尋址。 特點:指令中直接含有所需的操作數(shù)。該操作數(shù)可以是8位的,也可以是16位的,常常處在指令的第二字節(jié)和第三字節(jié)的位置上。立即數(shù)通常使用#data或#data16表示,在立即數(shù)前面加“#”標志,用以和直接尋址中的直接地址(direc或bit)相區(qū)別。,2.2 MCS-51單片機的尋址方式,2.2.2 直接尋址,定義:將操作數(shù)的地址直接存放在指令中,這種尋址方式稱為直接尋址。 特點:指令中含有操作數(shù)的地址。該地址指出了參與操作的數(shù)據(jù)所在的字節(jié)單元地址或位地址。計算機執(zhí)行它們時便可根據(jù)直接地址找到所需要的操作數(shù)。 尋址范圍:ROM、片內(nèi)RAM區(qū)、SFR和位地址空間。,2.2 MCS-51單片機的尋址方式,2.2.3 寄存器尋址 定義:操作數(shù)存放在MCS-51內(nèi)部的某個工作寄存器Rn(R0R7)或部分專用寄存器中,這種尋址方式稱為寄存器尋址。 特點:由指令指出某一個寄存器的內(nèi)容作為操作數(shù)。存放操作數(shù)的寄存器在指令代碼中不占據(jù)單獨的一個字節(jié),而是嵌入(隱含)到操作碼字節(jié)中。 尋址范圍:四組通用寄存器Rn(R0R7)、部分專用寄存器( A, B, DPTR, Cy )。,2.2 MCS-51單片機的尋址方式,2.2.4 寄存器間接尋址 定義:指令給出的寄存器中存放的是操作數(shù)據(jù)的單元地址。這種尋址方式稱為寄存器間接尋址,簡稱為寄存器間址。 特點:指令給出的寄存器中存放的是操作數(shù)地址。寄存器間接尋址是一種二次尋找操作數(shù)地址的尋址方式,寄存器前邊必須加前綴符號“”。不能用于尋址特殊功能寄存器SFR。 尋址范圍:內(nèi)部RAM低128B(只能使用R0或R1作間址寄存器)、外部RAM(只能使用DPTR作間址寄存器)。對于外部低256單元RAM的訪問,除可以使用DPTR外,還可以使用R0或R1作間址寄存器。,2.2 MCS-51單片機的尋址方式,2.2.5 變址尋址 定義:操作數(shù)存放在變址寄存器(累加器A)和基址寄存器(DPTR或PC)相加形成的16位地址單元中。這種尋址方式稱為基址加變址寄存器間接尋址,簡稱為變址尋址。 特點:指令操作碼中隱含作為基址寄存器用的DPTR(或PC )和作為變址用的累加器A。在執(zhí)行變址尋址指令時,MCS-51單片機先把基地址( DPTR或PC 的內(nèi)容)和地址偏移量(A的內(nèi)容)相加,以形成操作數(shù)地址,再由操作數(shù)地址找到操作數(shù),并完成相應(yīng)的操作。變址尋址方式是單字節(jié)指令。,2.2 MCS-51單片機的尋址方式,尋址范圍:只能對程序存儲器ROM進行尋址,主要用于查表性質(zhì)的訪問。 注意:累加器A中存放的操作數(shù)地址相對基地址的偏移量的范圍為00HFFH(無符號數(shù))。MCS-51單片機共有以下三條變址尋址指令: MOVC A, A+PC ;(A)(A)+(PC)+1 MOVC A, A+DPTR ;(A)(A)+(DPTR) JMP A+DPTR ;(PC)(A)+(DPTR),2.2 MCS-51單片機的尋址方式,2.2.6 相對尋址 定義:將程序計數(shù)器PC的當(dāng)前值(取出本條指令后的PC值)與指令第二個字節(jié)給出的偏移量(rel)相加,形成新的轉(zhuǎn)移目標地址。稱為相對尋址方式。 特點:相對尋址方式是為實現(xiàn)程序的相對轉(zhuǎn)移而設(shè)計的,為相對轉(zhuǎn)移指令所使用,其指令碼中含有相對地址偏移量,能生成浮動代碼。 如: SJMP rel ; (PC)(PC) + 2 + rel 相對轉(zhuǎn)移指令的目的地址指令地址指令字節(jié)數(shù)偏移量 尋址范圍:只能對程序存儲器ROM進行尋址。相對地址偏移量(rel)是一個帶符號的8位二進制補碼,其取值范圍為128127(以PC為中間的256個字節(jié)范圍)。,2.2 MCS-51單片機的尋址方式,2.2.7 位尋址 定義:指令中給出的操作數(shù)是一個可單獨尋址的位地址,這種尋址方式稱為位尋址方式。 特點:位尋址是直接尋址方式的一種,其特點是對8位二進制數(shù)中的某一位的地址進行操作。 尋址范圍:片內(nèi)RAM低128B中位尋址區(qū)、部分SFR(其中有83位可以位尋址)。 可位尋址的位地址的表示形式如下: (1)直接使用位地址形式。如: MOV 00H, C ;(00H)(Cy) 其中:00H是片內(nèi)RAM中20H地址單元的第0位。,2.2 MCS-51單片機的尋址方式,(2)字節(jié)地址加位序號的形式。如: MOV 20H.0, C ; (20H.0)(Cy) 其中:20H.0是片內(nèi)RAM中20H地址單元的第0位。 (3)位的符號地址(位名稱)的形式。對于部分特殊功能寄存器,其各位均有一個特定的名字,所以可以用它們的位名稱來訪問該位。如: ANL C, P ; (C) (C)(P) 其中:P是PSW的第0位,C是PSW的第7位。 (4)字節(jié)符號地址(字節(jié)名稱)加位序號的形式。對于部分特殊功能寄存器(如狀態(tài)標志寄存器PSW),還可以用其字節(jié)名稱加位序號形式來訪問某一位。如: CPL PSW.6 ; (AC) ( ) 其中: PSW.6表示該位是PSW的第6位。,2.2 MCS-51單片機的尋址方式,例題1 指出下列指令的尋址方式 MOV A,R1 ;(A)(R1) 寄存器尋址 ADD A,#05H ; (A)(A)+立即數(shù) 05H 立即尋址 MOV A,R1 ; (A) (R1) 寄存器間接尋址 MOV 30H,4AH ;( 30H )(4AH) 直接尋址 MOVC A,A+DPTR ;(A)(A)+(DPTR) 變址尋址 SJMP LP ; (PC)(PC)+ 2 + 偏移量 相對尋址 MOV 65H, C ;(65H)(Cy) 位尋址,2.3 MCS-51單片機的指令系統(tǒng),MCS-51指令系統(tǒng)使用44種助記符,它們代表著33種功能,可以實現(xiàn)51種操作。指令助記符與操作數(shù)的各種可能的尋址方式的結(jié)合一共可構(gòu)造出111條指令。 MCS-51單片機指令系統(tǒng)按其功能可分為數(shù)據(jù)傳送類指令、算術(shù)運算類指令、邏輯運算和移位類指令、控制轉(zhuǎn)移類指令和位操作類指令五大類。,學(xué)習(xí)指令系統(tǒng)時,應(yīng)注意: (1)指令的格式、功能 。 (2)操作碼的含義,操作數(shù)的表示方法。 (3)尋址方式,源、目的操作數(shù)的范圍。 (4)對標志位的影響。 (5)指令的適用范圍。 (6)正確估算指令的字節(jié)數(shù)。 一般地: 操作碼占1字節(jié);操作數(shù)中,直接地址derict占1字節(jié),#data占1字節(jié),#data16占兩字節(jié);操作數(shù)中的A、B、R0R7、 Ri、DPTR、 A+ DPTR、 A+ PC等均隱含在操作碼中。,2.2 MCS-51單片機的尋址方式,2.3.1 數(shù)據(jù)傳送指令,CPU在進行算術(shù)和邏輯操作時,絕大多數(shù)指令都有操作數(shù),所以數(shù)據(jù)傳送是一種最基本、最主要的操作。 數(shù)據(jù)傳送指令共29條,可分為內(nèi)部RAM數(shù)據(jù)傳送、外部RAM數(shù)據(jù)傳送、程序存儲器數(shù)據(jù)傳送、數(shù)據(jù)交換和堆棧操作等五類。 尋址范圍:累加器A、片內(nèi)RAM、SFR、片外RAM。 功能:(目的地址)(源地址)。 可表示為: 源地址單元的內(nèi)容不變。 對標志位的影響:除以累加器A為目的操作數(shù)的數(shù)據(jù)傳送指令對P標志位有影響外,其余均不影響標志位。,1內(nèi)部RAM數(shù)據(jù)傳送指令(16條),格式: MOV , 其中: 表示目的操作數(shù), 表示源操作數(shù)。 范圍:源、目的操作數(shù)均在片內(nèi)RAM、SFR中。 指令形式:按目的操作數(shù)可將內(nèi)部數(shù)據(jù)傳送指令分為以下幾類。 (1)以累加器A為目的操作數(shù)(4條) MOV A , 其中: 包括Rn、Ri、direct、#data。(各個符號的意義見2.1.3節(jié)指令中的常用符號 ,以下同) 只影響PSW中的P標志位,不影響其他標志位。 (2)以工作寄存器Rn為目的操作數(shù)(3條) MOV Rn , 其中: 包括A、direct、#data 。,(3)以直接地址單元為目的操作數(shù)(5條) MOV direct , 其中: 包括A、Rn、Ri、direct 、#data 。 (4)以間址寄存器Ri為目的操作數(shù)(3條) MOV Ri , 其中: 包括A、direct 、#data 。 (5)16位數(shù)據(jù)傳送指令(1條) MOV DPTR , #data16,注:(2)、(3)、(4)、(5)均不影響標志位。 內(nèi)部數(shù)據(jù)傳送指令的傳送關(guān)系如右圖所示。,2外部RAM數(shù)據(jù)傳送指令(4條),CPU與外部數(shù)據(jù)存儲器之間進行數(shù)據(jù)傳送時,必須使用外部傳送指令,只能通過累加器A,采用寄存器間接尋址(用R0, R1和DPTR三個間接尋址的寄存器)方式完成。 指令格式: MOVX A , MOVX , A 其中: 、 包括DPTR、Ri。Ri(R0, R1)只能訪問片外RAM的低256個單元;DPTR可以訪問片外RAM的全部64KB的空間。 對標志位的影響: MOVX A , 指令只影響PSW中的P標志位,不影響其他標志位; MOVX , A指令不影響標志位。,3程序存儲器(ROM)數(shù)據(jù)傳送指令(查表指令)(2條),程序存儲器的數(shù)據(jù)傳送是單向的,并且只能讀到累加器A中。這類指令專門用于查表,又稱為查表指令。 指令格式:MOVC A , A+DPTP ;(A)(A)+(DPTR) MOVC A , A+PC ;(PC)(PC)+1 (A)(A)+(PC) 兩條指令的異同:其功能完全相同,但使用中存在著差異。 (1)查表的位置要求不同 采用DPTR作為基地址寄存器,表可以放在64KB程序存儲器空間的任何地址,使用方便,故稱為遠程查表。 采用PC作為基地址寄存器,具體的表在程序存儲器中只能在查表指令后的256B的地址空間中,使用有限制,故稱為近程查表。,(2)偏移量的計算方法不同 采用DPTR作為基地址寄存器,查表地址為(A)+(DPTR)。采用PC作為基地址寄存器,查表地址為(A)+(PC)+1。因此偏移量的計算方法不同。 采用DPTR作為基地址寄存器,A為欲查數(shù)值距離表首地址的值;采用PC作為基地址寄存器, A的值必須預(yù)先設(shè)置為: A的值=表首地址當(dāng)前指令的PC值1,數(shù)據(jù)傳輸時,若需要保存目的操作數(shù),則經(jīng)常采用數(shù)據(jù)交換指令。 (1)半字節(jié)數(shù)據(jù)交換指令(2條) 指令格式: SWAP A ;(A)30(A)74 XCHD A , Ri ;(A)30((Ri))30 (2)字節(jié)交換指令(3條) 指令格式:XCH A , 其中: 包括Rn、Ri、direct 。,4數(shù)據(jù)交換指令(5條),指令格式: PUSH direct ; SP(SP)+1 , (SP)(direct) POP derect ;(direct)(SP) , SP(SP)1 特點:堆棧操作指令是一種特殊的數(shù)據(jù)傳送指令,是根據(jù)棧指針SP中的棧頂?shù)刂愤M行數(shù)據(jù)操作。堆棧操作指令的實質(zhì)是以棧指針SP為間址寄存器的間址尋址方式。堆棧區(qū)應(yīng)避開使用的工作寄存器區(qū)和其他需要使用的數(shù)據(jù)區(qū),系統(tǒng)復(fù)位后,SP的初始值為07H。為了避免重疊,一般初始化時要重新設(shè)置SP。,5堆棧操作指令(2條),功能:實現(xiàn)RAM單元數(shù)據(jù)送入棧頂或由棧頂取出數(shù)據(jù)送至RAM單元。 適用場合:用于執(zhí)行中斷、子程序調(diào)用、參數(shù)傳遞等程序的斷點保護和現(xiàn)場保護。 書寫方式:堆棧操作指令是直接尋址指令,直接地址不能是寄存器名,因此應(yīng)注意指令的書寫格式。例如: PUSH ACC(不能寫成PUSH A) POP 00H (不能寫成POP R0),2.3.2 算術(shù)運算指令,算術(shù)運算指令的兩個參與運算的操作數(shù),一個存放在累加器A中(此操作數(shù)也為目的操作數(shù));一個存放在R0R7或Ri(片內(nèi)RAM)中,或是#data(立即數(shù))。 算術(shù)運算指令可以分為加法指令、帶進位的加法指令、帶借位的減法指令、十進制調(diào)整指令、加1指令、減1指令、乘除指令。,1. 加法指令(4條),指令格式: ADD A , ; (A)(A)+ 其中: 包括Rn、Ri、direct、#data。 對標志位的影響:ADD對PSW中的所有標志位均產(chǎn)生影響。,2. 帶進位的加法指令(4條),指令格式: ADDC A , ; (A)(A)+ + (Cy) 其中: 包括Rn、Ri、direct、#data。 對標志位的影響:ADDC對PSW中的所有標志位均產(chǎn)生影響。,3. 帶借位的減法指令(4條),指令格式: SUBB A , ; (A)(A) (Cy) 其中: 包括Rn、Ri、direct、#data。 對標志位的影響:SUBB對PSW中的所有標志位均產(chǎn)生影響。 注意:MCS-51指令系統(tǒng)中沒有不帶借位的減法指令,欲實現(xiàn)不帶借位的減法計算,應(yīng)預(yù)先置Cy=0(利用CLR C指令),然后利用帶借位的減法指令SUBB實現(xiàn)計算。,4. 十進制調(diào)整指令(1條),功能:跟在加法指令A(yù)DD或ADDC后面,對運算結(jié)果的十進制數(shù)進行BCD碼修正,使它調(diào)整為壓縮的BCD碼數(shù),以完成十進制加法運算功能。 特點:十進制調(diào)整指令也稱為BCD碼修正指令,這是一條專用指令。兩個壓縮的BCD碼按二進制數(shù)相加后必須經(jīng)本指令調(diào)整才能得到壓縮的BCD碼的和。源操作數(shù)只能在累加器A中,結(jié)果存入A中。 指令格式:DA A 注意:十進制調(diào)整指令不能對減法指令進行修正。BCD碼減法必須采用BCD補碼運算法則,變減法為補碼加法(被減數(shù)+減數(shù)的補碼,減數(shù)的補碼=9AH減數(shù))。然后對其進行十進制調(diào)整來實現(xiàn)。,5. 加1指令(5條),功能:加1指令又稱為增量指令,其功能是使操作數(shù)所指 定的單元的內(nèi)容加1 。 指令格式:INC ; + 1 其中: 即是源操作數(shù)又是目的操作數(shù)(即只有一個操作數(shù)),包括 A、Rn、direct、Ri、 DPTR 。 對標志位的影響:除對累加器A操作影響P標志位外,其他操作均不影響PSW的各標志位。,6. 減1指令(4條),功能:減1指令又稱為減量指令,其功能是使操作數(shù)所指定的單元的內(nèi)容減1 。 指令格式:DEC ; 1 其中: 即是源操作數(shù)又是目的操作數(shù)(即只有一個操作數(shù)),包括 A、Rn、direct、Ri。 對標志位的影響:同加1指令。,7. 乘除指令(2條),功能:實現(xiàn)乘法或除法操作。 特點:乘除指令在MCS-51指令系統(tǒng)中執(zhí)行時間最長,均為四周期指令。 指令格式: MUL AB ;(B)(A)(A)(B) DIV AB ; (A)(A)/(B)(B) 對標志位的影響:乘除指令影響PSW中的Cy, OV, P標志位。其中,Cy位總是被清0的,P是由累加器A中1的個數(shù)的奇偶性決定的。乘法運算中,若乘積大于FFH,則OV標志位置1,否則清0。除法運算中,若除數(shù)為0,則OV標志位置1,否則清0。,2.3.3 邏輯運算和移位指令,對標志位的影響:邏輯運算和移位指令中除了兩條帶進位的循環(huán)移位指令外,其余均不影響PSW中的各標志位。但當(dāng)目的操作數(shù)是累加器A時,影響PSW中的奇偶校驗位P。 常用的邏輯運算和移位類指令有:邏輯與、邏輯或、邏輯異或、循環(huán)移位、清0、求反(非)等24條指令,它們的操作數(shù)都是8位的。邏輯運算都是按位進行的,除用于邏輯運算外,還可用于模擬各種數(shù)字邏輯電路的功能,進行邏輯電路的設(shè)計。,1邏輯與運算指令(6條),功能:實現(xiàn)兩個操作數(shù)的邏輯與。 指令格式:ANL A , 其中: 包括Rn、Ri、direct、#data。 ANL direst , 其中: 包括A、#data。 適用場合:實現(xiàn)邏輯與,主要用于操作數(shù)的某些位不變(這些位與“1”),某些位置0(這些位與“0”)。,功能:實現(xiàn)兩個操作數(shù)的邏輯或。 指令格式:ORL A , 其中: 包括Rn、Ri、direct、#data。 ORL direst , 其中: 包括A、#data。 適用場合:實現(xiàn)邏輯或,主要用于操作數(shù)的某些位不變(這些位或“0”),某些位置1(這些位或“1”)。,2邏輯或運算指令(6條),功 能:實現(xiàn)兩個操作數(shù)的邏輯異或。 指令格式:XRL A , 其中: 包括Rn、Ri、direct、#data。 XRL direst , 其中: 包括A、#data。 適用場合:實現(xiàn)邏輯異或,主要用于操作數(shù)的某些位不變(這些位異或“0”),某些位取反(這些位異或“1”)。,3邏輯異或運算指令(6條),MCS-51單片機的循環(huán)移位指令共有不帶進位的循環(huán)左、右移位(操作碼為RL, RR)和帶進位的循環(huán)左、右移位(操作碼為RLC, RRC)指令4條。 特點:只能對累加器A進行循環(huán)移位。 指令格式: 操作碼 A 功能:累加器A中的數(shù)據(jù)逐位左移一位相當(dāng)于原內(nèi)容乘2,而逐位右移一位相當(dāng)于原內(nèi)容除以2。循環(huán)移位指令示意圖如下頁圖所示。,4循環(huán)移位指令(4條),4循環(huán)移位指令(4條),指令格式: CLR A ;(A)00H CPL A ;(A)( ) 特 點:可以節(jié)省存儲空間,提高程序執(zhí)行效率。 對標志位的影響:CLR A指令只影響PSW的P標志位,CPL A指令不影響PSW各標志位。,5累加器清0與取反指令(2條),2.3.4 控制轉(zhuǎn)移指令,功能: 改變程序計數(shù)器PC中的內(nèi)容,控制程序執(zhí)行的流向,實現(xiàn)程序分支轉(zhuǎn)向。 為了控制程序的執(zhí)行方向,MCS-51單片機提供了17條控制轉(zhuǎn)移指令。 對標志位的影響: 除了CJNE影響PSW的進位標志位Cy外,其余均不影響PSW的各標志位。,1無條件轉(zhuǎn)移指令(4條),定義:不規(guī)定條件的程序轉(zhuǎn)移稱為無條件轉(zhuǎn)移指令。 指令格式: 長轉(zhuǎn)移指令: LJMP addr16 ; (PC)addr150 絕對轉(zhuǎn)移指令: AJMP addr11 ;(PC)(PC)+2, PC 100addr11 相對(短)轉(zhuǎn)移指令:SJMP rel ;(PC)(PC)+2+rel 間接(散)轉(zhuǎn)移指令:JMP A+DPTR ;(PC) (DPTR)+(A),注意: (1)使用轉(zhuǎn)移指令時,指令中的地址或偏移量均可采用標號,只有在執(zhí)行前才被匯編成實際的二進制地址。 (2)指令的轉(zhuǎn)移范圍:在執(zhí)行當(dāng)前轉(zhuǎn)移指令后的PC值的基礎(chǔ)上: 長轉(zhuǎn)移指令LJMP: 64KB 絕對轉(zhuǎn)移指令A(yù)JMP :2KB 相對(短)轉(zhuǎn)移指令SJMP : 128+127(用補碼表示) 間接(散)轉(zhuǎn)移指令JMP: 64KB (3)相對(短)轉(zhuǎn)移指令SJMP rel 中地址偏移量的計算: rel = 轉(zhuǎn)移目標地址轉(zhuǎn)移指令地址(當(dāng)前PC值) 2,1無條件轉(zhuǎn)移指令(4條),(4)原地踏步(暫停當(dāng)前的程序,并不是真的停機)的實現(xiàn) SJMP $ 或 HERE: SJMP HERE (5)間接(散)轉(zhuǎn)移指令:JMP A+DPTR 常用于實現(xiàn)程序的分支轉(zhuǎn)移(散轉(zhuǎn))。 DPTR為轉(zhuǎn)移目的的起始地址,A為轉(zhuǎn)移目的的偏移量。 (6)在編程中,經(jīng)常使用短轉(zhuǎn)移指令SJMP和相對轉(zhuǎn)移指令A(yù)JMP,以便生成浮動代碼,并不經(jīng)常使用長轉(zhuǎn)移指令LJMP。,1無條件轉(zhuǎn)移指令(4條),功能:在規(guī)定的條件滿足時進行程序轉(zhuǎn)移,否則程序往下順序執(zhí)行。MCS-51單片機中,條件轉(zhuǎn)移指令實質(zhì)上是累加器A判零指令。 指令格式: JZ rel ; 若(A)=0,則轉(zhuǎn)移 (PC) (PC)+2+rel 若(A)0,則順序執(zhí)行(PC) (PC) +2 JNZ rel ; 若(A)0 ,則轉(zhuǎn)移 (PC) (PC)+2+rel 若(A) =0 ,則順序執(zhí)行(PC) (PC) +2,2條件轉(zhuǎn)移指令(2條),指令的轉(zhuǎn)移范圍: rel的取值范圍是在執(zhí)行當(dāng)前轉(zhuǎn)移指令后的PC值基礎(chǔ)上的128+127(用補碼表示)。 可以采用符號地址表示。 偏移量rel的計算方法: rel = 轉(zhuǎn)移目標地址轉(zhuǎn)移指令地址(當(dāng)前PC值) 2,2條件轉(zhuǎn)移指令(2條),指令格式: CJNE 目的操作數(shù),源操作數(shù),rel 其 中:當(dāng)目的操作數(shù)為A時,源操作數(shù)為#data、direct。當(dāng)目的操作數(shù)為Rn、Ri時,源操作數(shù)為#data; 即:CJNE A, direct, rel CJNE A, #data, rel CJNE Rn, #data, rel CJNE Ri, #data, rel,3比較轉(zhuǎn)移指令(4條),功能:把兩個操作數(shù)進行比較,以比較的結(jié)果作為條件來控制程序的轉(zhuǎn)移 。 若(目的操作數(shù))=(源操作數(shù)),則程序繼續(xù)執(zhí)行,(PC)(PC) +3 若(目的操作數(shù))(源操作數(shù)),則程序轉(zhuǎn)移,(PC)(PC) + rel +3,Cy0 若(目的操作數(shù))(源操作數(shù)),則程序轉(zhuǎn)移,(PC)(PC) + rel +3,Cy1,3比較轉(zhuǎn)移指令(4條),對標志位影響:影響Cy標志位,不影響其他標志位。 指令的轉(zhuǎn)移范圍:rel的取值范圍是在執(zhí)行當(dāng)前轉(zhuǎn)移指令后的PC值基礎(chǔ)上的128+127(用補碼表示)。 可以采用符號地址表示。 注意:比較轉(zhuǎn)移指令的比較是通過兩操作數(shù)的減法實現(xiàn)的,影響Cy標志位,不保存最后的差值,兩個操作數(shù)的內(nèi)容不變。,3比較轉(zhuǎn)移指令(4條),功能:具有減1判非0則轉(zhuǎn)移的功能。主要用于控制程序循環(huán),實現(xiàn)按循環(huán)次數(shù)控制循環(huán)的目的。 特點:循環(huán)轉(zhuǎn)移指令是一組把減1與條件轉(zhuǎn)移兩種功能結(jié)合在一起的指令。,4循環(huán)(減1條件)轉(zhuǎn)移指令(2條),指令格式: DJNZ , rel ; 1 若0,則轉(zhuǎn)移 (PC) (PC)+2+rel 若 0,則不轉(zhuǎn)移 (PC) (PC) +2 注意:條件轉(zhuǎn)移指令均為相對轉(zhuǎn)移指令,因此指令的轉(zhuǎn)移范圍十分有限。若要實現(xiàn)64KB范圍內(nèi)的轉(zhuǎn)移,則可以借助于一條長轉(zhuǎn)移指令的過渡來實現(xiàn)。,4循環(huán)(減1條件)轉(zhuǎn)移指令(2條),定義:具有完整功能的程序段定義為子程序,供主程序調(diào)用。 功能: 供主程序在需要時調(diào)用。子程序可以在程序中反復(fù)多次使用,以簡化源程序的書寫。 特點:子程序可以嵌套,有利于模塊化程序設(shè)計。,5子程序調(diào)用與返回指令(4條),主程序與子程序之間的調(diào)用關(guān)系如下左圖所示,兩級子程序嵌套的示意圖如下右圖所示。,5子程序調(diào)用與返回指令(4條),子程序調(diào)用指令在主程序中使用,而子程序返回指令則是子程序的最后一條指令。調(diào)用與返回指令是成對使用的。 子程序調(diào)用指令的功能:必須具有自動把程序計數(shù)器PC中的斷點地址保護到堆棧中,且將子程序入口地址自動送入程序計數(shù)器PC中的功能。 子程序返回指令的功能:必須具有自動把堆棧中的斷點地址恢復(fù)到程序計數(shù)器PC中的功能。 注意:子程序調(diào)用時應(yīng)注意入口參數(shù)設(shè)置,子程序返回時應(yīng)注意出口參數(shù)的傳遞。,5子程序調(diào)用與返回指令(4條),(1)絕對短調(diào)用指令 ACALL addr11 ; (PC) (PC) +2, (SP) (SP) +1, (SP)(PC)70 (SP) (SP) +1, (SP) (PC) 158, (PC) 100addr11 其中: addr11為11位地址,實際編程時可以用符號地址。并且只能在2KB范圍以內(nèi)調(diào)用子程序 。,5子程序調(diào)用與返回指令(4條),(2)絕對長調(diào)用指令 LCALL addr16 ; (PC) (PC) +3, (SP) (SP) +1, (SP)(PC)70 (SP) (SP) +1, (SP) (PC) 158, (PC) 150addr16 其中: addr16為16位地址,實際編程時可以用符號地址??梢栽?4KB范圍以內(nèi)調(diào)用子程序 。,5子程序調(diào)用與返回指令(4條),(3)子程序返回指令 RET ; (PC) 158(SP), (SP) (SP) 1, (PC) 70 (SP) , (SP) (SP) 1,5子程序調(diào)用與返回指令(4條),(4)中斷返回指令 RETI ; (PC) 158(SP), (SP) (SP) 1, (PC) 70 (SP) , (SP) (SP) 1,5子程序調(diào)用與返回指令(4條),注意: 中斷服務(wù)程序是一種特殊的子程序,它是在計算機響應(yīng)中斷時,由硬件完成調(diào)用而進入相應(yīng)的中斷服務(wù)程序。RETI指令與RET指令相仿,區(qū)別在于RET是從子程序返回,RETI 是從中斷服務(wù)程序返回。無論是RET還是RETI都是子程序執(zhí)行的最后一條指令。,5子程序調(diào)用與返回指令(4條),指令格式: NOP ; (PC) (PC) +1 功 能:不執(zhí)行任何操作,消耗了一個機器周期,常 用于軟件延時或在程序可靠性設(shè)計中用來穩(wěn)定程序。 特 點:NOP占據(jù)一個單元的存儲空間,除了使PC的內(nèi)容加1外,CPU不產(chǎn)生任何操作結(jié)果,只是消耗了一個機器周期。,6空操作指令NOP (1條),2.3.5 位操作指令,位操作(布爾變量操作):操作數(shù)不是字節(jié),而是字節(jié)中的某個位。每位的取值只能取0或1。 指令的尋址范圍:片內(nèi)RAM位尋址區(qū)20H2FH, SFR中的11個可位尋址特殊寄存器中的83個可尋址位。 特點:以進位標志Cy作為位累加器,可以實現(xiàn)布爾變量的傳送、運算和控制轉(zhuǎn)移等功能。 指令中的位地址的表達方式:直接地址方式(如0AFH)、特殊功能寄存器名.位序號(如PSW.3)、字節(jié)地址.位序號(如0D0H.0)、位名稱方式(如F0)和用戶定義名稱等幾種方式。,特點:在可尋址位與位累加器Cy之間進行的。不能在兩個可尋址位間直接進行傳送。 指令格式: MOV C, bit ;(Cy)(bit) MOV bit, C ;(bit) (Cy),1. 位數(shù)據(jù)傳送指令(2條),指令格式: 操作碼 C , 其 中:操作碼包括ANL(邏輯位“與”)、ORL (邏輯位“或”); 包括bit、/bit。 CPL ; 其中: CPL表示取反, 包括Cy、 bit。 功 能:位邏輯操作指令用于位邏輯操作,還可用于對組合邏輯電路的模擬。采用位操作指令進行組合邏輯電路的設(shè)計比采用字節(jié)型邏輯指令節(jié)約存儲空間,運算操作十分方便。,2. 位邏輯操作指令(6條),指令格式: CLR ; 0 SETB ; 1 其 中:包括Cy、 bit。,3. 位狀態(tài)(置位、清0)控制指令(4條),特 點:以位的狀態(tài)作為實現(xiàn)程序轉(zhuǎn)移的判斷條件。 指令格式: (1)以進位標志位Cy內(nèi)容為條件的轉(zhuǎn)移指令 JC rel ; 若(Cy )=1,則轉(zhuǎn)移(PC)(PC)+2+rel , 否則順序執(zhí)行 JNC rel ; 若(Cy )=0,則轉(zhuǎn)移(PC)(PC)+2+rel , 否則順序執(zhí)行,4. 位條件(控制)轉(zhuǎn)移指令(5條),(2)以位地址bit內(nèi)容為條件的轉(zhuǎn)移指令 指令格式: JB bit, rel ; 若(bit)=1,則轉(zhuǎn)移(PC) (PC)+3+rel,否則順序執(zhí)行 JNB bit, rel ; 若(bit)=0,則轉(zhuǎn)移(PC) (PC)+3+rel,否則順序執(zhí)行 JBC bit, rel ; 若(bit)=1,則轉(zhuǎn)移(PC) (PC)+3+rel,且(bit )0,否則順序執(zhí)行,4. 位條件(控制)轉(zhuǎn)移指令(5條),2.4 匯編語言及程序設(shè)計,程序設(shè)計:就是編制計算機的程序,即應(yīng)用計算機所能識別的、接受的語言把要解決的問題的步驟有序地描述出來。 程序設(shè)計語言的種類: (1)機器語言:機器語言是用二進制代碼表示的計算機惟一能識別和執(zhí)行的最原始的程序設(shè)計語言。 (2)匯編語言:利用指令助記符來描述的程序設(shè)計語言。 (3)高級語言:高級語言接近于人的自然語言,是面向過程而獨立于機器的通用語言。,2.4 匯編語言及程序設(shè)計,匯編語言的指令類型: MCS-51單片機匯編語言,包含兩類不同性質(zhì)的指令。 (1)基本指令:即指令系統(tǒng)中的指令。它們都是機器能夠執(zhí)行的指令,每一條指令都有對應(yīng)的機器碼。 (2)偽指令:匯編時用于控制匯編的指令。它們都是機器不執(zhí)行的指令,無機器碼。,匯編語言的語句格式:匯編語言源程序是由匯編語句(即指令)組成的。典型的匯編語句格式如下: 標號: 操作碼 操作數(shù) ,操作數(shù) ;注釋 數(shù)據(jù)的表示方法: (1)二進制數(shù):由0、1組成,“逢2進1”的數(shù)制。如:01011110B (01 后綴:B/b) (2)十六進制數(shù):便于讀寫記憶的二進制數(shù)的簡寫形式。 (09,AF 后綴:H/h) (3)十進制數(shù):可用二進制數(shù)表示(也稱為BCD碼, 09表示為:00001001B ),也可用十進制數(shù)表示(后綴:D/d或無后綴)。,2.4 匯編語言及程序設(shè)計,2.4.1 匯編語言程序設(shè)計的步驟,匯編語言程序設(shè)計:根據(jù)任務(wù)要求,采用匯編語言編制程序的過程稱為匯編語言程序設(shè)計。 匯編語言程序設(shè)計的步驟: (1)擬訂設(shè)計任務(wù)書 (2)建立數(shù)學(xué)模型 (3)確定算法 (4)分配內(nèi)存單元,編制程序流程圖 (5)編制源程序 進一步合理分配存儲器單元和了解I/O接口地址;按功能設(shè)計程序,明確各程序之間的相互關(guān)系;用注釋行說明程序,便于閱讀和修改調(diào)試和修改。 (6)上機調(diào)試 (7)程序優(yōu)化,編制程序流程圖:是指用各種圖形、符號、指向線等來說明程序設(shè)計的過程。國際通用的圖形和符號說明如下: 橢圓框:開始和結(jié)束框,在程序的開始和結(jié)束時使用。 矩形框:處理框,表示要進行的各種操作。 菱形框:判斷框,表示條件判斷,以決定程序的流向。 流向線:流程線,表示程序執(zhí)行的流向。 圓 圈:連接符,表示不同頁之間的流程連接。 各種幾何圖形符號如下圖所示。,2.4.1 匯編語言程序設(shè)計的步驟,2.4.2 順序程序設(shè)計,特點:順序結(jié)構(gòu)程序是最簡單、最基本的程序。程序按編寫的順序依次往下執(zhí)行每一條指令,直到最后一條。它能夠解決某些實際問題,或成為復(fù)雜程序的子程序。 例題2 將片內(nèi)RAM 30H單元中的兩位壓縮BCD碼轉(zhuǎn)換成二進制數(shù)送到片內(nèi)RAM 40H單元中。 解:兩位壓縮BCD碼轉(zhuǎn)換成二進制數(shù)的算法為: (a1a0)BCD=10a1a0 程序流程圖如右圖所示。,程序如下: ORG 1000H START: MOV A, 30H ; 取兩位BCD壓縮碼a1a0送A ANL A, #0F0H ; 取高4位BCD碼a1 SWAP A ; 高4位與低4位換位 MOV B, #0AH ; 將二進制數(shù)10送入B MUL AB ; 將10a1送入A中 MOV R0, A ; 結(jié)果送入R0中保存 MOV A, 30H ; 再取兩位BCD壓縮碼a1a0送A ANL A, #0FH ; 取低4位BCD碼a0 ADD A, R0 ; 求和10a1+ a0 MOV 40H, A ; 結(jié)果送入40H保存 SJMP $ ; 程序執(zhí)行完,“原地踏步” END,2.4.2 順序程序設(shè)計,例題3利用查表指令將內(nèi)部RAM中20H單元的壓縮BCD碼拆開,轉(zhuǎn)換成相應(yīng)的ASCII碼,存入21H、22H中,高位存在22H。 解: BCD碼的09對應(yīng)的ASCII碼為30H39H,將30H39H按大小順序排列放入表TABLE中,先將BCD碼拆分,將拆分后的BCD碼送入A,表首址送入DPTR ,然后領(lǐng)用查表指令MOVC A,A+DPTR,查表即得結(jié)果,然后存入21H、22H中。 程序如下: ORG 1000H START: MOV DPTR,#TABLE MOV A,20H ANL A,#0FH MOVC A,A+DPTR MOV 21H,A,2.4.2 順序程序設(shè)計,MOV A,20H ANL A,#0F0H SWAP A MOVC A,A+DPTR MOV 22H, A SJMP TABLE: DB 30H,31H,32H,33H,34H DB 35H,36H,37H,38H,39H END,2.4.2 順序程序設(shè)計,2.4.3 分支程序設(shè)計,特點:根據(jù)不同的條件,確定程序的走向。它主要靠條件轉(zhuǎn)移指令、比較轉(zhuǎn)移指令和位轉(zhuǎn)移指令來實現(xiàn)。分支程序的結(jié)構(gòu)如右圖所示。,分支程序的設(shè)計要點如下: (1)先建立可供條件轉(zhuǎn)移指令測試的條件。 (2)選用合適的條件轉(zhuǎn)移指令。 (3)在轉(zhuǎn)移的目的地址處設(shè)定標號。,解:此題有三個條件,所以有三個分支程序。這是一個三分支歸一的條件轉(zhuǎn)移問題。 X是有符號數(shù),判斷符號位是0還是1可利用JB或JNB指令。判斷X是否等于0則直接可以使用累加器A的判0指令。 程序流程圖如右圖所示。,例題4 求符號函數(shù)的值。已知片內(nèi)RAM的 40H單元內(nèi)有一自變量X,編制程序按如下條件求函數(shù)Y的值,并將其存入片內(nèi)RAM 的41H單元中。 1 X0 Y= 0 X=0 -1 X0,2.4.3 分支程序設(shè)計,ORG 1000H START: MOV A, 40H ; 將X送入A中 JZ COMP ; 若A為0,轉(zhuǎn)至COMP處 JNB ACC.7, POST ; 若A第7位不為1(X為正數(shù)),則程序轉(zhuǎn)到POST處,否則(X為負數(shù))程序往下執(zhí)行 MOV A, #0FFH ; 將1(補碼)送入A中 SJMP COMP ; 程序轉(zhuǎn)到COMP處 POST: MOV A, #01H ; 將+1送入A中 COMP: MOV 41H, A ; 結(jié)果存入Y SJMP $ ; 程序執(zhí)行完,“原地踏步” END,2.4.3 分支程序設(shè)計,2.4.4 循環(huán)程序設(shè)計,特點:程序中含有可以重復(fù)執(zhí)行的程序段(循環(huán)體),采用循環(huán)程序可以有效地縮短程序,減少程序占用的內(nèi)存空間,使程序的結(jié)構(gòu)緊湊、可讀性好。 組成:循環(huán)程序一般由下面四部分組成。 (1)循環(huán)初始化。位于循環(huán)程序開頭,用于完成循環(huán)前的準備工作,設(shè)置各工作單元的初始值以及循環(huán)次數(shù)。 (2)循環(huán)體。循環(huán)程序的主體,位于循環(huán)體內(nèi),是循環(huán)程序的工作程序,在執(zhí)行中會被多次重復(fù)使用。要求編寫得盡可能簡練,以提高程序的執(zhí)行速度。 (3)循環(huán)控制。位于循環(huán)體內(nèi),一般由循環(huán)次數(shù)修改、循環(huán)修改和條件語句等組成,用于控制循環(huán)次數(shù)和修改每次循環(huán)時的參數(shù)。 (4)循環(huán)結(jié)束。用于存放執(zhí)行循環(huán)程序所得的結(jié)果,以及恢復(fù)各工作單元的初值。,循環(huán)程序的結(jié)構(gòu): (1)先循環(huán)處理,后循環(huán)控制(即先處理后控制)。如左下圖所示。 (2)先循環(huán)控制,后循環(huán)處理(即先控制后處理)。如右下圖所示。,循環(huán)程序按結(jié)構(gòu)形式,有單重循環(huán)與多重循環(huán)。 1單重循環(huán)程序 定義:循環(huán)體內(nèi)部不包括其他循環(huán)的程序稱為單重循環(huán)程序。,例題5 已知片內(nèi)RAM 30H3FH單元中存放了1

溫馨提示

  • 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)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論