日本亚洲高清乱码中文在线观看,欧美和黑人XXXX猛交视频,97久久天天综合色天天综合色HD,国语做受对白XXXXX在线,久久无码国产专区精品,1024国产基地永久免费,视频三区精品中文字幕,亚洲成a∨人片在线观看无码
          財訊中國

          51單片機匯編基礎

          來源:網絡 2022-01-29 19:30:30

          一個單片機所需執行指令的集合即為單片機的指令系統。單片機使用的機器語言、匯編語言及高級語言,但不管使用是何種語言,最終還是要“翻譯”成為機器碼,單片機才能執行之。現在有很多半導體廠商都推出了自己的單片機,單片機種類繁多,品種數不勝數,值得注意的是不同的單片機它們的指令系統不一定相同,或不完全相同。但不管是使用機器語言、匯編語言還是高級語言都是使用指令編寫程序的。

          所謂機器語言即指令的二進制編碼,而匯編語言則是指令的表示符號 。在指令的表達式上也不會直接使用二進制機器碼,最常用的是十六進制的形式。但單片機并不能直接執行匯編語言和高級語言,都必須通過匯編器“翻譯”成為二進制機器碼方能執行,但如果直接使用二進制來編寫程序,那將十分不便,也很難記憶和識別,不易編寫、難于辨讀,極易出錯,同時出錯了也相當難查找。所以現在基本上都不會直接使用機器語言來編寫單片機的程序。最好的辦法就是使用易于閱讀和辨認的指令符號來代替機器碼,我們常稱這些符號為助記符,用助記符的形式表示的單片機指令就是匯編語言,為便于記憶和閱讀,助記符號通常都使用易于理解的英文單詞和拼音字母來表示。

          每種單片機都有自己獨特的指令系統,那么指令系統是開發和生產廠商定義的,如要使用其單片機,用戶就必須理解和遵循這些指令標準,要掌握某種(類)單片機,指令系統的學習是必須的。

          MCS-51共有111條指令,可分為5類:

          [1].數據傳送類指令(共29條)

          [2].算數運算類指令(共24條)

          [3].邏輯運算及移位類指令(共24條)

          [4].控制轉移類指令(共17條)

          [5].布爾變量操作類指令(共17條)

          一些特殊符號的意義

          在介紹指令系統前,我們先了解一些特殊符號的意義,這對今后程序的編寫都是相當有用的。

          Rn——當前選中的寄存器區的8個工作寄存器R0—R7(n=0-7)。

          Ri——當前選中的寄存器區中可作為地址寄存器的兩個寄存器R0和R1(i=0,1)

          direct—內部數據存儲單元的8位地址。包含0—127(255)內部存儲單元地址和特殊功能寄存地址。

          #data—指令中的8位常數。

          #data16—指令中的16位常數。

          addr16—用于LCALL和LJMP指令中的16目的地地址,目的地址的空間為64kB程序存儲器地址。

          #addr11—用于ACALL和AJMP指令中的11目的地地址,目的地址必須放在與下條指令第一個字節同一個2kB程序存儲器空間之中。

          rel—8位帶符號的偏移字節,用于所有的條件轉移和SJMP等指令中,偏移字節對于下條指令的第一個字節開始的-128——+127范圍內。

          @—間接寄存器尋址或基址寄存器的前綴。

          /—為操作的前綴,聲明對該位操作書取反。

          DPTR—數據指針。

          bit—內部RAM和特殊功能寄存器的直接尋址位。

          A—累加器。

          B—累加器B。用于乘法和除法指令中。

          C—進位標志位。

          (x)—某地址單元中的內容。

          ((x))—由X尋址單元中的內容。

          MCS-51的尋址方式

          尋址的“地址”即為操作數所在單元的地址,絕大部分指令執行時都需要用到操作數,那么到哪里去取得操作數呢?最易想到的就是告訴CPU操作數所在的地址單元,從那里可取得響應的操作數,這便是“尋址”之意。MCS-51的尋址方式很多,使用起來也相當方便,功能也很強大,靈活性強。這便是MCS-51指令系統“好用”的原因之一。下面我們分別討論幾種尋址方式的原理。

          [1].直接尋址

          指令中操作數直接以單元地址形式出現,例如:

          MOV A,68H

          這條指令的意義是把內部RAM中的68H單元中的數據內容傳送到累加器A中。值得注意的是直接尋址方式只能使用8位二進制地址,因此這種尋址方式僅限于內部RAM進行尋址。低128位單元在指令中直接以單元地址的形式給出。對于特殊功能寄存器可以使用其直接地址進行訪問,還可以以它們的符號形式給出,只是特殊功能寄存器只能用直接尋址方式訪問,而無其它方法。

          [2].寄存器尋址

          寄存器尋址對選定的8個工作寄存器R0-R7進行操作,也就是操作數在寄存器中,因此指定了寄存器就得到了操作數,寄存器尋址的指令中以寄存器的符號來表示寄存器,例如:

          MOV A,R1

          這條指令的意義是把所用的工作寄存器組中的R3的內容送到累加器A中。

          值得一提的是工作狀態寄存器的選擇是通過程序狀態字寄存器來控制的,在這條指令前,應通過PSW設定當前工作寄存器組。

          [3].寄存器間接尋址

          寄存器尋址方式,寄存器中存放的是操作數,而寄存器間接尋址方式,寄存器中存放的則為操作數的地址,也即操作數是通過寄存器指向的地址單元得到的,這便是寄存器間接尋址名稱的由來。

          例如指令:

          MOV A,@R0

          這條指令的意義是R0寄存器指向地址單元中的內容送到累加器A中。假如R0=#56H,那么是將56H單元中的數據送到累加器A中。

          寄存器間接尋址方式可用于訪問內部RAM或外部數據存儲器。訪問內部RAM或外部數據存儲器的低256字節時,可通過R0和R1作為間接寄存器。然而有必要指出,內部RAM的高128字節地址與專用積存器的地址是重疊的,所以這種尋址方式不能用于訪問特殊功能寄存器。

          外部數據存儲器的空間為64kB,這時可采用DPTR作為間址寄存器進行訪問,指令如下:

          MOVX A,@DPTR

          這條指令的意義是與上述類似,不再贅述。

          [4].立即尋址

          立即尋址就是把操作數直接在指令中給出,即操作數包含在指令中,指令操作碼的后面緊跟著操作數,一般把指令中的操作數稱為立即數,因此而得名。為了與直接尋址方式相區別,在立即數前加上“#”符號,例如:

          MOVX A,#0EH

          這條指令的意義是將0EH這個操作數送到累加器A中。

          [5].變址尋址

          變址尋址是以DPTR或PC作為基址寄存器,以累加器A作為變址寄存器,將兩寄存器的內容相加形成16位地址形成操作數的實際地址。例如:

          MOV A,@A+DPTR

          MOVX A,@A+PC

          JMP @A+DPTR

          在這三條指令中,A作為偏移量寄存器,DPTR或PC作為變址寄存器,A作為無符號數與DPTR或PC的內容相加,得到訪問的實際地址。其中前兩條是程序存儲器讀指令,后一條是無條件轉移指令。

          [6].位尋址

          在MCS-51單片機中,RAM中的20H—2FH字節單元對應的位地址為00H—7FH,特殊功能寄存器中的某些位也可進行為尋址,這些單元既可以采用字節方式訪問它們,也可采用位尋址的方式訪問它們。

          [7].相對尋址

          相對尋址方式是為了程序的相對轉移而設計的,其夜里是以PC的內容為基址,加上給出的偏移量作為轉移地址,從而實現程序的轉移。轉移的目的地址可參見如下表達式:

          目的地址=轉移指令地址+轉移指令字接數+偏移量

          值得注意的是,偏移量是有正負號之分的,偏移量的取值范圍是當前PC值的-128—+127之間。

          MCS-51數據傳送指令

          數據傳送指令共有29條,數據傳送指令一般的操作是把源操作數傳送到目的操作數,指令執行完成后,源操作數不變,目的操作數等于源操作數。如果要求在進行數據傳送時,目的操作數不丟失,則不能用直接傳送指令,而采用交換型的數據傳送指令,數據傳送指令不影響標志C,AC和OV,但可能會對奇偶標志P有影響。

          [1]. 以累加器A為目的操作數類指令(4條)

          這4條指令的作用是把源操作數指向的內容送到累加器A。有直接、立即數、寄存器和寄存器間接尋址方式:

          MOV A,data ;(data)→(A) 直接單元地址中的內容送到累加器A

          MOV A,#data ;#data→(A) 立即數送到累加器A中

          MOV A,Rn ;(Rn)→(A) Rn中的內容送到累加器A中

          MOV A,@Ri ;((Ri))→(A) Ri內容指向的地址單元中的內容送到累加器A

          [2]. 以寄存器Rn為目的操作數的指令(3條)

          這3條指令的功能是把源操作數指定的內容送到所選定的工作寄存器Rn中。有直接、立即和寄存器尋址方式:

          MOV Rn,data ;(data)→(Rn) 直接尋址單元中的內容送到寄存器Rn中

          MOV Rn,#data ;#data→(Rn) 立即數直接送到寄存器Rn中

          MOV Rn,A ;(A)→(Rn) 累加器A中的內容送到寄存器Rn中

          [3]. 以直接地址為目的操作數的指令(5條)

          這組指令的功能是把源操作數指定的內容送到由直接地址data所選定的片內RAM中。有直接、立即、寄存器和寄存器間接4種尋址方式:

          MOV data,data ;(data)→(data) 直接地址單元中的內容送到直接地址單元

          MOV data,#data ;#data→(data) 立即數送到直接地址單元

          MOV data,A ;(A)→(data) 累加器A中的內容送到直接地址單元

          MOV data,Rn ;(Rn)→(data) 寄存器Rn中的內容送到直接地址單元

          MOV data,@Ri ;((Ri))→(data) 寄存器Ri中的內容指定的地址單元中數據送到直接地址單元

          [4]. 以間接地址為目的操作數的指令(3條)

          這組指令的功能是把源操作數指定的內容送到以Ri中的內容為地址的片內RAM中。有直接、立即和寄存器3種尋址方式:

          MOV @Ri,data ;(data)→((Ri)) 直接地址單元中的內容送到以Ri中的內容為地址的RAM單元

          MOV @Ri,#data ;#data→((Ri)) 立即數送到以Ri中的內容為地址的RAM單元

          MOV @Ri,A ;(A)→((Ri)) 累加器A中的內容送到以Ri中的內容為地址的RAM單元

          [5]. 查表指令(2條)

          這組指令的功能是對存放于程序存儲器中的數據表格進行查找傳送,使用變址尋址方式:

          MOVC A,@A+DPTR ;((A))+(DPTR)→(A) 表格地址單元中的內容送到累加器A中

          MOVC A,@A+PC ;((PC))+1→(A),((A))+(PC)→(A) 表格地址單元中的內容送到累加器A中

          [6]. 累加器A與片外數據存儲器RAM傳送指令(4條)

          這4條指令的作用是累加器A與片外RAM間的數據傳送。使用寄存器尋址方式:

          MOVX @DPTR,A ;(A)→((DPTR)) 累加器中的內容送到數據指針指向片外RAM地址中

          MOVX A, @DPTR ;((DPTR))→(A) 數據指針指向片外RAM地址中的內容送到累加器A中

          MOVX A, @Ri ;((Ri))→(A) 寄存器Ri指向片外RAM地址中的內容送到累加器A中

          MOVX @Ri,A ;(A)→((Ri)) 累加器中的內容送到寄存器Ri指向片外RAM地址中

          [7]. 堆棧操作類指令(2條)

          這4類指令的作用是把直接尋址單元的內容傳送到堆棧指針SP所指的單元中,以及把SP所指單元的內容送到直接尋址單元中。這類指令只有兩條,下述的第一條常稱為入棧操作指令,第二條稱為出棧操作指令。需要指出的是,單片機開機復位后,(SP)默認為07H,但一般都需要重新賦值,設置新的SP首址。入棧的第一個數據必須存放于SP+1所指存儲單元,故實際的堆棧底為SP+1所指的存儲單元。

          PUSH data ;(SP)+1→(SP),(data)→(SP) 堆棧指針首先加1,直接尋址單元中的數據送到堆棧指針SP所指的單元中

          POP data ;(SP)→(data)(SP)-1→(SP), 堆棧指針SP所指的單元數據送到直接尋址單元中,堆棧指針SP再進行減1操作

          [8]. 交換指令(5條)

          這5條指令的功能是把累加器A中的內容與源操作數所指的數據相互交換。

          XCH A,Rn ;(A)←→(Rn)累加器與工作寄存器Rn中的內容互換

          XCH A,@Ri ;(A)←→((Ri))累加器與工作寄存器Ri所指的存儲單元中的內容互換

          XCH A,data ;(A)←→(data)累加器與直接地址單元中的內容互換

          XCHD A,@Ri ;(A3-0)←→((Ri)3-0)累加器與工作寄存器Ri所指的存儲單元中的內容低半字節互換

          SWAP A ;(A3-0)←→(A7-4)累加器中的內容高低半字節互換

          [9]. 16位數據傳送指令(1條)

          這條指令的功能是把16位常數送入數據指針寄存器。

          MOV DPTR,#data16 ;#dataH→(DPH),#dataL→(DPL)16位常數的高8位送到DPH,低8位送到DPL

          MCS-51算術運算指令

          算術運算指令共有24條,算術運算主要是執行加、減、乘、除法四則運算。另外MCS-51指令系統中有相當一部分是進行加、減1操作,BCD碼的運算和調整,我們都歸類為運算指令。雖然MCS-51單片機的算術邏輯單元ALU僅能對8位無符號整數進行運算,但利用進位標志C,則可進行多字節無符號整數的運算。同時利用溢出標志,還可以對帶符號數進行補碼運算。需要指出的是,除加、減1指令外,這類指令大多數都會對PSW(程序狀態字)有影響。這在使用中應特別注意。

          [1]. 加法指令(4條)

          這4條指令的作用是把立即數,直接地址、工作寄存器及間接地址內容與累加器A的內容相加,運算結果存在A中。

          ADD A,#data ;(A)+#data→(A) 累加器A中的內容與立即數#data相加,結果存在A中

          ADD A,data ;(A)+(data)→(A) 累加器A中的內容與直接地址單元中的內容相加,結果存在A中

          ADD A,Rn ;(A)+(Rn)→(A) 累加器A中的內容與工作寄存器Rn中的內容相加,結果存在A中

          ADD A,@Ri ;(A)+((Ri))→(A) 累加器A中的內容與工作寄存器Ri所指向地址單元中的內容相加,結果存在A中

          [2]. 帶進位加法指令(4條)

          這4條指令除與[1]功能相同外,在進行加法運算時還需考慮進位問題。

          ADDC A,data ;(A)+(data)+(C)→(A) 累加器A中的內容與直接地址單元的內容連同進位位相加,結果存在A中

          ADDC A,#data ;(A)+#data +(C)→(A) 累加器A中的內容與立即數連同進位位相加,結果存在A中

          ADDC A,Rn ;(A)+Rn+(C)→(A) 累加器A中的內容與工作寄存器Rn中的內容、連同進位位相加,結果存在A中

          ADDC A,@Ri ;(A)+((Ri))+(C)→(A) 累加器A中的內容與工作寄存器Ri指向地址單元中的內容、連同進位位相加,結果存在A中

          [3]. 帶借位減法指令(4條)

          這組指令包含立即數、直接地址、間接地址及工作寄存器與累加器A連同借位位C內容相減,結果送回累加器A中。

          這里我們對借位位C的狀態作出說明,在進行減法運算中,CY=1表示有借位,CY=0則無借位。OV=1聲明帶符號數相減時,從一個正數減去一個負數結果為負數,或者從一個負數中減去一個正數結果為正數的錯誤情況。在進行減法運算前,如果不知道借位標志位C的狀態,則應先對CY進行清零操作。

          SUBB A,data ;(A)-(data) - (C)→(A) 累加器A中的內容與直接地址單元中的內容、連同借位位相減,結果存在A中

          SUBB A,#data ;(A)-#data -(C)→(A) 累加器A中的內容與立即數、連同借位位相減,結果存在A中

          SUBB A,Rn ;(A)-(Rn) -(C)→(A) 累加器A中的內容與工作寄存器中的內容、連同借位位相減,結果存在A中

          SUBB A,@Ri ;(A)-((Ri)) -(C)→(A) 累加器A中的內容與工作寄存器Ri指向的地址單元中的內容、連同借位位相減,結果存在A中

          [4]. 乘法指令(1條)

          這個指令的作用是把累加器A和寄存器B中的8位無符號數相乘,所得到的是16位乘積,這個結果低8位存在累加器A,而高8位存在寄存器B中。如果OV=1,說明乘積大于FFH,否則OV=0,但進位標志位CY總是等于0。

          MUL AB ;(A)×(B)→(A)和(B) 累加器A中的內容與寄存器B中的內容相乘,結果存在A、B中

          [5]. 除法指令(1條)

          這個指令的作用是把累加器A的8位無符號整數除以寄存器B中的8位無符號整數,所得到的商存在累加器A,而余數存在寄存器B中。除法運算總是使OV和進位標志位CY等于0。如果OV=1,表明寄存器B中的內容為00H,那么執行結果為不確定值,表示除法有溢出。

          DIV AB ;(A)÷(B)→(A)和(B) 累加器A中的內容除以寄存器B中的內容,所得到的商存在累加器A,而余數存在寄存器B中。

          [6]. 加1指令(5條)

          這5條指令的的功能均為原寄存器的內容加1,結果送回原寄存器。上述提到,加1指令不會對任何標志有影響,如果原寄存器的內容為FFH,執行加1后,結果就會是00H。這組指令共有直接、寄存器、寄存器減間址等尋址方式:

          INC A ;(A)+1→(A) 累加器A中的內容加1,結果存在A中

          INC data ;(data)+1→(data) 直接地址單元中的內容加1,結果送回原地址單元中

          INC @Ri ;((Ri))+1→((Ri)) 寄存器的內容指向的地址單元中的內容加1,結果送回原地址單元中

          INC Rn ;(Rn)+1→(Rn)寄存器Rn的內容加1,結果送回原地址單元中

          INC DPTR ;(DPTR)+1→(DPTR)數據指針的內容加1,結果送回數據指針中

          在INC data這條指令中,如果直接地址是I/O,其功能是先讀入I/O鎖存器的內容,然后在CPU進行加1操作,再輸出到I/O上,這就是“讀—修改—寫”操作。

          [7]. 減1指令(4條)

          這組指令的作用是把所指的寄存器內容減1,結果送回原寄存器,若原寄存器的內容為00H,減1后即為FFH,運算結果不影響任何標志位,這組指令共有直接、寄存器、寄存器間址等尋址方式,當直接地址是I/O口鎖存器時,“讀—修改—寫”操作與加1指令類似。

          DEC A ;(A)-1→(A)累加器A中的內容減1,結果送回累加器A中

          DEC data ;(data)-1→(data)直接地址單元中的內容減1,結果送回直接地址單元中

          DEC @Ri ;((Ri))-1→((Ri))寄存器Ri指向的地址單元中的內容減1,結果送回原地址單元中

          DEC Rn ;(Rn)-1→(Rn)寄存器Rn中的內容減1,結果送回寄存器Rn中

          [8]. 十進制調整指令(1條)

          在進行BCD碼運算時,這條指令總是跟在ADD或ADDC指令之后,其功能是將執行加法運算后存于累加器A中的結果進行調整和修正。

          DA A

          MCS-51邏輯運算及移位指令

          邏輯運算和移位指令共有25條,有與、或、異或、求反、左右移位、清0等邏輯操作,有直接、寄存器和寄存器間址等尋址方式。這類指令一般不影響程序狀態字(PSW)標志。

          [1]. 循環移位指令(4條)

          這4條指令的作用是將累加器中的內容循環左或右移一位,后兩條指令是連同進位位CY一起移位。

          RL A ;累加器A中的內容左移一位

          RR A ;累加器A中的內容右移一位

          RLC A ;累加器A中的內容連同進位位CY左移一位

          RRC A ;累加器A中的內容連同進位位CY右移一位

          [2]. 累加器半字節交換指令(1條)

          這條指令是將累加器中的內容高低半字節互換,這在上一節中內容已有介紹。

          SWAP A ; 累加器中的內容高低半字節互換

          [3]. 求反指令(1條)

          這條指令將累加器中的內容按位取反。

          CPL A ; 累加器中的內容按位取反

          [4]. 清零指令(1條)

          這條指令將累加器中的內容清0。

          CLR A ; 0→(A),累加器中的內容清0

          [5]. 邏輯與操作指令(6條)

          這組指令的作用是將兩個單元中的內容執行邏輯與操作。如果直接地址是I/O地址,則為“讀—修改—寫”操作。

          ANL A,data ;累加器A中的內容和直接地址單元中的內容執行與邏輯操作。結果存在寄存器A中。

          ANL data,#data ;直接地址單元中的內容和立即數執行與邏輯操作。結果存在直接地址單元中。

          ANL A,#data ;累加器A的內容和立即數執行與邏輯操作。結果存在累加器A中。

          ANL A,Rn ;累加器A的內容和寄存器Rn中的內容執行與邏輯操作。結果存在累加器A中。

          ANL data,A ;直接地址單元中的內容和累加器A的內容執行與邏輯操作。結果存在直接地址單元中。

          ANL A,@Ri ;累加器A的內容和工作寄存器Ri指向的地址單元中的內容執行與邏輯操作。結果存在累加器A中。

          [6]. 邏輯或操作指令(6條)

          這組指令的作用是將兩個單元中的內容執行邏輯或操作。如果直接地址是I/O地址,則為“讀—修改—寫”操作。

          ORL A,data ;累加器A中的內容和直接地址單元中的內容執行邏輯或操作。結果存在寄存器A中。

          ORL data,#data ;直接地址單元中的內容和立即數執行邏輯或操作。結果存在直接地址單元中。

          ORL A,#data ;累加器A的內容和立即數執行邏輯或操作。結果存在累加器A中。

          ORL A,Rn ;累加器A的內容和寄存器Rn中的內容執行邏輯或操作。結果存在累加器A中。

          ORL data,A ;直接地址單元中的內容和累加器A的內容執行邏輯或操作。結果存在直接地址單元中。

          ORL A,@Ri ;累加器A的內容和工作寄存器Ri指向的地址單元中的內容執行邏輯或操作。結果存在累加器A中。

          [7]. 邏輯異或操作指令(6條)

          這組指令的作用是將兩個單元中的內容執行邏輯異或操作。如果直接地址是I/O地址,則為“讀—修改—寫”操作。

          XRL A,data ;累加器A中的內容和直接地址單元中的內容執行邏輯異或操作。結果存在寄存器A中。

          XRL data,#data ;直接地址單元中的內容和立即數執行邏輯異或操作。結果存在直接地址單元中。

          XRL A,#data ;累加器A的內容和立即數執行邏輯異或操作。結果存在累加器A中。

          XRL A,Rn ;累加器A的內容和寄存器Rn中的內容執行邏輯異或操作。結果存在累加器A中。

          XRL data,A ;直接地址單元中的內容和累加器A的內容執行邏輯異或操作。結果存在直接地址單元中。

          XRL A,@Ri ;累加器A的內容和工作寄存器Ri指向的地址單元中的內容執行邏輯異或操作。結果存在累加器A中。

          MCS-51控制轉移指令

          控制轉移指令用于控制程序的流向,所控制的范圍即為程序存儲器區間,MCS-51系列單片機的控制轉移指令相對豐富,有可對64kB程序空間地址單元進行訪問的長調用、長轉移指令,也有可對2kB字節進行訪問的絕對調用和絕對轉移指令,還有在一頁范圍內短相對轉移及其它無條件轉移指令,這些指令的執行一般都不會對標志位有影響。

          [1]. 無條件轉移指令(4條)

          這組指令執行完后,程序就會無條件轉移到指令所指向的地址上去。長轉移指令訪問的程序存儲器空間為16地址64kB,絕對轉移指令訪問的程序存儲器空間為11位地址2kB空間。

          LJMP addr16 ;addr16→(PC),給程序計數器賦予新值(16位地址)

          AJMP addr11 ;(PC)+2→(PC),addr11→(PC10-0)程序計數器賦予新值(11位地址),(PC15-11)不改變

          SJMP rel ;(PC)+ 2 + rel→(PC)當前程序計數器先加上2再加上偏移量給程序計數器賦予新值

          JMP @A+DPTR ;(A)+ (DPTR)→(PC),累加器所指向地址單元的值加上數據指針的值給程序計數器賦予新值

          [2]. 條件轉移指令(8條)

          程序可利用這組豐富的指令根據當前的條件進行判斷,看是否滿足某種特定的條件,從而控制程序的轉向。

          JZ rel ; A=0,(PC)+ 2 + rel→(PC),累加器中的內容為0,則轉移到偏移量所指向的地址,否則程序往下執行

          JNZ rel ; A≠0,(PC)+ 2 + rel→(PC),累加器中的內容不為0,則轉移到偏移量所指向的地址,否則程序往下執行

          CJNE A, data, rel ; A≠(data),(PC)+ 3 + rel→(PC),累加器中的內容不等于直接地址單元的內容,則轉移到偏移量所指向的地址,否則程序往下執行

          CJNE A, #data, rel ; A≠#data,(PC)+ 3 + rel→(PC),累加器中的內容不等于立即數,則轉移到偏移量所指向的地址,否則程序往下執行

          CJNE Rn, #data, rel ; A≠#data,(PC)+ 3 + rel→(PC),工作寄存器Rn中的內容不等于立即數,則轉移到偏移量所指向的地址,否則程序往下執行

          CJNE @Ri, #data, rel ; A≠#data,(PC)+ 3 + rel→(PC),工作寄存器Ri指向地址單元中的內容不等于立即數,則轉移到偏移量所指向的地址,否則程序往下執行

          DJNZ Rn, rel ; (Rn)-1→(Rn),(Rn)≠0,(PC)+ 2 + rel→(PC)工作寄存器Rn減1不等于0,則轉移到偏移量所指向的地址,否則程序往下執行

          DJNZ data, rel ; (Rn)-1→(Rn),(Rn)≠0,(PC)+ 2 + rel→(PC)直接地址單元中的內容減1不等于0,則轉移到偏移量所指向的地址,否則程序往下執行

          [3]. 子程序調用指令(1條)

          子程序是為了便于程序編寫,減少那些需反復執行的程序占用多余的地址空間而引入的程序分支,從而有了主程序和子程序的概念,需要反復執行的一些程序,我們在編程時一般都把它們編寫成子程序,當需要用它們時,就用一個調用命令使程序按調用的地址去執行,這就需要子程序的調用指令和返回指令。

          LCALL addr16 ; 長調用指令,可在64kB空間調用子程序。此時(PC)+ 3→(PC),(SP)+ 1→(SP),(PC7-0)→(SP),(SP)+ 1→(SP),(PC15-8)→(SP),addr16→(PC),即分別從堆棧中彈出調用子程序時壓入的返回地址

          ACALL addr11 ; 絕對調用指令,可在2kB空間調用子程序,此時(PC)+ 2→(PC),(SP)+ 1→(SP),(PC7-0)→(SP),(SP)+ 1→(SP),(PC15-8)→(SP),addr11→(PC10-0)

          RET ; 子程序返回指令。此時(SP)→(PC15-8),(SP)- 1→(SP),(SP)→(PC7-0),(SP)- 1→(SP)

          RETI ; 中斷返回指令,除具有RET功能外,還具有恢復中斷邏輯的功能,需注意的是,RETI指令不能用RET代替

          [4]. 空操作指令(1條)

          這條指令將累加器中的內容清0。

          NOP ; 這條指令除了使PC加1,消耗一個機器周期外,沒有執行任何操作??捎糜诙虝r間的延時

          MCS-51布爾變量操作指令

          布爾處理功能是MCS-51系列單片機的一個重要特征,這是出于實際應用需要而設置的。布爾變量也即開關變量,它是以位(bit)為單位進行操作的。

          在物理結構上,MCS-51單片機有一個布爾處理機,它以進位標志做為累加位,以內部RAM可尋址的128個為存儲位。

          既然有布爾處理機功能,所以也就有相應的布爾操作指令集,下面我們分別談論。

          [1]. 位傳送指令(2條)

          位傳送指令就是可尋址位與累加位CY之間的傳送,指令有兩條。

          MOV C,bit ;bit→CY,某位數據送CY

          MOV bit,C ;CY→bit,CY數據送某位

          [2]. 位置位復位指令(4條)

          這些指令對CY及可尋址位進行置位或復位操作,共有四條指令。

          CLR C ; 0→CY,清CY

          CLR bit ; 0→bit,清某一位

          SETB C ; 1→CY,置位CY

          SETB bit ; 1→bit,置位某一位

          [3]. 位運算指令(6條)

          位運算都是邏輯運算,有與、或、非三種指令,共六條。

          ANL C,bit ;(CY)∧(bit)→CY

          ANL C,/bit ;(CY)∧()→CY

          ORL C,bit ;(CY)∨(bit)→CY

          ORL C,/bit ;(CY)∧()→CY

          CPL C ;()→CY

          CPL bit ;()→bir

          [4]. 位控制轉移指令(5)

          位控制轉移指令是以位的狀態作為實現程序轉移的判斷條件,介紹如下:

          JC rel ; (CY)=1轉移,(PC)+2+rel→PC,否則程序往下執行,(PC)+2→PC。

          JNC rel ; (CY)=0轉移,(PC)+2+rel→PC,否則程序往下執行,(PC)+2→PC。

          JB bit, rel ; 位狀態為1轉移。

          JNB bit, rel ; 位狀態為0轉移。

          JBC bit, rel ; 位狀態為1轉移,并使該位清“0”。

          后三條指令都是三字節指令,如果條件滿足,(PC)+3+rel→PC,否則程序往下執行,(PC)+3→PC。

          關鍵詞: 51單片機匯編基

          相關新聞

          51單片機匯編基礎
          2022-01-29 19:30:30
          CAN總線學習系列之三——CAN控制器的選擇
          2022-01-29 19:30:25
          485總線應采用什么樣的通訊線?
          2022-01-29 19:30:20
          簡易頻率特性測試儀
          2022-01-29 19:30:10
          M2M的移動通信優化技術
          2022-01-29 19:30:05
          Picoscope示波器學習筆記一
          2022-01-29 19:30:00
          支持800V超高速補能 起亞首款純電動車EV6價格公布
          2022-01-29 18:21:37
          6倍速刻錄128GB光盤 先鋒發布新款藍光刻錄機
          2022-01-29 18:21:30
          紅魔7成快充王者:曝13分鐘充滿 iPhone 13 Pro Max看不見車尾燈
          2022-01-29 18:21:23
          史上改變最大的10.0資料片要來了?暴雪將公布魔獸新動向
          2022-01-29 18:21:17
          惠普推出全新Elite Mini迷你機:最高可配12代i9+RTX 3050 Ti
          2022-01-29 18:21:09
          榮耀X30榮登天貓安卓手機好評榜累積第一
          2022-01-29 18:21:02
          2022春節假期天氣地圖:南方多雨雪 北方晴冷
          2022-01-29 18:08:35
          匯聚零散資源:Dashworks推出企業內部知識搜索引擎服務
          2022-01-29 18:08:27
          3DCenter:2022年顯卡將會更便宜
          2022-01-29 18:08:19
          帶來區域截屏等功能 小新Pad Plus開啟OTA3 ZUI 13系統推送
          2022-01-29 18:08:13
          英國威廉王子抱怨:我三個孩子都有點“沉迷”電子游戲
          2022-01-29 18:08:10
          269元!魅族PANDAER「白金獨角獸」超觸感鍵帽達成眾籌
          2022-01-29 18:08:04
          45W版12代酷睿處理器放開超頻?Intel:僅有一款酷睿i9支持
          2022-01-29 18:08:02
          業界最強大人工智能系統在 GTC 2018 上發布
          2022-01-29 18:00:16
          如何自制電路板 自制線路板
          2022-01-29 18:00:10
          數據挖掘、機器學習和深度學習之間有什么區別?
          2022-01-29 18:00:05
          Wi-Fi 6 是什么?和現在的Wi-Fi有何區別?
          2022-01-29 18:00:00
          微信推“拜年紅包”:隨機吉利數字 帶不同動態效果
          2022-01-29 16:51:38
          工信部:2021年新建光纜319萬公里,千兆光網具備覆蓋3億戶家庭能力
          2022-01-29 16:51:31
          低端供應商推動印度智能手機出貨量增長 2021全年達1.62億臺
          2022-01-29 16:51:24
          沃達豐英國計劃2023年開始停用3G網絡
          2022-01-29 16:51:17
          中天科技預計2021年凈利1億元—1.5億元
          2022-01-29 16:51:10
          300多塊的雙核奔騰被玩出花了:超頻沖上5.8GHz
          2022-01-29 16:51:02
          抽中“365天帶薪休假”男子選擇折現20萬 為山區孩子捐款1萬
          2022-01-29 16:39:34
          索尼Xperia手機攝影大賽報名出尷尬Bug:較早購買手機的用戶無法參賽
          2022-01-29 16:39:28
          老人打響“出租車保衛戰” 無辜新能源車遭殃
          2022-01-29 16:39:22
          北京通州部分下架民宿經審核重新上架 半天內已有房源被預訂
          2022-01-29 16:39:14
          美國會議員致信加密貨幣挖礦企業 欲立法規范高能耗產業
          2022-01-29 16:39:07
          虎年見!Redmi K50 宇宙首款產品預熱
          2022-01-29 16:39:00
          Rivian與三星SDI合資電池工廠談判已結束 未取得進展
          2022-01-29 16:39:00
          隱士張一鳴
          2022-01-29 16:38:53
          微信版本更新 “支付”已改為“服務”
          2022-01-29 16:38:51
          中國廣電5G核心網四川節點建設正式啟動
          2022-01-29 16:38:46
          2月28日見!榮耀全球新品發布會來啦
          2022-01-29 16:38:43
          外媒起底“飛馬”間諜軟件:網絡攻擊武器如何崛起
          2022-01-29 16:38:38
          限購1臺!398元買24英寸1080P 75Hz曲面無邊框顯示器
          2022-01-29 16:38:35
          12985億元:螞蟻非貨基金保有規模再創新高
          2022-01-29 16:38:30
          加速賦能攜手共贏 亞馬遜云科技APN業務再升級
          2022-01-29 16:38:26
          京東方今年將向蘋果iPhone供應4000萬-5000萬塊OLED屏幕
          2022-01-29 16:38:22
          2022年顯卡還能買嗎?僅僅便宜一丟丟
          2022-01-29 16:38:16
          我國首個百萬噸級碳捕集利用與封存項目建成
          2022-01-29 16:38:13
          AMD Zen 4銳龍7000處理器將極端緊俏
          2022-01-29 16:38:04
          特斯拉水土不服?1成三年車齡Model S無法通過德國質量檢測
          2022-01-29 16:38:02
          雙聲道音頻功率放大器電路圖分析
          2022-01-29 16:30:18
          EMC測試簡介
          2022-01-29 16:30:12
          一位從厭倦調試NRF24L01無線模塊到成功的收發經驗分享
          2022-01-29 16:30:06
          什么是視頻分配器設備
          2022-01-29 16:30:00
          中國電信成立智能網絡科技公司,注冊資本9億元
          2022-01-29 15:22:36
          Tachyum宣布被選中參與IPCEI 開發用于HPC/AI的Prodigy 2
          2022-01-29 15:22:28
          通用宣布向密歇根州4地投資超過70億美元
          2022-01-29 15:22:22
          LG能源解決方案與通用汽車再合作于美國新建21億美元電池工廠
          2022-01-29 15:22:16
          微軟第二財季營收517億美元 云相關業務貢獻超過三分之一
          2022-01-29 15:22:08
          快手開通直播招聘功能:一鍵報名 無需投簡歷
          2022-01-29 15:22:02
          蘭博基尼將推出四座版電動越野車和電動Urus
          2022-01-29 15:21:56
          聯想于上海成立半導體公司,注冊資本3億元
          2022-01-29 15:21:50
          騰訊投資歸芯科技
          2022-01-29 15:21:43
          PwnKit漏洞曝光:所有主流Linux發行版本均受影響
          2022-01-29 15:21:37
          順豐控股注冊資本增加至49.06億,增幅7.68%
          2022-01-29 15:21:30
          騰訊投資心域科技,持股52.98%成大股東
          2022-01-29 15:21:23
          工信部:截至2021年底 我國建成10G PON端口786萬個
          2022-01-29 15:21:16
          2021年我國電信業務收入累計完成1.47萬億元 比上年增長8%
          2022-01-29 15:21:09
          發售三個月 微軟對Win11感到“高興”:比以前的系統成功
          2022-01-29 15:21:01
          松下開發鏡頭成型新技術 高端遠紅外非球面鏡頭制造成本有望大降
          2022-01-29 15:08:09
          西班牙警方突擊搜查加密貨幣礦場 起初因高能耗被懷疑種植大麻
          2022-01-29 15:08:01
          寶馬公司設計 TteSPORTS level 10M拆解
          2022-01-29 15:00:21
          常見視頻接口簡介
          2022-01-29 15:00:16
          從惠普dv6拆解 深入解讀CoolSense技術
          2022-01-29 15:00:10
          “畢昇杯”全國電子創新設計競賽
          2022-01-29 15:00:05
          純手工制作迷你逆變器(全圖解)
          2022-01-29 15:00:00
          Note12還是11 Pro換芯?Redmi神秘驍龍690新機入網
          2022-01-29 13:38:49
          Q4手機出貨量公布:國產品牌 榮耀第一
          2022-01-29 13:38:42
          小米Redmi 5G新機曝光:1億像素 120Hz高刷 1000多元
          2022-01-29 13:38:34
          120W快充驍龍8旗艦!盧偉冰用這個字評價Redmi K50宇宙首款大作
          2022-01-29 13:38:27
          1億像素+120Hz高刷屏!Redmi神秘新機入網
          2022-01-29 13:38:20
          三星Galaxy Watch4系列來拜年 健康時尚生活即刻開啟
          2022-01-29 13:38:12
          vivo首款旗艦折疊屏NEX Fold來了!行業首發新技術
          2022-01-29 13:38:03
          九年銷量25萬+ 寶馬i3純電車型將于今夏停產
          2022-01-29 13:38:00
          一文讀懂變頻器的工作原理和應用
          2022-01-29 13:30:32
          頂級工業設計 360度翻轉聯想Yoga11拆解
          2022-01-29 13:30:27
          智能電表工作原理和結構
          2022-01-29 13:30:21
          簡述特種電源及特種電源幾種類型
          2022-01-29 13:30:16
          拆解 ThinkPad T410
          2022-01-29 13:30:10
          首屆IPC ESTC展會聚焦產品開發到面世整體解決方案
          2022-01-29 13:30:05
          可控硅的作用是什么?又有哪些用途呢?
          2022-01-29 13:29:59
          字節跳動投資大寰機器人,后者專注機器人電動夾爪研發
          2022-01-29 12:21:44
          寶馬在美推出2023款X2版GoldPlay
          2022-01-29 12:21:37
          NFT市場OpenSea推出新版列表管理器
          2022-01-29 12:21:30
          微軟宣布Teams的月活躍用戶數量突破2.7億
          2022-01-29 12:21:23
          NOAA的GOES-T“高清地球”衛星將于3月從卡納維拉爾角空軍基地升空
          2022-01-29 12:21:16
          寶馬發布2023款8系:造型、技術都獲更新
          2022-01-29 12:21:09
          Google推出全新的.day域名系統
          2022-01-29 12:21:02
          眼不見為凈:MIT研究團隊展示InfraredTags紅外隱藏標簽方案
          2022-01-29 12:08:55
          一加手機副總裁李開新履新OPPO助理副總裁 管理IoT事業群
          2022-01-29 12:08:48
          機構:2021年Q4蘋果以創紀錄的市場份額登頂中國智能手機市場
          2022-01-29 12:08:42

          熱門文章

          熱點專題