版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、第二章 MCS-51單片機指令系統(tǒng),內(nèi)容提要:,2-1 匯編語言與指令系統(tǒng)簡介,2-2 數(shù)據(jù)傳送類指令,2-3 算術(shù)運算類指令,2-4 邏輯運算類指令,2-5 控制轉(zhuǎn)移類指令,2-6 位操作類指令,2-7 匯編語言的匯編過程,2-8 匯編語言的程序設計及應用,高級語言:,2-1 匯編語言與指令系統(tǒng)簡介,一、匯編語言程序設計的意義 什么是程序? 完成某項特定任務的指令的集合。 計算機按程序一條一條地依次執(zhí)行指令,從而完成指定任務。 要讓計算機完成各項任務,就應設計各種程序。,匯編語言:,機器語言:,程序設計語言:,用二進制代碼表示指令和數(shù)據(jù)。,用助記符表示指令操作功能,用標號表示操作對象。,獨立
2、于機器,面向過程,接近自然語言和數(shù)學表達式.,匯編語言程序的每一條語句都與計算機的某一條指令對應,所以必需熟悉指令系統(tǒng)。 指令 = 操作碼 + 操作數(shù) 操作碼表示了該指令所能執(zhí)行的操作功能。 操作數(shù)表示參加操作的數(shù)的本身或操作數(shù)所在的地址。 MCS-51指令格式:,標號:,操作碼助記符,第一操作數(shù),,第二操作數(shù),;注釋,例: DELAY: MOV R3,#0FFH; 一段延時程序,二、MCS-51系列單片機的指令系統(tǒng) 111條指令,共分五大類: 數(shù)據(jù)傳送類;(29條) 算術(shù)運算類;(24條) 邏輯運算類;(24條) 控制轉(zhuǎn)移類;(17條) 位操作類;(17條),按指令在程序存儲器所占的字節(jié)來分
3、: 1.單字節(jié)指令49條:指令只有1B,操作碼和操作數(shù)在同一個字節(jié)中 2.雙字節(jié)指令45條:指令占2B,一字節(jié)為操作碼,一字節(jié)為操作數(shù) 3.三字節(jié)指令17條:指令占3B,操作碼占1B,操作數(shù)占2B 按指令的執(zhí)行時間來分: 1. 一個機器周期的指令64條 2. 兩個機器周期的指令45條 3. 只有乘除兩條指令的執(zhí)行時間為4個機器周期 在12MHz晶振的條件下,每個機器周期為1s,由此可見,MCS-51指令系統(tǒng)對存儲空間和時間的利用率很高。,指令中操作數(shù)的描述符號: Rn 工作寄存器R0 R7 Ri 間接尋址寄存器R0、R1 Direct 直接地址,包括內(nèi)部128B RAM單元地址、 26個SFR
4、地址。 #data 8位常數(shù) #data 16 16位常數(shù) addr 16 16位目的地址 addr 11 11位目的地址 rel 8位帶符號的偏移地址 DPTR 16位外部數(shù)據(jù)指針寄存器 bit 可直接位尋址的位,A 累加器 B 寄存器B C 進、借位標志位,或位累加器 間接寄存器或基址寄存器的前綴 / 指定位求反 (x) x中的內(nèi)容 (x) x中的地址中的內(nèi)容 當前指令存放的地址,三、尋址方式 尋找操作數(shù)存放單元的地址的方式, 換句話說:在指令中說明操作數(shù)所在地址的方法。尋址方式越多,單片機的功能就越強,靈活性越大,指令系統(tǒng)就越復雜。MCS-51共7種尋址方式。 1、立即數(shù)尋址:操作數(shù)在指
5、令中直接給出 所要找的操作數(shù)是一二進制數(shù)或十進制數(shù),出現(xiàn)在指令中,用“#”作前綴 MOV A,#20H 2、直接尋址:操作數(shù)直接以單元地址的形式給出 指令中直接給出操作數(shù)的地址。 MOV A,30H MOV 30H,DPH,3、寄存器尋址:操作數(shù)在寄存器中。 操作數(shù)存放在工作寄存器R0 R7中,A, B, DPTR中。 MOV A,R2,;書放在甲抽屜中 ;甲抽屜的鑰匙放在乙抽屜中 ;取書,,A中,20H,MOV 30H,#20H,MOV R0,#30H,MOV A,R0,此例中,20H就當成是那本書;30H就當成是甲抽屜; R0就當成是乙抽屜,執(zhí)行的結(jié)果就是將20H這個立即數(shù)裝入A中。期間也
6、經(jīng)歷了兩次尋址,即間接尋址。,4、寄存器間接尋址 指令中寄存器的內(nèi)容作為操作數(shù)存放的地址,在工作上間接尋址寄存器前用“”表示前綴。 例如: “一本書放在甲抽屜中,上了鎖;其開鎖的鑰匙放在乙抽屜中,乙抽屜也上了鎖。問如何才能取到哪本書?” 這就是一個間接尋址的問題,要經(jīng)過兩次尋址才能找到哪本書。而寄存器間接尋址也是同樣。 例如:,5、變址尋址 操作數(shù)地址 = 變地址 + 基地址 基地址寄存器 DPTR 或 PC 變址寄存器 A 該尋址方式常用于訪問程序存儲器,查表。 如 MOVC A,A + DPTR 本尋址方式的指令只有3條: MOVC A,A+DPTR MOVC A,A+PC JMP A+D
7、PTR,6、相對尋址 把指令中給定的地址偏移量與本指令所在單元地址(PC內(nèi)容)相加得到真正有效的操作數(shù)所存放的地址。 例如 “李同學20歲,張同學比李同學大3歲,問張同學多少歲?” 這就是一個相對尋年齡的問題,而相對尋址與此類似。 如 JC 60H ;設(PC) = 2000H為基址,相對偏移量為60H; ; 則當C = 1時,轉(zhuǎn)移的目的地址 = 2000H + 2 + 60H,7、位尋址 對片內(nèi)RAM中20H2FH中的128個位地址及SFR中的可位尋址的位地址尋址。 例如: MOV C,20H;20H位的內(nèi)容送CY標志 位,C稱為位累加器。 MOV A,20H ;字節(jié)尋址,將內(nèi)部 RAM中2
8、0H單元中的 內(nèi)容送給累加器A。 以上兩條指令均為尋址,究竟是位尋址還是字節(jié)尋址,根據(jù)兩操作數(shù)類型一致的原則,由另一個操作數(shù)決定。,例題 指出下列指令的尋址方式 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) 位尋址,思考題:,訪問特殊功
9、能寄存器和片外數(shù)據(jù)存儲器,應采用哪些尋址方式?,答案:特殊功能寄存器應采用直接尋址方式 片外數(shù)據(jù)存儲器應采用間接尋址方式,2-2 數(shù)據(jù)傳送類指令,一、內(nèi)部RAM數(shù)據(jù)傳送類 1、一般數(shù)據(jù)傳送指令,回憶前述操作數(shù)描述符:A,direct,Rn,Ri,#data,DPTR等。 經(jīng)排列組合可寫出下列指令: MOV A,Rn ;(A) (Rn)以下類似。,MOV A,direct MOV A,Ri MOV A,#data MOV Rn,A MOV Rn,direct MOV Rn,#data,MOV direct,Rn MOV direct,direct MOV direct,Ri MOV direct
10、,#data MOV Ri,A MOV Ri, direct MOV Ri,#data MOV DPTR,#data16 ;唯一的16位數(shù)據(jù)傳送指令。 上述指令不影響任何標志位,但PSW的P位除外。,(direct),(A),MOV direct,A ;,例1:順序執(zhí)行下列指令序列,求每一步執(zhí)行結(jié)果。,MOV A,#30H MOV 4FH,A MOV R0,#20H MOV R0,4FH MOV 21H,20H,例2:用兩種尋址方式實現(xiàn),將片內(nèi)RAM 60H單元的數(shù)據(jù)傳送給累加器A。,解: MOV A,#60H,MOV R0,#60H MOV A,R0,;A= 30H ;(4FH)= 30H
11、;R0= 20H ;(20H)= 30H ;(21H)= 30H,MOV R0,60H MOV A,R0,解: MOV A,60H,說明:,只有指令表中的指令才有對應指令代碼,計算機才能執(zhí)行。編程時,不能隨意創(chuàng)造發(fā)明指令。,1. 一條指令中不能同時出現(xiàn)兩個工作寄存器:非法指令:MOV R1,R2MOV R2,R0,2. 間址寄存器只能使用 R0、R1。 非法指令:MOV A,R2,3. SFR區(qū)只能直接尋址,不能用寄存器間接尋址。非法指令:MOV R0,#80HMOV A,R0,4. 指令表:B:指令字節(jié)數(shù),M:機器周期數(shù),上述指令不影響任何標志位,但PSW的P位除外。 注意:MOV Rn,R
12、n MOV Ri, Ri MOV Rn, Ri MOV #data, A 等等指令是非法指令。,哇!好容易出錯??!,(2) (direct),2、棧操作指令 PUSH direct POP direct 不影響任何標志位。 PUSH direct 指令執(zhí)行中,機器自動進行兩步操作: (1) (SP)+ 1,例1、設(SP) = 09H,(DPTR)= 0123H,分析: 執(zhí)行 PUSH DPL PUSH DPH 后,各單元中的內(nèi)容。,(SP),(SP),書寫方式:堆棧操作指令是直接尋址指令,直接地址不能是寄存器名,因此應注意指令的書寫格式。例如: PUSH ACC(不能寫成PUSH A) PO
13、P 00H (不能寫成POP R0),POP direct 指令執(zhí)行中,機器也自動進行兩步操作: (1)(direct) (SP) (2)(SP) (SP) 1 例2、設(SP)= 0BH,(0BH)= 01H,(0AH)= 23H 執(zhí)行 POP DPH POP DPL 后,各單元中的內(nèi)容。,結(jié)論:1)PUSH 與 POP 操作過程剛好相反; 2)進、出棧規(guī)則: 先進后出,后進先出。應注意指令書寫先后順序; 3)可用于“保護現(xiàn)場,恢復現(xiàn)場”。,(三) 交換指令 實現(xiàn)片內(nèi)RAM區(qū)的數(shù)據(jù)雙向傳送。,1. 字節(jié)交換指令 XCH A,Rn ;A Rn XCH A,Ri;A (Ri) XCH A,n ;
14、A (n),習題4:將片內(nèi)RAM60H單元與61H單元的數(shù)據(jù)交換。,例:設A= 29H,執(zhí)行指令 XCH A,2AH后,A= ?(2AH)= ?,38H,29H,XCH 60H,61H 對嗎?,29 H,2. 半字節(jié)交換指令,XCHD A,Ri ;A03 (Ri)03 SWAP A ;A47 A03,例3-4:將片內(nèi)RAM 2AH和2BH單元中的ASCII碼轉(zhuǎn)換成壓縮式BCD碼存入20H單元。,R1,R0,MOV R1,#2BH,XCHD A,R0,MOV A,#0,XCHD A,R1,XCH A,20H,SWAP A,MOV R0,#2AH,00000000,00101010,0010101
15、1,00001000,10000000,10000101,10000101,(二) 外部傳送指令實現(xiàn)片外數(shù)據(jù)存儲器和A累加器之間的數(shù)據(jù)傳送。,指令格式:MOVX 目的操作數(shù),源操作數(shù) 尋址方式:片外數(shù)據(jù)存儲器用寄存器間址方式。 1. DPTR作16位數(shù)據(jù)指針,尋址64KB片外RAM空間MOVX A,DPTR;A(DPTR) MOVX DPTR,A;(DPTR)A 2. Ri作8位數(shù)據(jù)指針,尋址256B片外RAM空間 MOVXA,Ri;A(Ri) MOVXRi,A ;(Ri)A,例3-4-2:實現(xiàn)片外數(shù)據(jù)存儲器數(shù)據(jù)傳送(2000H)(2100H)。,MOV DPTR,#2000H MOVX A,
16、DPTR MOV DPTR,#2100H MOVX DPTR,A,習題3:將片外RAM 0000H單元的數(shù)據(jù)傳送到片內(nèi)RAM的 60H單元。,; DPTR= 2000H ; A= X ; DPTR= 2100H ;(2100H)= X,片外數(shù)據(jù)存儲器不能直接尋址。下列為非法指令: MOVX A,2000H MOVX 2100H,2000H,思考題:為什么對DPTR的數(shù)據(jù)傳送使用內(nèi)部傳送指令?,例3、試編寫一程序段,實現(xiàn)將外RAM 0FAH單元中的內(nèi)容傳送到外RAM 04FFH單元中。,解: MOV DPTR,#04FFH MOV R0,#0FAH MOVX A,R0 MOVX DPTR, A,
17、三、 查表指令 與ROM之間的數(shù)據(jù)傳送。 MOVC A,A + DPTR MOVC A, A + PC 兩條指令的異同:其功能完全相同,但使用中存在著差異。 (1)查表的位置要求不同 采用DPTR作為基地址寄存器,表可以放在64KB程序存儲器空間的任何地址,使用方便,故稱為遠程查表。 采用PC作為基地址寄存器,具體的表在程序存儲器中只能在查表指令后的256B的地址空間中,使用有限制,故稱為近程查表。,(2)偏移量的計算方法不同 采用DPTR作為基地址寄存器,查表地址為(A)+(DPTR)。采用PC作為基地址寄存器,查表地址為(A)+(PC)+1。因此偏移量的計算方法不同。 采用DPTR作為基地
18、址寄存器,A為欲查數(shù)值距離表首地址的值;采用PC作為基地址寄存器, A的值必須預先設置為: A的值=表首地址當前指令的PC值1,例4、設(A)= 一個BCD碼常數(shù),試用查表法獲得其相應的ASCII碼。,解法II: MOVC A,A+PC TAB:DB 30H,31H,32H,33H DB 34H,35H,36H,37H ,解法I: MOV DPTR,#TAB MOVC A,.A+DPTR TAB:DB 30H DB 31H DB 32H,33H,34H,35H ,2-3 算術(shù)運算類指令,包括:加、 減、乘、除;加一、減一。 一、加法指令 ADD A,Rn ;(A) (A)+ (Rn)以下類同。
19、 ADD A,direct ADD A,Ri ADD A,#data 無符號數(shù)相加時:若C = 1,說明有溢出(其值 255)。 帶符號數(shù)相加時:若OV = D7cD6c = 1,說明有溢出。,ADDC A,Rn ;(A) (A)+(Rn)+(C) ; 以下類同。 ADDC A,direct ADDC A,Ri ADDC A,#data 上述四條指令多用于多字節(jié)數(shù)相加。,INC A ;(A) (A)+1 ,以下類同。 INC Rn INC direct INC Ri INC DPTR,例1、設(R0)= 7EH; (7FH)= 40H ;(7EH)=FFH 執(zhí)行:INC R0 INC R0 I
20、NC R0 后,(R0)= 7FH;,(7EH)= 00H;,(7FH)= 41H,DA A ;二 十進制調(diào)整指令。 執(zhí)行過程中,CPU能根據(jù)加法運算后,累加器中的值和PSW中的AC及C標志位的狀況自動選擇一個修正值(00H、06H、60H、66H)與原運算結(jié)果相加,進行二十進制調(diào)整。,選擇修正值的規(guī)則:,例2、設(A) = 56H 為56的壓縮的BCD碼數(shù),(R3)= 67H,(CY)=1 執(zhí)行 ADDC A,R3 DA A 結(jié)果為:124 注意:1)DA指令只能跟在加法指令后面使用; 2)調(diào)整前參與運算的兩數(shù)是BCD碼數(shù); 3)DA指令不能與減法指令配對使用,但可以實現(xiàn)對A中 壓縮BCD數(shù)
21、進行減一操作。 例3、設(A)=30H(壓縮BCD碼數(shù)),執(zhí)行: ADD A,#99H DA A 后,便實現(xiàn)了30 1 = 29的操作。,例4、兩個4位BCD碼相加,一個存放在(31H)(30H);另一個存放在(33H)(32H);和數(shù)擬回存在(31H)(30H)中,試編程實現(xiàn)之。 解: MOV R0,#30H MOV R1,#32H MOV A,R0 ADD A,R1 DA A MOV R0,A,INC R1 MOV A,R0 ADDC A,R1 DA A MOV R0,A,INC R0,二、減法指令 SUBB A,Rn ;(A) (A)(Rn)(C),以下類同。 SUBB A,direct
22、 SUBB A,Ri SUBB A,#data 注意:減法之前先清零C。 DEC A ;(A) (A)1,以下類同。 DEC Rn DEC Ri DEC direct,例5、設(R0)=7FH,在內(nèi)RAM中,(7EH)=00H, (7FH)=40H 執(zhí)行: DEC R0 DEC R0 DEC R0 結(jié)果為 :(R0)= 7EH,(7EH)=0FFH,(7FH)=3FH。,三、乘法和除法指令 乘法: MUL AB ;(A)(B),積的低8位在A中,積的 ; 高8位在B中; C總為0。 除法: DIV AB ;(A)(B),商在A中,余數(shù)在B中。 ; 若(B)= 0 ,則結(jié)果不定,(OV)= 1,
23、 ;(C)= 0。,例6、試將A中的二進制數(shù)轉(zhuǎn)換為3位BCD碼,其中,百位數(shù)存放于31H單元,十位數(shù)和個位數(shù)壓縮后存于30H單元中。,解: MOV B,#100 DIV AB MOV 31H,A MOV A,#10 XCH A,B DIV AB SWAP A ADD A,B MOV 30H,A,作業(yè):,第1題:在80C51片內(nèi)RAM中,已知(30H)=38H,(38H)=40H,(40H)=48H,(48H)=90H。請說明每條指令中源操作數(shù)的尋址方式及順序執(zhí)行每條指令后的結(jié)果。 MOV A, 40H MOV R0, A MOV P1, #0F0H MOV R0, 30H MOV DPTR,
24、#1246H MOV 40H, 38H MOV R0, 30H MOV 90H, R0 MOV 48H, #30H MOV A, R0 MOV P2, P1 第2題: 試編程將片外RAM40H單元的內(nèi)容與R1的內(nèi)容交換。,2-4 邏輯運算類指令,共分兩大類:單字節(jié)邏輯操作,雙字節(jié)邏輯操作,共24條。 一、單字節(jié)邏輯操作指令 CLR A ;(A) 0 CPL A A中8位按位求反。 循環(huán)左移、右移指令: RL A RLC A RR A RRC A 注:左移一位相當于乘2;右移一位相當于除2。,二、雙字節(jié)邏輯操作指令 “與操作”: ANL A,Rn ; (A) (A)(Rn),以下類同。 ANL
25、A,direct ANL A,Ri ANL A,#data ANL direct,A ANL direct,#data 例1、(P1)= 35H,使其高4位輸出0,低4位不變。 解; ANL P1,#0FH 此做法稱為“屏蔽”位。,“或操作”: ORL A,Rn ; (A) (A)(Rn),以下類同。 ORL A,direct ORL A,Ri ORL A,#data ORL direct,A ORL direct,#data,例2、將A中的低3位送入P1中,并且保持P1中高5位不變。 ANL A,#07H ANL P1,#0F8H ORL P1,A ;(P1)= P17P16P15P14P1
26、3A2A1A0 這稱為“數(shù)位組合”。,“異或操作”: XRL A,Rn ; (A) (A)(Rn),以下類同。 XRL A,direct XRL A,Ri XRL A,#data XRL direct,A XRL direct,#data 例3、設(P1)= 0B4H = 10110100B,執(zhí)行: XRL P1,#00110001B 結(jié)果按# 0 0 1 1 0 0 0 1 取反,即: (P1)= 1 0 0 0 0 1 0 1 B = 85H 這稱為“指定位取反”。,在上述ANL、ORL、XRL操作中,用于端口操作時,無論P0 P3是第一,還是第二操作數(shù),都遵循“讀修改寫”端口鎖存器的操作
27、。,2-5 控制轉(zhuǎn)移類指令,作用:改變程序計數(shù)器PC的值,從而改變程序執(zhí)行方向。 分為四大類:無條件轉(zhuǎn)移指令;條件轉(zhuǎn)移指令;調(diào)用指令; 返回指令。,LJMP addr16 ;長跳轉(zhuǎn)指令 轉(zhuǎn)移目的地址 addr16 (PC),0000H FFFFH,64KB AJMP addr11 ;絕對轉(zhuǎn)移 轉(zhuǎn)移目的地址的形成:先(PC) (PC)+ 2; 然后 PC15 11不變,PC10 0 addr10 0 64KB = 216 =25211 = 322KB 轉(zhuǎn)移目的地址與(PC)+ 2在同一個2KB范圍內(nèi)。,SJMP rel ;短轉(zhuǎn)移,相對尋址。 轉(zhuǎn)移目的地址 = (PC)+ 2 + rel, 所以
28、rel = 轉(zhuǎn)移目的地址(PC)2 但,實際使用中常寫成 SJMP addr16,匯編時會自動轉(zhuǎn) 換成rel。 JMP A + DPTR ;間接轉(zhuǎn)移,散轉(zhuǎn)移指令。 轉(zhuǎn)移目的地址 = (A) + (DPTR) 本指令不影響標志位,不改變 A 及DPTR中的內(nèi)容。常 用于多分支程序結(jié)構(gòu)中,可在程序運行過程中動態(tài)地決定 程序分支走向。,例1、設A中為鍵值,試編寫按鍵值處理相應事件的程序段。,解: MOV DPTR,#KYEG MOV B,#03H MUL AB JMP A + DPTR KYEG: LJMP KYEG0 LJMP KYEG ,比較LJMP、AJMP、SJMP、JMP轉(zhuǎn)移的起點和范圍:
29、,LCALL addr16 ;長調(diào)用 ACALL addr11 ;絕對調(diào)用,LCALL addr16 ;轉(zhuǎn)移范圍64KB,不影響標志位。執(zhí)行中自動完成如下過程: (PC) (PC) + 3 (SP) (SP)+ 1 (SP) (PC7 0), 保護斷點地址低字節(jié); (SP) (SP)+ 1 (SP) (PC15 8),保存斷點地址高字節(jié); (PC) addr16 ,目的地址送PC,轉(zhuǎn)子程序。,二、調(diào)用指令,執(zhí)行結(jié)果:(SP)= 09H,(09H)= 21H,(08H)= 03H, (PC)= 3456H,轉(zhuǎn)移范圍與(PC)+ 2在同一個2KB內(nèi)。不影響任何標志位,執(zhí)行中機器自動完成下列過程:
30、(PC) (PC)+ 2 (SP) (SP)+ 1 (SP) (PC7 0) (SP) (SP)+ 1 (SP) (PC15 8) (PC10 0) addr10 0,ACALL addr11 :,三、返回指令 從子程序返回主程序。 RET ;調(diào)用子程序返回; RETI ;中斷子程序返回。,(PC15 8) (SP) (SP) 1 (PC7 0) (SP) (SP) (SP) 1,其機器自動操作過程如下:,比較兩種返回指令含義上的異同點 結(jié)論:RET返回地址事先已知,而RETI的返回地址在程序執(zhí)行中產(chǎn)生的,不固定。不影響標志位,但PSW不能恢復到中斷前的狀態(tài)。,(SP),空操作指令 NOP ;
31、空操作 不執(zhí)行任何操作,僅僅使(PC)+ 1,繼續(xù)執(zhí)行下條指令, 不影響標志位, 在ROM中占一個字節(jié)。用于延時調(diào)整。,二、條件轉(zhuǎn)移指令 實現(xiàn)按照一定條件決定轉(zhuǎn)移的方向,分三類: 判零轉(zhuǎn)移指令 比較轉(zhuǎn)移指令 循環(huán)轉(zhuǎn)移指令,JZ rel : 若(A)= 0 ,則轉(zhuǎn)移,否則順序執(zhí)行。 JNZ rel : 若(A) 0,則轉(zhuǎn)移,否則順序執(zhí)行。 轉(zhuǎn)移目的地址 = (PC)+ 2 + rel 不影響任何標志位。,1、判零轉(zhuǎn)移 JZ rel JNZ rel,例1、將外RAM的一個數(shù)據(jù)塊(首地址為DATA1)傳送到內(nèi)部數(shù)據(jù)RAM(首地址為DATA2),遇到傳送的數(shù)據(jù)為零時停止傳送,試編程。,解: MOV R
32、0,#DATA2 MOV DPTR,#DATA1 LOOP1: MOVX A,DPTR JZ LOOP2 MOV R0,A INC R0 INC DPTR SJMP LOOP1 LOOP2: SJMP LOOP2,2、比較轉(zhuǎn)移指令 功能:比較二個字節(jié)中的值,若不等,則轉(zhuǎn)移。 CINE A,#data,rel CJNE A,direct,rel CJNE Ri,#data,rel CJNE Rn,#data,rel,該類指令具有比較和判斷雙重功能,比較的本質(zhì)是做減法運算,用第一操作數(shù)內(nèi)容減去第二操作數(shù)內(nèi)容,但差值不回存。 轉(zhuǎn)移目的地址 = (PC)+ 3 + rel 若第一操作數(shù)內(nèi)容小于第二操作
33、數(shù)內(nèi)容,則(C)= 1,否則(C)= 0。,該類指令可產(chǎn)生三分支程序: 即,相等分支;大于分支;小于分支。,例2、設P1口的P1.0 P1.3為準備就緒信號輸入端,當該四位為全1時,說明各項工作已準備好,單片機可順序執(zhí)行,否則,循環(huán)等待。,解: MOV A,P1 ANL A,#0FH CJNE A,#0FH,WAIT ;P1.0 P1.3不為全1時,返 ; 回WAIT MOV A,R2 ,3、循環(huán)轉(zhuǎn)移指令 DJNZ Rn,rel ;(二字節(jié)指令) DINZ direct,rel ;(三字節(jié)指令) 本指令也為雙功能指令,即減1操作和判斷轉(zhuǎn)移操作。 第一操作數(shù)內(nèi)容減1后,若差值不為零,則轉(zhuǎn)移;否則
34、順序執(zhí)行。 轉(zhuǎn)移目的地址 = (PC)+ 2或3 + rel,例3、將8031內(nèi)部RAM的40H 4FH單元置初值#A0H #AFH。,解: MOV R0,#40H MOV R2,#10H MOV A,#0A0H LOOP: MOV R0,A INC R0 INC A DJNZ R2,LOOP ,2-6 位操作類指令,包括:位傳送指令、條件轉(zhuǎn)移指令、位運算指令。 位操作由單片機內(nèi)布爾處理器來完成。 位地址的四種表示: 1)使用直接位地址表示;如20H、30H、33H等; 2)使用位寄存器名來表示;如C、OV、F0等; 3)用字節(jié)寄存器名后加位數(shù)來表示; 如PSW.4、P0.5ACC.3等; 4)字節(jié)地址加位數(shù)來表示;如20.0、30.4、50.
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度船舶貨物損失保險合同20253篇
- 二零二五版農(nóng)業(yè)技術(shù)員農(nóng)業(yè)病蟲害防治合同3篇
- 二零二五年度電梯門套安全檢測與施工綜合合同4篇
- 二零二五版高科技農(nóng)業(yè)種植項目合作合同4篇
- 二零二五年虛擬現(xiàn)實產(chǎn)業(yè)股權(quán)投資與內(nèi)容合作合同3篇
- 2025年度醫(yī)院兒科醫(yī)生及護士團隊綜合管理合同4篇
- 二零二五年度創(chuàng)城項目墻面翻新與美化專項經(jīng)費施工合同4篇
- 2025年醫(yī)院中醫(yī)科科室承包服務合同范本4篇
- 2025年道路橋梁內(nèi)外腳手架安全防護系統(tǒng)承包協(xié)議3篇
- 2025版木托盤國際標準接軌合同4篇
- 電纜擠塑操作手冊
- 浙江寧波鄞州區(qū)市級名校2025屆中考生物全真模擬試卷含解析
- 2024-2025學年廣東省深圳市南山區(qū)監(jiān)測數(shù)學三年級第一學期期末學業(yè)水平測試試題含解析
- IATF16949基礎(chǔ)知識培訓教材
- 【MOOC】大學生創(chuàng)新創(chuàng)業(yè)知能訓練與指導-西北農(nóng)林科技大學 中國大學慕課MOOC答案
- 勞務派遣公司員工考核方案
- 基礎(chǔ)生態(tài)學-7種內(nèi)種間關(guān)系
- 2024年光伏農(nóng)田出租合同范本
- 《阻燃材料與技術(shù)》課件 第3講 阻燃基本理論
- 2024-2030年中國黃鱔市市場供需現(xiàn)狀與營銷渠道分析報告
- 新人教版九年級化學第三單元復習課件
評論
0/150
提交評論