版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、會計學1第第3章匯編語言章匯編語言(hu bin y yn)第一頁,共114頁。第1頁/共114頁第二頁,共114頁。指令格式:指令的表示方式稱為指令格式,它規(guī)定了指令的長度和內(nèi)部信息的安排。完整的指令格式如下:標號: 操作碼 操作數(shù) ,操作數(shù) ;注釋其中: 項是可選項。標號:指本條指令起始地址的符號,也稱為指令的符號地址。代表該條指令在程序編譯時的具體地址。操作碼:又稱助記符,它是由對應的英文縮寫構(gòu)成的,是指令語句的關(guān)鍵。它規(guī)定了指令具體的操作功能,描述指令的操作性質(zhì),是一條指令中不可缺少的內(nèi)容。操作數(shù):它既可以是一個(y )具體的數(shù)據(jù),也可以是存放數(shù)據(jù)的地址。注釋:注釋也是指令語句的可選項
2、,它是為增加程序的可讀性而設(shè)置的,是針對某指令而添加的說明性文字,不產(chǎn)生可執(zhí)行的目標代碼。第2頁/共114頁第三頁,共114頁。3偽指令 第3頁/共114頁第四頁,共114頁。(3)賦值偽指令EQU 格式:字符名稱x EQU 賦值項n 功能:將賦值項n的值賦予字符名稱x。程序中凡出現(xiàn)該字符名稱x就等同于該賦值項n,其值在整個程序中有效。賦值項n可以是常數(shù)、地址、標號或表達式。在使用(shyng)時,必須先賦值后使用(shyng)。 “字符名稱”與“標號”的區(qū)別是“字符名稱”后無冒號,而“標號”后面有冒號。第4頁/共114頁第五頁,共114頁。(4)定義字節(jié)偽指令DB 格式:標號: DB x1,
3、 x2, xn 功能:將8位數(shù)據(jù)(或8位數(shù)據(jù)組)x1, x2, xn順序存放(cnfng)在從當前程序存儲器地址開始的存儲單元中。xi可以是8位數(shù)據(jù)、ASCII碼、表達式,也可以是括在單引號內(nèi)的字符串。兩個數(shù)據(jù)之間用逗號“,”分隔。 xi為數(shù)值常數(shù)時,取值范圍為00HFFH。xi為ASCII碼時,要使用單引號,以示區(qū)別。xi為字符串常數(shù)時,其長度不應超過80個字符。 (5)定義雙字節(jié)偽指令DW 格式:標號: DW x1, x2, xn 功能:將雙字節(jié)數(shù)據(jù)或雙字節(jié)數(shù)據(jù)組順序存放(cnfng)在從標號指定地址單元開始的存儲單元中。其中,xi為16位數(shù)值常數(shù),占兩個存儲單元,先存高8位(存入低位地址
4、單元中),后存低8位(存入高位地址單元中)。第5頁/共114頁第六頁,共114頁。第6頁/共114頁第七頁,共114頁。第7頁/共114頁第八頁,共114頁。第8頁/共114頁第九頁,共114頁。2.1.3 指令中的常用(chn yn)符號第9頁/共114頁第十頁,共114頁。第10頁/共114頁第十一頁,共114頁。2.2.2 直接(zhji)尋址 定義:定義:將操作數(shù)的地址直接存放在指令中,這種尋址方式稱為直接尋址。特點:特點:指令中含有操作數(shù)的地址。該地址指出了參與操作的數(shù)據(jù)所在的字節(jié)單元地址或位地址。計算機執(zhí)行它們時便可根據(jù)直接地址找到所需要的操作數(shù)。尋址范圍:尋址范圍:ROM、片內(nèi)R
5、AM區(qū)、SFR和位地址空間。 第11頁/共114頁第十二頁,共114頁。2.2.3 寄存器尋址定義:操作數(shù)存放在MCS-51內(nèi)部的某個工作寄存器Rn(R0R7)或部分專用寄存器中,這種尋址方式稱為寄存器尋址。特點:由指令指出某一個寄存器的內(nèi)容作為操作數(shù)。存放操作數(shù)的寄存器在指令代碼中不占據(jù)單獨(dnd)的一個字節(jié),而是嵌入(隱含)到操作碼字節(jié)中。尋址范圍:四組通用寄存器Rn(R0R7)、部分專用寄存器( A, B, DPTR, Cy )。2.2.4 寄存器間接尋址定義:指令給出的寄存器中存放的是操作數(shù)據(jù)的單元地址。這種尋址方式稱為寄存器間接尋址,簡稱為寄存器間址。第12頁/共114頁第十三頁,
6、共114頁。第13頁/共114頁第十四頁,共114頁。第14頁/共114頁第十五頁,共114頁。2.2.6 相對尋址定義:將程序計數(shù)器PC的當前值(取出本條指令(zhlng)后的PC值)與指令(zhlng)第二個字節(jié)給出的偏移量(rel)相加,形成新的轉(zhuǎn)移目標地址。稱為相對尋址方式。特點:相對尋址方式是為實現(xiàn)程序的相對轉(zhuǎn)移而設(shè)計的,為相對轉(zhuǎn)移指令(zhlng)所使用,其指令(zhlng)碼中含有相對地址偏移量,能生成浮動代碼。如: SJMP rel ; (PC)(PC) + 2 + rel相對轉(zhuǎn)移指令(zhlng)的目的地址指令(zhlng)地址指令(zhlng)字節(jié)數(shù)偏移量尋址范圍:只能對程
7、序存儲器ROM進行尋址。相對地址偏移量(rel)是一個帶符號的8位二進制補碼,其取值范圍為128127(以PC為中間的256個字節(jié)范圍)。 第15頁/共114頁第十六頁,共114頁。3.2.7 位尋址定義:指令中給出的操作數(shù)是一個可單獨尋址的位地址,這種尋址方式稱為位尋址方式。特點:位尋址是直接尋址方式的一種,其特點是對8位二進制數(shù)中的某一位的地址進行操作。尋址范圍:片內(nèi)RAM低128B中位尋址區(qū)、部分SFR(其中有83位可以(ky)位尋址)??晌粚ぶ返奈坏刂返谋硎拘问饺缦拢海?)直接使用位地址形式。如: MOV 00H, C ;(00H)(Cy) 其中:00H是片內(nèi)RAM中20H地址單元的第
8、0位。第16頁/共114頁第十七頁,共114頁。(2)字節(jié)地址加位序號的形式。如: MOV 20H.0, C ; (20H.0)(Cy) 其中:20H.0是片內(nèi)RAM中20H地址單元的第0位。(3)位的符號地址(位名稱)的形式。對于部分特殊功能寄存器,其各位均有一個特定的名字,所以(suy)可以用它們的位名稱來訪問該位。如: ANL C, P ; (C) (C)(P) 其中:P是PSW的第0位,C是PSW的第7位。 (4)字節(jié)符號地址(字節(jié)名稱)加位序號的形式。對于部分特殊功能寄存器(如狀態(tài)標志寄存器PSW),還可以用其字節(jié)名稱加位序號形式來訪問某一位。如: CPL PSW.6 ; (AC)
9、( ) 其中: PSW.6表示該位是PSW的第6位。第17頁/共114頁第十八頁,共114頁。例題1 指出下列指令的尋址方式 MOV A,R1 ;(A)(R1) 寄存器尋址 ADD A,#05H ; (A)(A)+立即數(shù) 05H 立即尋址 MOV A,R1 ; (A) (R1) 寄存器間接(jin ji)尋址 MOV 30H,4AH ;( 30H )(4AH) 直接尋址 MOVC A,A+DPTR ;(A)(A)+(DPTR) 變址尋址 SJMP LP ; (PC)(PC)+ 2 + 偏移量 相對尋址 MOV 65H, C ;(65H)(Cy) 位尋址第18頁/共114頁第十九頁,共114頁。
10、第19頁/共114頁第二十頁,共114頁。學習指令系統(tǒng)時,應注意:學習指令系統(tǒng)時,應注意:(1 1)指令的格式、功能)指令的格式、功能 。(2 2)操作碼的含義,操作數(shù)的表示方法)操作碼的含義,操作數(shù)的表示方法(fngf)(fngf)。(3 3)尋址方式,源、目的操作數(shù)的范圍。)尋址方式,源、目的操作數(shù)的范圍。(4 4)對標志位的影響。)對標志位的影響。(5 5)指令的適用范圍。)指令的適用范圍。(6 6)正確估算指令的字節(jié)數(shù)。)正確估算指令的字節(jié)數(shù)。 一般地,操作碼占一般地,操作碼占1 1字節(jié);操作數(shù)中,直接地址字節(jié);操作數(shù)中,直接地址derictderict占占1 1字節(jié),字節(jié),#data
11、#data占占1 1字節(jié),字節(jié),#data16#data16占兩字節(jié);操作數(shù)中的占兩字節(jié);操作數(shù)中的A A、B B、R0R0R7R7、 Ri Ri、DPTRDPTR、 A+ DPTR A+ DPTR、 A+ PC A+ PC等均隱含在操作碼中。等均隱含在操作碼中。第20頁/共114頁第二十一頁,共114頁。第21頁/共114頁第二十二頁,共114頁。第22頁/共114頁第二十三頁,共114頁。(3)以直接地址單元為目的操作數(shù)(5條) MOV direct , 其中: 包括A、Rn、Ri、direct 、#data 。(4)以間址寄存器Ri為目的操作數(shù)(3條) MOV Ri , 其中: 包括A、
12、direct 、#data 。(5)16位數(shù)據(jù)傳送(chun sn)指令(1條) MOV DPTR , #data16注:(注:(2)、()、(3)、()、(4)、()、(5)均不影響標志)均不影響標志(biozh)位。位。 內(nèi)部數(shù)據(jù)傳送指令的傳送關(guān)系如右圖所示。內(nèi)部數(shù)據(jù)傳送指令的傳送關(guān)系如右圖所示。第23頁/共114頁第二十四頁,共114頁。第24頁/共114頁第二十五頁,共114頁。第25頁/共114頁第二十六頁,共114頁。第26頁/共114頁第二十七頁,共114頁。(2)字節(jié)交換指令(3條) 指令格式:XCH A , 其中: 包括Rn、Ri、direct 。5堆棧操作指令(2條) 指令
13、格式: 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ū)應避開使用的工作寄存器區(qū)和其他需要(xyo)使用的數(shù)據(jù)區(qū),系統(tǒng)復位后,SP的初始值為07H。為了避免重疊,一般初始化時要重新設(shè)置SP。 第27頁/共114頁第二十八頁,共114頁。功能:實現(xiàn)功能:實現(xiàn)RAM單元數(shù)據(jù)送入棧頂或由棧頂取出數(shù)據(jù)送至單元數(shù)據(jù)送入棧頂或由棧頂取出數(shù)據(jù)送至RAM單元。單元。
14、適用場合:用于執(zhí)行中斷、子程序調(diào)用、參數(shù)傳遞等程序的斷點保護和現(xiàn)場保護。適用場合:用于執(zhí)行中斷、子程序調(diào)用、參數(shù)傳遞等程序的斷點保護和現(xiàn)場保護。書寫方式:堆棧操作指令是直接尋址指令,直接地址不能是寄存器名,因此應注意指令的書寫格式書寫方式:堆棧操作指令是直接尋址指令,直接地址不能是寄存器名,因此應注意指令的書寫格式(g shi)。例如:。例如: PUSH ACC(不能寫成(不能寫成PUSH A) POP 00H (不能寫成(不能寫成POP R0)第28頁/共114頁第二十九頁,共114頁。 算術(shù)運算指令的兩個參與運算的操作數(shù),一個存放在累加器A中(此操作數(shù)也為目的操作數(shù));一個存放在R0R7或
15、Ri(片內(nèi)RAM)中,或是#data(立即數(shù))。 算術(shù)運算指令可以分為加法指令、帶進位的加法指令、帶借位的減法指令、十進制調(diào)整指令、加1指令、減1指令、乘除指令。 1. 加法指令(4條) 指令格式: ADD A , ; (A)(A)+ 其中: 包括Rn、Ri、direct、#data。 對標志位的影響:ADD對PSW中的所有(suyu)標志位均產(chǎn)生影響。 第29頁/共114頁第三十頁,共114頁。指令格式:指令格式: ADDC A , ; (A)(A)+ + (Cy) 其中:其中: 包括包括Rn、Ri、direct、#data。對標志位的影響:對標志位的影響:ADDC對對PSW中的所有標志位均
16、產(chǎn)生影響。中的所有標志位均產(chǎn)生影響。 3. 帶借位的減法指令(帶借位的減法指令(4條)條) 指令格式:指令格式: SUBB A , ; (A)(A) (Cy) 其中:其中: 包括包括Rn、Ri、direct、#data。對標志位的影響:對標志位的影響:SUBB對對PSW中的所有標志位均產(chǎn)生影響。中的所有標志位均產(chǎn)生影響。 注意:注意:MCS-51指令系統(tǒng)中沒有不帶借位的減法指令,欲實現(xiàn)不帶借位的減法計算,應預先置指令系統(tǒng)中沒有不帶借位的減法指令,欲實現(xiàn)不帶借位的減法計算,應預先置Cy=0(利用(利用(lyng)CLR C指令),然后利用指令),然后利用(lyng)帶借位的減法指令帶借位的減法指
17、令SUBB實現(xiàn)計算。實現(xiàn)計算。 第30頁/共114頁第三十一頁,共114頁。第31頁/共114頁第三十二頁,共114頁。6. 減減1指令(指令(4條)條) 功能:減功能:減1指令又稱為減量指令,其功能是使操作數(shù)所指定的單元的內(nèi)容減指令又稱為減量指令,其功能是使操作數(shù)所指定的單元的內(nèi)容減1 。指令格式:指令格式:DEC ; 1 其中:其中: 即是源操作數(shù)又是目的操作數(shù)(即只有一個操作數(shù)),包括即是源操作數(shù)又是目的操作數(shù)(即只有一個操作數(shù)),包括 A、Rn、direct、Ri。對標志對標志(biozh)位的影響:同加位的影響:同加1指令。指令。第32頁/共114頁第三十三頁,共114頁。第33頁/
18、共114頁第三十四頁,共114頁。對標志位的影響對標志位的影響(yngxing):邏輯運算和移位指令中除了兩條帶進位的循環(huán)移位指令外,其余均不影響:邏輯運算和移位指令中除了兩條帶進位的循環(huán)移位指令外,其余均不影響(yngxing)PSW中的各標志位。但當目的操作數(shù)是累加器中的各標志位。但當目的操作數(shù)是累加器A時,影響時,影響(yngxing)PSW中的奇偶校驗位中的奇偶校驗位P。常用的邏輯運算和移位類指令有:邏輯與、邏輯或、邏輯異或、循環(huán)移位、清常用的邏輯運算和移位類指令有:邏輯與、邏輯或、邏輯異或、循環(huán)移位、清0、求反(非)等、求反(非)等24條指令,它們的操作數(shù)都是條指令,它們的操作數(shù)都是
19、8位的。邏輯運算都是按位進行的,除用于邏輯運算外,還可用于模擬各種數(shù)字邏輯電路的功能,進行邏輯電路的設(shè)計。位的。邏輯運算都是按位進行的,除用于邏輯運算外,還可用于模擬各種數(shù)字邏輯電路的功能,進行邏輯電路的設(shè)計。1邏輯與運算指令(邏輯與運算指令(6條)條) 功能:實現(xiàn)兩個操作數(shù)的邏輯與。功能:實現(xiàn)兩個操作數(shù)的邏輯與。指令格式:指令格式:ANL A , 其中:其中: 包括包括Rn、Ri、direct、#data。 ANL direst , 其中:其中: 包括包括A、#data。第34頁/共114頁第三十五頁,共114頁。第35頁/共114頁第三十六頁,共114頁。指令格式指令格式(g shi)(g
20、 shi):XRL A , XRL A , 其中:其中: 包括包括RnRn、RiRi、directdirect、#data#data。 XRL direst , XRL direst , 其中:其中: 包括包括A A、#data#data。適用場合:實現(xiàn)邏輯異或,主要用于操作數(shù)的某些位不變(這些位異或適用場合:實現(xiàn)邏輯異或,主要用于操作數(shù)的某些位不變(這些位異或“0”“0”),某些位取反(這些位異或),某些位取反(這些位異或“1”“1”)。)。4 4循環(huán)移位指令(循環(huán)移位指令(4 4條)條) MCS-51 MCS-51單片機的循環(huán)移位指令共有不帶進位的循環(huán)左、右移位(操作碼為單片機的循環(huán)移位指
21、令共有不帶進位的循環(huán)左、右移位(操作碼為RL, RRRL, RR)和帶進位的循環(huán)左、右移位(操作碼為)和帶進位的循環(huán)左、右移位(操作碼為RLC, RRCRLC, RRC)指令)指令4 4條。條。特點:只能對累加器特點:只能對累加器A A進行循環(huán)移位。進行循環(huán)移位。指令格式指令格式(g shi)(g shi): 操作碼操作碼 A A第36頁/共114頁第三十七頁,共114頁。功能:累加器功能:累加器A中的數(shù)據(jù)逐位左移一位相當于原內(nèi)容乘中的數(shù)據(jù)逐位左移一位相當于原內(nèi)容乘2,而逐位右移,而逐位右移(yu y)一位相當于原內(nèi)容除以一位相當于原內(nèi)容除以2。循環(huán)移位指令示意圖如右圖所示。循環(huán)移位指令示意圖
22、如右圖所示。 5累加器清累加器清0與取反指令與取反指令(zhlng)(2條)條) 指令指令(zhlng)格式:格式:CLR A ;(;(A)00H CPL A ;(;(A)( )特點:可以節(jié)省存儲空間,提高程序執(zhí)行效率。特點:可以節(jié)省存儲空間,提高程序執(zhí)行效率。 對標志位的影響:對標志位的影響:CLR A指令指令(zhlng)只影響只影響PSW的的P標志位,標志位,CPL A指令指令(zhlng)不影響不影響PSW各標志位。各標志位。 第37頁/共114頁第三十八頁,共114頁。第38頁/共114頁第三十九頁,共114頁。注意:注意:(1)使用轉(zhuǎn)移指令時,指令中的地址)使用轉(zhuǎn)移指令時,指令中的
23、地址(dzh)或偏移量均可采用標號,只有在執(zhí)行前才被匯編成實際的二進制地址或偏移量均可采用標號,只有在執(zhí)行前才被匯編成實際的二進制地址(dzh)。(2)指令的轉(zhuǎn)移范圍:)指令的轉(zhuǎn)移范圍: 在執(zhí)行當前轉(zhuǎn)移指令后的在執(zhí)行當前轉(zhuǎn)移指令后的PC值的基礎(chǔ)上值的基礎(chǔ)上: 長轉(zhuǎn)移指令長轉(zhuǎn)移指令LJMP: 64KB 絕對轉(zhuǎn)移指令絕對轉(zhuǎn)移指令AJMP :2KB 相對(短)轉(zhuǎn)移指令相對(短)轉(zhuǎn)移指令SJMP : 128+127(用補碼表示)(用補碼表示) 間接(散)轉(zhuǎn)移指令間接(散)轉(zhuǎn)移指令JMP: 64KB(3)相對(短)轉(zhuǎn)移指令SJMP rel 中地址偏移量的計算: rel = 轉(zhuǎn)移目標(mbio)地址轉(zhuǎn)移指
24、令地址(當前PC值) 2第39頁/共114頁第四十頁,共114頁。(4)原地踏步(暫停當前的程序,并不是真的停機)的實現(xiàn) SJMP $ 或 HERE: SJMP HERE (5)間接(散)轉(zhuǎn)移指令(zhlng):JMP A+DPTR 常用于實現(xiàn)程序的分支轉(zhuǎn)移(散轉(zhuǎn))。 DPTR為轉(zhuǎn)移目的的起始地址,A為轉(zhuǎn)移目的的偏移量。(6)在編程中,經(jīng)常使用短轉(zhuǎn)移指令(zhlng)SJMP和相對轉(zhuǎn)移指令(zhlng)AJMP,以便生成浮動代碼,并不經(jīng)常使用長轉(zhuǎn)移指令(zhlng)LJMP。 2條件轉(zhuǎn)移指令(zhlng)(2條) 功能:在規(guī)定的條件滿足時進行程序轉(zhuǎn)移,否則程序往下順序執(zhí)行。MCS-51單片機中
25、,條件轉(zhuǎn)移指令(zhlng)實質(zhì)上是累加器A判零指令(zhlng)。第40頁/共114頁第四十一頁,共114頁。指令指令(zhlng)格式:格式: JZ rel ; 若若(A)=0,則轉(zhuǎn)移,則轉(zhuǎn)移 (PC) (PC)+2+rel 若若(A)0,則順序執(zhí)行,則順序執(zhí)行(PC) (PC) +2 JNZ rel ; 若若(A)0 ,則轉(zhuǎn)移,則轉(zhuǎn)移 (PC) (PC)+2+rel 若若(A) =0 ,則順序執(zhí)行,則順序執(zhí)行(PC) (PC) +2 指令指令(zhlng)的轉(zhuǎn)移范圍:的轉(zhuǎn)移范圍: rel的取值范圍是在執(zhí)行當前轉(zhuǎn)移指令的取值范圍是在執(zhí)行當前轉(zhuǎn)移指令(zhlng)后的后的PC值基礎(chǔ)上的值基礎(chǔ)
26、上的128+127(用補碼表示)。(用補碼表示)。 可以采用符號地址表示。可以采用符號地址表示。偏移量偏移量rel的計算方法:的計算方法: rel = 轉(zhuǎn)移目標地址轉(zhuǎn)移指令轉(zhuǎn)移目標地址轉(zhuǎn)移指令(zhlng)地址地址(當前當前PC值值) 2第41頁/共114頁第四十二頁,共114頁。3比較轉(zhuǎn)移指令(4條) 指令格式: CJNE 目的操作數(shù),源操作數(shù),rel 當目的操作數(shù)為A時,源操作數(shù)為#data、direct。 當目的操作數(shù)為Rn、Ri時,源操作數(shù)為#data; 即:CJNE A, direct, rel CJNE A, #data, rel CJNE Rn, #data, rel CJNE
27、Ri, #data, rel功能:把兩個操作數(shù)進行比較,以比較的結(jié)果作為(zuwi)條件來控制程序的轉(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第42頁/共114頁第四十三頁,共114頁。功能:比較兩個操作數(shù)的大小。功能:比較兩個操作數(shù)的大小。 對標志位影響:影響對標志位影響:影響Cy標志位,不影響其他標志位。標志位,不影響其他標志位。指令的轉(zhuǎn)移范圍:指令的轉(zhuǎn)移范圍:rel的取值范圍是在執(zhí)行
28、當前轉(zhuǎn)移指令后的的取值范圍是在執(zhí)行當前轉(zhuǎn)移指令后的PC值基礎(chǔ)上的值基礎(chǔ)上的128+127(用補碼表示)。(用補碼表示)。 可以采用符號地址表示??梢圆捎梅柕刂繁硎?。注意:比較轉(zhuǎn)移指令的比較是通過兩操作數(shù)的減法實現(xiàn)的,影響注意:比較轉(zhuǎn)移指令的比較是通過兩操作數(shù)的減法實現(xiàn)的,影響Cy標志位,不保存最后標志位,不保存最后(zuhu)的差值,兩個操作數(shù)的內(nèi)容不變。的差值,兩個操作數(shù)的內(nèi)容不變。 4循環(huán)(減循環(huán)(減1條件)轉(zhuǎn)移指令(條件)轉(zhuǎn)移指令(2條)條) 功能:具有減功能:具有減1判非判非0則轉(zhuǎn)移的功能。主要用于控制程序循環(huán),實現(xiàn)按循環(huán)次數(shù)控制循環(huán)的目的。則轉(zhuǎn)移的功能。主要用于控制程序循環(huán),實現(xiàn)按
29、循環(huán)次數(shù)控制循環(huán)的目的。特點:循環(huán)轉(zhuǎn)移指令是一組把減特點:循環(huán)轉(zhuǎn)移指令是一組把減1與條件轉(zhuǎn)移兩種功能結(jié)合在一起的指令。與條件轉(zhuǎn)移兩種功能結(jié)合在一起的指令。第43頁/共114頁第四十四頁,共114頁。指令格式:指令格式: DJNZ , rel ; 1 若若 0,則轉(zhuǎn)移,則轉(zhuǎn)移 (PC) (PC)+2+rel 若若 0,則不轉(zhuǎn)移,則不轉(zhuǎn)移 (PC) (PC) +2注意:條件轉(zhuǎn)移指令均為相對轉(zhuǎn)移指令,因此指令的轉(zhuǎn)移范圍十分有限。若要實現(xiàn)注意:條件轉(zhuǎn)移指令均為相對轉(zhuǎn)移指令,因此指令的轉(zhuǎn)移范圍十分有限。若要實現(xiàn)64KB范圍內(nèi)的轉(zhuǎn)移,則可以借助于一條長轉(zhuǎn)移指令的過渡來實現(xiàn)。范圍內(nèi)的轉(zhuǎn)移,則可以借助于一條長
30、轉(zhuǎn)移指令的過渡來實現(xiàn)。5子程序子程序(chngx)調(diào)用與返回指令(調(diào)用與返回指令(4條)條) 定義:具有完整功能的程序定義:具有完整功能的程序(chngx)段定義為子程序段定義為子程序(chngx),供主程序,供主程序(chngx)調(diào)用。調(diào)用。 功能:功能: 供主程序供主程序(chngx)在需要時調(diào)用。子程序在需要時調(diào)用。子程序(chngx)可以在程序可以在程序(chngx)中反復多次使用,以簡化源程序中反復多次使用,以簡化源程序(chngx)的書寫。的書寫。特點:子程序特點:子程序(chngx)可以嵌套,有利于模塊化程序可以嵌套,有利于模塊化程序(chngx)設(shè)計。設(shè)計。第44頁/共114頁
31、第四十五頁,共114頁。 主程序與子程序之間的調(diào)用關(guān)系(gun x)如下左圖所示,兩級子程序嵌套的示意圖如下右圖所示。 第45頁/共114頁第四十六頁,共114頁。 為了實現(xiàn)主程序?qū)ψ映绦虻囊淮瓮暾{(diào)用,必須有子程序調(diào)用指令和子程序返回指令。子程序調(diào)用指令在主程序中使用,而子程序返回指令則是子程序的最后一條指令。調(diào)用與返回指令是成對使用的。子程序調(diào)用指令的功能(gngnng):必須具有自動把程序計數(shù)器PC中的斷點地址保護到堆棧中,且將子程序入口地址自動送入程序計數(shù)器PC中的功能(gngnng)。子程序返回指令的功能(gngnng):必須具有自動把堆棧中的斷點地址恢復到程序計數(shù)器PC中的功能(g
32、ngnng)。注意:子程序調(diào)用時應注意入口參數(shù)設(shè)置,子程序返回時應注意出口參數(shù)的傳遞。第46頁/共114頁第四十七頁,共114頁。(3)子程序返回指令 RET ; (PC) 158(SP), (SP) (SP) 1, (PC) 70 (SP) , (SP) (SP) 1(4)中斷返回指令 RETI ; (PC) 158(SP), (SP) (SP) 1, (PC) 70 (SP) , (SP) (SP) 1注:中斷服務程序是一種特殊(tsh)的子程序,它是在計算機響應中斷時,由硬件完成調(diào)用而進入相應的中斷服務程序。RETI指令與RET指令相仿,區(qū)別在于RET是從子程序返回,RETI 是從中斷服
33、務程序返回。無論是RET還是RETI都是子程序執(zhí)行的最后一條指令。 第47頁/共114頁第四十八頁,共114頁。指令格式:指令格式:(1)絕對)絕對(judu)短調(diào)用指令短調(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)用子程序范圍以內(nèi)調(diào)用子程序 。(2)絕對)絕對(judu)長調(diào)用指令長調(diào)用指令 LCA
34、LL 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)用子程序范圍以內(nèi)調(diào)用子程序 。第48頁/共114頁第四十九頁,共114頁。6 6空操作指令空操作指令NOP NOP (1 1條)條)指令格式:指令格式: NOP ; (PC) (PC) +1 NOP ; (PC) (PC) +1功能:不執(zhí)行功能:不執(zhí)行(zhxng)(zhxng)
35、任何操作,消耗了一個機器周期,常用于軟件延時或在程序可靠性設(shè)計中用來穩(wěn)定程序。任何操作,消耗了一個機器周期,常用于軟件延時或在程序可靠性設(shè)計中用來穩(wěn)定程序。特點:特點:NOPNOP占據(jù)一個單元的存儲空間,除了使占據(jù)一個單元的存儲空間,除了使PCPC的內(nèi)容加的內(nèi)容加1 1外,外,CPUCPU不產(chǎn)生任何操作結(jié)果,只是消耗了一個機器周期。不產(chǎn)生任何操作結(jié)果,只是消耗了一個機器周期。第49頁/共114頁第五十頁,共114頁。第50頁/共114頁第五十一頁,共114頁。1. 位數(shù)據(jù)傳送指令(位數(shù)據(jù)傳送指令(2條)條)特點:在可尋址位與位累加器特點:在可尋址位與位累加器Cy之間進行的。不能在兩個可之間進行
36、的。不能在兩個可尋址位間直接進行傳送。尋址位間直接進行傳送。 指令格式:指令格式:MOV C, bit ;(Cy)(bit) MOV bit, C ;(bit) (Cy)2. 位邏輯操作指令(位邏輯操作指令(6條)條) 指令格式:操作碼指令格式:操作碼 C , 其中其中(qzhng):操作碼包括:操作碼包括ANL(邏輯位(邏輯位“與與”)、)、ORL (邏輯位(邏輯位“或或”);); 包括包括bit、/bit。 CPL ; 其中其中(qzhng): CPL表示取反,表示取反, 包括包括Cy、 bit。第51頁/共114頁第五十二頁,共114頁。第52頁/共114頁第五十三頁,共114頁。第53
37、頁/共114頁第五十四頁,共114頁。程序設(shè)計:就是編制計算機的程序,即應用計算機所能識別的、接受的語言把要解決的問題的步驟有序地描述程序設(shè)計:就是編制計算機的程序,即應用計算機所能識別的、接受的語言把要解決的問題的步驟有序地描述(mio sh)(mio sh)出來。出來。 程序設(shè)計語言的種類:程序設(shè)計語言的種類:(1 1)機器語言:機器語言是用二進制代碼表示的計算機惟一能識別和執(zhí)行的最原始的程序設(shè)計語言。)機器語言:機器語言是用二進制代碼表示的計算機惟一能識別和執(zhí)行的最原始的程序設(shè)計語言。 (2 2)匯編語言:利用指令助記符來描述)匯編語言:利用指令助記符來描述(mio sh)(mio sh
38、)的程序設(shè)計語言。的程序設(shè)計語言。(3 3)高級語言:高級語言接近于人的自然語言,是面向過程而獨立于機器的通用語言。)高級語言:高級語言接近于人的自然語言,是面向過程而獨立于機器的通用語言。匯編語言的指令類型:匯編語言的指令類型: MCS-51 MCS-51單片機匯編語言,包含兩類不同性質(zhì)的指令。單片機匯編語言,包含兩類不同性質(zhì)的指令。(1 1)基本指令:即指令系統(tǒng)中的指令。它們都是機器能夠執(zhí)行的指令,每一條指令都有對應的機器碼。)基本指令:即指令系統(tǒng)中的指令。它們都是機器能夠執(zhí)行的指令,每一條指令都有對應的機器碼。(2 2)偽指令:匯編時用于控制匯編的指令。它們都是機器不執(zhí)行的指令,無機器碼
39、。)偽指令:匯編時用于控制匯編的指令。它們都是機器不執(zhí)行的指令,無機器碼。第54頁/共114頁第五十五頁,共114頁。匯編語言的語句格式:匯編語言源程序是由匯編語句(即指令)組成的。典型的匯編語句格式如下:匯編語言的語句格式:匯編語言源程序是由匯編語句(即指令)組成的。典型的匯編語句格式如下: 標號標號: : 操作碼操作碼 操作數(shù)操作數(shù) , ,操作數(shù)操作數(shù) ; ;注釋注釋 數(shù)據(jù)的表示方法:數(shù)據(jù)的表示方法:(1 1)二進制數(shù):由)二進制數(shù):由0 0、1 1組成,組成,“逢逢2 2進進1”1”的數(shù)制。如:的數(shù)制。如:01011110B 01011110B (0 01 1 后綴:后綴:B/bB/b)
40、(2 2)十六進制)十六進制(sh li jn zh)(sh li jn zh)數(shù):便于讀寫記憶的二進制數(shù)的簡寫形式。數(shù):便于讀寫記憶的二進制數(shù)的簡寫形式。 (0 09 9,A AF F 后綴:后綴:H/hH/h)(3 3)十進制數(shù):可用二進制數(shù)表示(也稱為)十進制數(shù):可用二進制數(shù)表示(也稱為BCDBCD碼,碼, 0 09 9表示為表示為:0000:00001001B 1001B ),也可用十進制數(shù)表示(后綴),也可用十進制數(shù)表示(后綴:D/d:D/d或無后綴)。或無后綴)。第55頁/共114頁第五十六頁,共114頁。匯編語言程序設(shè)計:根據(jù)任務要求,采用匯編語言編制程序的過程稱為匯編語匯編語言
41、程序設(shè)計:根據(jù)任務要求,采用匯編語言編制程序的過程稱為匯編語言程序設(shè)計。言程序設(shè)計。匯編語言程序設(shè)計的步驟:匯編語言程序設(shè)計的步驟:(1 1)擬訂設(shè)計任務書)擬訂設(shè)計任務書 (2 2)建立數(shù)學模型)建立數(shù)學模型 (3 3)確定算法)確定算法 (4 4)分配內(nèi)存單元,編制程序流程圖)分配內(nèi)存單元,編制程序流程圖 (5 5)編制源程序)編制源程序 進一步合理分配存儲器單元和了解進一步合理分配存儲器單元和了解(lioji)I/O(lioji)I/O接口地址;按功能設(shè)計程接口地址;按功能設(shè)計程序,明確各程序之間的相互關(guān)系;用注釋行說明程序,便于閱讀和修改調(diào)試和序,明確各程序之間的相互關(guān)系;用注釋行說明
42、程序,便于閱讀和修改調(diào)試和修改。修改。 (6 6)上機調(diào)試)上機調(diào)試(7 7)程序優(yōu)化)程序優(yōu)化 第56頁/共114頁第五十七頁,共114頁。編制程序流程圖:是指用各種圖形、符號、指向編制程序流程圖:是指用各種圖形、符號、指向(zh xin)(zh xin)線等來說明程序設(shè)計的過程。國際通用的圖形和符號說明如下:線等來說明程序設(shè)計的過程。國際通用的圖形和符號說明如下: 橢圓框:開始和結(jié)束框,在程序的開始和結(jié)束時使用。橢圓框:開始和結(jié)束框,在程序的開始和結(jié)束時使用。 矩形框:處理框,表示要進行的各種操作。矩形框:處理框,表示要進行的各種操作。 菱形框:判斷框,表示條件判斷,以決定程序的流向。菱形
43、框:判斷框,表示條件判斷,以決定程序的流向。 流向線:流程線,表示程序執(zhí)行的流向。流向線:流程線,表示程序執(zhí)行的流向。 圓圓 圈:連接符,表示不同頁之間的流程連接。圈:連接符,表示不同頁之間的流程連接。各種幾何圖形符號如下圖所示。各種幾何圖形符號如下圖所示。第57頁/共114頁第五十八頁,共114頁。特點:順序結(jié)構(gòu)程序是最簡單、最基本的程序。程序按編寫的順序依次往下執(zhí)行每一條指令,直到最后一條。它能夠解決特點:順序結(jié)構(gòu)程序是最簡單、最基本的程序。程序按編寫的順序依次往下執(zhí)行每一條指令,直到最后一條。它能夠解決(jiju)(jiju)某些實際問題,或成為復雜程序的子程序。某些實際問題,或成為復雜
44、程序的子程序。 例題例題2 2 將片內(nèi)將片內(nèi)RAM 30HRAM 30H單元中的兩位壓縮單元中的兩位壓縮BCDBCD碼轉(zhuǎn)換成二進制數(shù)送到片內(nèi)碼轉(zhuǎn)換成二進制數(shù)送到片內(nèi)RAM 40HRAM 40H單元中。單元中。 解:兩位壓縮解:兩位壓縮BCD碼轉(zhuǎn)換成二進制數(shù)的算法碼轉(zhuǎn)換成二進制數(shù)的算法(sun f)為:為: (a1a 0)BCD=10a1a0 程序流程圖如右圖所示。程序流程圖如右圖所示。第58頁/共114頁第五十九頁,共114頁。程序如下:程序如下: ORG 1000H ORG 1000HSTART: MOV A, 30HSTART: MOV A, 30H ; ; 取兩位取兩位BCDBCD壓縮碼
45、壓縮碼a1a0a1a0送送A A ANL A, #0F0H ANL A, #0F0H ; ; 取高取高4 4位位BCDBCD碼碼a1a1 SWAP A SWAP A ; ; 高高4 4位與低位與低4 4位換位位換位 MOV B, #0AH MOV B, #0AH ; ; 將二進制數(shù)將二進制數(shù)1010送入送入B B MUL AB MUL AB ; ; 將將1010a1a1送入送入A A中中 MOV R0, A MOV R0, A ; ; 結(jié)果送入結(jié)果送入R0R0中保存中保存(bocn)(bocn) MOV A, 30H MOV A, 30H ; ; 再取兩位再取兩位BCDBCD壓縮碼壓縮碼a1a
46、0a1a0送送A A ANL A, #0FH ANL A, #0FH ; ; 取低取低4 4位位BCDBCD碼碼a0a0 ADD A, R0 ADD A, R0 ; ; 求和求和1010a1+ a0a1+ a0 MOV 40H, A MOV 40H, A ; ; 結(jié)果送入結(jié)果送入40H40H保存保存(bocn)(bocn) SJMP $ SJMP $ ; ; 程序執(zhí)行完,程序執(zhí)行完,“原地踏步原地踏步” ” END END第59頁/共114頁第六十頁,共114頁。例題例題3利用查表指令將內(nèi)部利用查表指令將內(nèi)部RAM中中20H單元的壓縮單元的壓縮BCD碼拆開,轉(zhuǎn)換成相應的碼拆開,轉(zhuǎn)換成相應的AS
47、CII碼,存入碼,存入21H、22H中,高位存在中,高位存在22H。解:解: BCD碼的碼的09對應的對應的ASCII碼為碼為30H39H,將,將30H39H按大小順序排列放入表按大小順序排列放入表TABLE中,先將中,先將BCD碼拆分,將拆分后的碼拆分,將拆分后的BCD碼送入碼送入A,表首址送入,表首址送入DPTR ,然后領(lǐng)用查表指令,然后領(lǐng)用查表指令MOVC A,A+DPTR,查表即得結(jié)果,查表即得結(jié)果(ji gu),然后存入,然后存入21H、22H中。中。程序如下:程序如下: ORG 1000H START:MOV DPTR,#TABLEMOVA,20HANLA,#0FHMOVCA,A+
48、DPTRMOV21H,A第60頁/共114頁第六十一頁,共114頁。 MOV A,20HANLA,#0F0HSWAPAMOVCA,A+DPTRMOV22H,ASJMP TABLE:DB 30H,31H,32H,33H,34H DB 35H,36H,37H,38H,39H END第61頁/共114頁第六十二頁,共114頁。特點:根據(jù)不同特點:根據(jù)不同(b tn)(b tn)的條件,確定程序的走向。它主要靠條件轉(zhuǎn)移指令、比較轉(zhuǎn)移指令和位轉(zhuǎn)移指令來實現(xiàn)。分支程序的結(jié)構(gòu)如右圖所示。的條件,確定程序的走向。它主要靠條件轉(zhuǎn)移指令、比較轉(zhuǎn)移指令和位轉(zhuǎn)移指令來實現(xiàn)。分支程序的結(jié)構(gòu)如右圖所示。 分支程序的設(shè)計要
49、點如下分支程序的設(shè)計要點如下(rxi):(1)先建立可供條件轉(zhuǎn)移指令測試的條件。)先建立可供條件轉(zhuǎn)移指令測試的條件。 (2)選用合適的條件轉(zhuǎn)移指令。)選用合適的條件轉(zhuǎn)移指令。(3)在轉(zhuǎn)移的目的地址處設(shè)定標號。)在轉(zhuǎn)移的目的地址處設(shè)定標號。第62頁/共114頁第六十三頁,共114頁。解:此題有三個條件,所以(suy)有三個分支程序。這是一個三分支歸一的條件轉(zhuǎn)移問題。 X是有符號數(shù),判斷符號位是0還是1可利用JB或JNB指令。判斷X是否等于0則直接可以使用累加器A的判0指令。程序流程圖如右圖所示。例題4 求符號函數(shù)的值。已知片內(nèi)RAM的 40H單元(dnyun)內(nèi)有一自變量X,編制程序按如下條件求
50、函數(shù)Y的值,并將其存入片內(nèi)RAM 的41H單元(dnyun)中。 1 X0Y= 0 X=0 -1X255s255,因此單重循環(huán)程序無法實現(xiàn),可采用雙重循環(huán)的方法編寫,因此單重循環(huán)程序無法實現(xiàn),可采用雙重循環(huán)的方法編寫50ms50ms延時程序。延時程序。 第71頁/共114頁第七十二頁,共114頁。程序如下:程序如下: ORG 1000H DELAY: MOV R7, #200 ; 設(shè)置外循環(huán)次數(shù)(此條指令需要設(shè)置外循環(huán)次數(shù)(此條指令需要1個機器周期)個機器周期) DLY1: MOV R6, #123 ; 設(shè)置內(nèi)循環(huán)次數(shù)設(shè)置內(nèi)循環(huán)次數(shù) DLY2: DJNZ R6, DLY2 ;(R6)1=0,則
51、順序執(zhí)行,否則,則順序執(zhí)行,否則(fuz)轉(zhuǎn)回轉(zhuǎn)回 DLY2繼續(xù)循環(huán),延時時間為繼續(xù)循環(huán),延時時間為2s123=246s NOP ; 延時時間為延時時間為1s DJNZ R7,DLY1 ;(R7)1=0,則順序執(zhí)行,則順序執(zhí)行, 否則否則(fuz)轉(zhuǎn)回轉(zhuǎn)回DLY1繼續(xù)循環(huán),延時時間為繼續(xù)循環(huán),延時時間為 (246211)20021=50.003ms RET ; 子程序結(jié)束子程序結(jié)束 END第72頁/共114頁第七十三頁,共114頁。3 3循環(huán)程序時應注意的問題循環(huán)程序時應注意的問題(1 1)循環(huán)程序是一個有始有終的整體,它的執(zhí)行是有條件的,所以要避免從循環(huán)體外直接轉(zhuǎn)到循環(huán)體內(nèi)部。)循環(huán)程序是一
52、個有始有終的整體,它的執(zhí)行是有條件的,所以要避免從循環(huán)體外直接轉(zhuǎn)到循環(huán)體內(nèi)部。(2 2)多重循環(huán)程序是從外層向內(nèi)層)多重循環(huán)程序是從外層向內(nèi)層(ni cn)(ni cn)一層一層進入,循環(huán)結(jié)束時是由內(nèi)層一層一層進入,循環(huán)結(jié)束時是由內(nèi)層(ni cn)(ni cn)到外層一層一層退出的。在多重循環(huán)中,只允許外重循環(huán)嵌套內(nèi)重循環(huán)。不允許循環(huán)相互交叉,也不允許從循環(huán)程序的外部跳入循環(huán)程序的內(nèi)部。到外層一層一層退出的。在多重循環(huán)中,只允許外重循環(huán)嵌套內(nèi)重循環(huán)。不允許循環(huán)相互交叉,也不允許從循環(huán)程序的外部跳入循環(huán)程序的內(nèi)部。(3 3)編寫循環(huán)程序時,首先要確定程序結(jié)構(gòu),處理好邏輯關(guān)系。一般情況下,一個循環(huán)
53、體的設(shè)計可以從第一次執(zhí)行情況入手,先畫出重復執(zhí)行的程序框圖,然后再加上循環(huán)控制和置循環(huán)初值部分,使其成為一個完整的循環(huán)程序。)編寫循環(huán)程序時,首先要確定程序結(jié)構(gòu),處理好邏輯關(guān)系。一般情況下,一個循環(huán)體的設(shè)計可以從第一次執(zhí)行情況入手,先畫出重復執(zhí)行的程序框圖,然后再加上循環(huán)控制和置循環(huán)初值部分,使其成為一個完整的循環(huán)程序。(4 4)循環(huán)體是循環(huán)程序中重復執(zhí)行的部分,應仔細推敲,合理安排,應從改進算法、選擇合適的指令入手對其進行優(yōu)化,以達到縮短程序執(zhí)行時間的目的。)循環(huán)體是循環(huán)程序中重復執(zhí)行的部分,應仔細推敲,合理安排,應從改進算法、選擇合適的指令入手對其進行優(yōu)化,以達到縮短程序執(zhí)行時間的目的。
54、第73頁/共114頁第七十四頁,共114頁。例題例題7 設(shè)設(shè)MCS-51單片機內(nèi)部單片機內(nèi)部RAM起始地址為起始地址為30H的數(shù)據(jù)塊中共存有的數(shù)據(jù)塊中共存有64個無符號數(shù),編制程序使它們個無符號數(shù),編制程序使它們(t men)按從小到大的順序排列。按從小到大的順序排列。解:設(shè)解:設(shè)64個無符號數(shù)在數(shù)據(jù)塊中的順序為:個無符號數(shù)在數(shù)據(jù)塊中的順序為:e64, e63, e2, e1,使他們從小到大順序排列的方法很多,現(xiàn)以冒泡法為例進行介紹。,使他們從小到大順序排列的方法很多,現(xiàn)以冒泡法為例進行介紹。 冒泡法又稱兩兩比較法。它先使冒泡法又稱兩兩比較法。它先使e64和和e63比較,若比較,若e64e63
55、,則兩個存儲單元中的內(nèi)容交換,否則就不交換。然后使,則兩個存儲單元中的內(nèi)容交換,否則就不交換。然后使e63和和e62比較,按同樣的原則決定是否交換。一直比較下去,最后完成比較,按同樣的原則決定是否交換。一直比較下去,最后完成e2和和e1的比較及交換,經(jīng)過的比較及交換,經(jīng)過N1=63次比較(常用內(nèi)循環(huán)次比較(常用內(nèi)循環(huán)63次來實現(xiàn))后,次來實現(xiàn))后,e1的位置上必然得到數(shù)組中的最大值,猶如一個氣泡從水低冒出來一樣,如下頁圖所示(圖中只畫出了的位置上必然得到數(shù)組中的最大值,猶如一個氣泡從水低冒出來一樣,如下頁圖所示(圖中只畫出了6個數(shù)的比較過程)。個數(shù)的比較過程)。第74頁/共114頁第七十五頁,
56、共114頁。第75頁/共114頁第七十六頁,共114頁。 第二次冒泡過程和第一次完全相同,比較次數(shù)也可以是63次(其實只需要62次,因為e1的位置上是數(shù)據(jù)塊中的最大數(shù)(d sh),不需要再比較),冒泡后在e2的位置上得到數(shù)組中的次大數(shù)(d sh),如上頁圖所示。如此冒泡(即大循環(huán))共63次(內(nèi)循環(huán)6363次)便可完成64個數(shù)的排序。 實際編程時,可通過設(shè)置“交換標志”用來控制是否再需要冒泡,若剛剛進行完的冒泡中發(fā)生過數(shù)據(jù)交換(即排序尚未完成),應繼續(xù)進行冒泡;若進行完的冒泡中未發(fā)生過數(shù)據(jù)交換(即排序已經(jīng)完成),冒泡應該停止。例如:對于一個已經(jīng)排好序的數(shù)組:1, 2, 3, 63, 64,排序程
57、序只要進行一次循環(huán)便可根據(jù)“交換標志”的狀態(tài)而結(jié)束排序程序的再執(zhí)行,這自然可以減少631=62次的冒泡時間。 冒泡法程序流程圖如下頁圖所示。 第76頁/共114頁第七十七頁,共114頁。第77頁/共114頁第七十八頁,共114頁。程序如下:程序如下: ORG 1000HMOV R0, #30H ; 數(shù)據(jù)區(qū)首地址送數(shù)據(jù)區(qū)首地址送R0MOV R3, #63H ; 設(shè)置外循環(huán)次數(shù)在設(shè)置外循環(huán)次數(shù)在R3中中LP0: CLR 7FH ; 交換交換(jiohun)標志位標志位2FH.7清清0MOV A, R3 ; 取外循環(huán)次數(shù)取外循環(huán)次數(shù)MOV R2, A ; 設(shè)置內(nèi)循環(huán)次數(shù)設(shè)置內(nèi)循環(huán)次數(shù)MOV R0,#
58、30H ; 重新設(shè)置數(shù)據(jù)區(qū)首址重新設(shè)置數(shù)據(jù)區(qū)首址LP1: MOV 20H, R0 ; 數(shù)據(jù)區(qū)數(shù)據(jù)送數(shù)據(jù)區(qū)數(shù)據(jù)送20H單元中單元中MOV A, R0 ; 20H內(nèi)容送內(nèi)容送AINC R0 ; 修改地址指針(修改地址指針(R0+1)MOV 21H, R0 ; 下一個地址的內(nèi)容送下一個地址的內(nèi)容送21HCLR C ; Cy清清0 SUBB A, 21H ; 前一個單元的內(nèi)容與下一個單元的內(nèi)容比較前一個單元的內(nèi)容與下一個單元的內(nèi)容比較JC LP2 ; 若有借位(若有借位(Cy =1),前者小,程序轉(zhuǎn)移到),前者小,程序轉(zhuǎn)移到LP2處執(zhí)行,處執(zhí)行, 若無借位(若無借位(Cy =0),前者大,不轉(zhuǎn)移,程序
59、往下執(zhí)行),前者大,不轉(zhuǎn)移,程序往下執(zhí)行第78頁/共114頁第七十九頁,共114頁。 MOV R0, 20H ; 前、后內(nèi)容交換DEC R0MOV R0, 21H INC R0 ; 修改地址指針(R0+1)SETB 7FH ; 置位交換標志位2FH.7為1LP2: DJNZ R2, LP1 ; 修改內(nèi)循環(huán)次數(shù)(csh)R2(減少), 若R20,則程序轉(zhuǎn)到LP1 處仍執(zhí)行循環(huán), 若R2=0,程序結(jié)束循環(huán),程序往下執(zhí)行JNB 7FH, LP3 ; 交換標志位2FH.7若為0,則程序轉(zhuǎn)到LP3處結(jié)束循環(huán)DJNZ R3, LP0 ; 修改外循環(huán)次數(shù)(csh)R3(減少), 若R30,程序轉(zhuǎn)到LP0處,
60、 執(zhí)行仍循環(huán), 若R3=0,程序結(jié)束循環(huán),往下執(zhí)行LP3: SJMP $ ; 程序執(zhí)行完,“原地踏步”END第79頁/共114頁第八十頁,共114頁。查表:根據(jù)存放在查表:根據(jù)存放在ROM中數(shù)據(jù)表格的項數(shù)來查找與它對應的表中值。中數(shù)據(jù)表格的項數(shù)來查找與它對應的表中值。 適用場合:主要應用于數(shù)碼顯示、打印字符的轉(zhuǎn)換、數(shù)據(jù)轉(zhuǎn)換等場合。適用場合:主要應用于數(shù)碼顯示、打印字符的轉(zhuǎn)換、數(shù)據(jù)轉(zhuǎn)換等場合。 1. 采用采用(ciyng)MOVC A, A+DPTR指令查表程序的設(shè)計方法指令查表程序的設(shè)計方法(1)在程序存儲器中建立相應的函數(shù)表(設(shè)自變量為)在程序存儲器中建立相應的函數(shù)表(設(shè)自變量為X)。)。(
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度某旅游度假區(qū)水電暖系統(tǒng)設(shè)計與安裝合同2篇
- 2025版五星級酒店客房服務員勞動合同9篇
- 2025版企業(yè)食堂管理承包合同模板3篇
- 二零二五版多場景物聯(lián)網(wǎng)技術(shù)應用合同3篇
- 醫(yī)院醫(yī)療設(shè)備管理與發(fā)展規(guī)劃知識考核試卷
- 土地利用規(guī)劃中的城鄉(xiāng)水源地保護考核試卷
- 2025年合資協(xié)議書參考樣本
- 2025年勞動仲裁裁決和解協(xié)議
- 2025年加盟商業(yè)合同
- 2025年大數(shù)據(jù)智能分析合作協(xié)議
- 物業(yè)民法典知識培訓課件
- 2023年初中畢業(yè)生信息技術(shù)中考知識點詳解
- 2024-2025學年八年級數(shù)學人教版上冊寒假作業(yè)(綜合復習能力提升篇)(含答案)
- 《萬方數(shù)據(jù)資源介紹》課件
- 醫(yī)生定期考核簡易程序述職報告范文(10篇)
- 第一章-地震工程學概論
- 《中國糖尿病防治指南(2024版)》更新要點解讀
- 交通運輸類專業(yè)生涯發(fā)展展示
- 2024年山東省公務員錄用考試《行測》試題及答案解析
- 老年護理學-老年人與人口老齡化-課件
- 元代文學緒論
評論
0/150
提交評論