




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、第3章MCS-51指令系統第3章 MCS-51指令系統 實訓實訓3 指令的應用指令的應用 3.1 簡介簡介 3.2 尋址方式尋址方式 3.3 指令系統指令系統 本章小結本章小結 習題習題3 第3章MCS-51指令系統實訓實訓3 指指令令的的應應用用1. 實訓目的實訓目的(1) 掌握指令格式及表示方法:助記符表示和機器碼表示。(2) 了解人工匯編與機器匯編的方法。(3) 了解尋址方式的概念。(4) 掌握常用指令的功能及應用。2. 實訓設備和器件實訓設備和器件(1) 實訓設備:單片機開發系統、微機等。(2) 實訓電路:同實訓1電路。第3章MCS-51指令系統3. 實訓步驟與要求實訓步驟與要求(1)
2、 將表3.1中的助記符指令翻譯成機器碼。(2) 將機器碼分別輸入到單片機開發系統中,或經機器匯編后分別下載到單片機開發系統中,單步運行,觀察并記錄實驗板上的8個發光二極管的亮滅狀態及相關單元的數據,填入表3.1中。第3章MCS-51指令系統表 3.1 實 驗 表 格 題號 助記符指令 機器碼指令 檢查數據 發光二極管狀態 MOV P1,#55H MOV 20H,#0F0H (20H)= MOV P1,20H MOV A,#0F0H A= MOV P1,A MOV R4,#0FH R4= MOV P1,R4 第3章MCS-51指令系統題號 助記符指令 機器碼指令 檢查數據 發光二極管狀態 MOV
3、 20H,#0AAH (20H)= MOV R0,#20H R0= MOV P1,R0 MOV A,#55H A= MOV P1,A ANL A,#0FH A= MOV P1,A ORL A,#0F0H A= MOV P1,A CLR A A= MOV P1,A CPL A A= MOV P1,A MOV A,#01H A= MOV P1,A RL A A= MOV P1,A RL A A= MOV P1,A 第3章MCS-51指令系統4. 實訓分析與總結實訓分析與總結1) 指令形式從實訓中可以看出,指令有兩種形式:助記符指令和機器碼指令(機器指令)。助記符指令只有翻譯成機器碼后,單片機才能直
4、接執行。機器碼指令分為以下三種:單字節指令:機器碼只有一個字節的指令稱為單字節指令。例如單字節指令CLR A的機器碼是E4H。雙字節指令:機器碼包括兩個字節的指令稱為雙字節指令。例如雙字節指令MOV A,#55H的機器碼是74H 55H。三字節指令:機器碼包括三個字節的指令稱為三字節指令。例如三字節指令MOV P1,#55H的機器碼是75H 90H 55H。單片機指令系統中,大多數指令是單字節指令和雙字節指令。第3章MCS-51指令系統2) 指令分析(1) MOV P1,#55H:將常數55H送入P1口。在助記符指令中,常數被稱為立即數。發光二極管的狀態為立即數55H: 0 1 0 1 0 1
5、 0 1對應P1口各位:P1.7 P1.6 P1.5 P1.4 P1.3 P1.2 P1.1 P1.0相應的LED狀態:亮 滅 亮 滅 亮 滅 亮 滅參照實訓1的電路圖,若P1口的某一位輸出0(低電平),則經過反相后變為高電平,由外部電源VCC驅動發光二極管處于點亮狀態;否則,二極管處于熄滅狀態。第3章MCS-51指令系統(2) MOV 20H,#0F0H:將立即數0F0H送到內部RAM的20H單元中。MOV P1,20H:將20H單元的內容,即0F0H送到P1口。發光二極管的狀態為0F0H: 1 1 1 1 0 0 0 0P1口: P1.7 P1.6 P1.5 P1.4 P1.3 P1.2
6、P1.1 P1.0LED狀態: 滅 滅 滅 滅 亮 亮 亮 亮(3) MOV A,#0F0H: 將立即數0F0H送到累加器A中。MOV P1,A:將累加器A的內容,即0F0H送到P1口。發光二極管的狀態同(2)。第3章MCS-51指令系統(4) MOV R4,#0FH: 將立即數0FH送到寄存器R4中。MOV P1,R4:將寄存器R4的內容,即0FH送到P1口。發光二極管的狀態如下:0FH: 0 0 0 0 1 1 1 1P1口: P1.7 P1.6 P1.5 P1.4 P1.3 P1.2 P1.1 P1.0LED狀態: 亮 亮 亮 亮 滅 滅 滅 滅 (5) MOV 20H,#0AAH:將立
7、即數0AAH送到內部RAM的20H單元中。 MOV R0,#20H:將立即數20H送到R0寄存器中。 MOV P1,R0:將R0所指向的20H單元的內容,即0AAH送到P1口中。發光二極管的狀態如下:第3章MCS-51指令系統0AAH: 1 0 1 0 1 0 1 0P1口: P1.7 P1.6 P1.5 P1.4 P1.3 P1.2 P1.1 P1.0LED狀態: 滅 亮 滅 亮 滅 亮 滅 亮(6) MOV A,#55H:將立即數55H送到累加器A中。MOV P1,A:將累加器A的內容,即55H送到P1口。發光二極管的狀態同(1)。ANL A,#0FH:將累加器A的內容55H與立即數0FH
8、進行邏輯“與”操作,結果為05H,再送回累加器A中。MOV P1,A:將累加器A的內容,即05H送到P1口。發光二極管的狀態如下:05H: 0 0 0 0 0 1 0 1P1口: P1.7 P1.6 P1.5 P1.4 P1.3 P1.2 P1.1 P1.0LED狀態: 亮 亮 亮 亮 亮 滅 亮 滅第3章MCS-51指令系統ORL A,#0F0H:將累加器A的內容05H與立即數0F0H進行邏輯“或”操作,結果為0F5H,再送回累加器A中。MOV P1,A:將累加器A的內容,即0F5H送到P1口。發光二極管的狀態如下:0F5H: 1 1 1 1 0 1 0 1P1口: P1.7 P1.6 P1
9、.5 P1.4 P1.3 P1.2 P1.1 P1.0LED狀態: 滅 滅 滅 滅 亮 滅 亮 滅(7) CLR A:累加器清0。MOV P1,A:將累加器A的內容,即00H送到P1口。發光二極管的狀態是全亮。CPL A:將A的內容00H按位取反,結果為0FFH。MOV P1,A:將累加器A的內容,即0FFH送到P1口。發光二極管的狀態是全滅。第3章MCS-51指令系統(8) MOV A,#01H:將立即數01H送到累加器A中。MOV P1,A:將累加器A的內容,即01H送到P1口。發光二極管的狀態如下:01H: 0 0 0 0 0 0 0 1P1口: P1.7 P1.6 P1.5 P1.4
10、P1.3 P1.2 P1.1 P1.0LED狀態: 亮 亮 亮 亮 亮 亮 亮 滅RL A:移位指令,將A的內容01H循環左移一位,結果為02H。MOV P1,A:將累加器A的內容,即02H送到P1口。發光二極管的狀態如下:02H: 0 0 0 0 0 0 1 0P1口: P1.7 P1.6 P1.5 P1.4 P1.3 P1.2 P1.1 P1.0LED狀態: 亮 亮 亮 亮 亮 亮 滅 亮第3章MCS-51指令系統RL A:將A的內容02H左移一位,結果為04H。MOV P1,A:將累加器A的內容,即04H送到P1口。發光二極管的狀態如下:02H: 0 0 0 0 0 1 0 0P1口:
11、P1.7 P1.6 P1.5 P1.4 P1.3 P1.2 P1.1 P1.0LED狀態: 亮 亮 亮 亮 亮 滅 亮 亮3) 現象分析從實訓2中看到以下現象:往P1口傳送數據的指令中,數據的來源不盡相同。數據是指令的操作對象,叫做操作數。指令必須給出操作數所在的地方,才能進行數據傳送。尋找操作數地址的方法,稱為尋址方式。下面是在實訓中遇到的采用了不同尋址方式的指令:MOV P1,#55H ;把操作數直接寫在指令中,稱為立即數尋址第3章MCS-51指令系統 MOV P1,20H ;把存放操作數的內存單元的地址直接寫在指令;中,稱為直接尋址MOV P1,A ;把操作數存放在寄存器中,稱為寄存器尋
12、址MOV P1,R0 ;把存放操作數的內存單元的地址放在寄存器;R0中,這種尋址方式稱為寄存器間接尋址除了以上4種尋址方式之外,MCS-51單片機還有變址尋址方式、相對尋址方式和位尋址方式等。思考:指出表3.1中每一條指令的尋址方式。注意:P1與寄存器R0R7、累加器A不同,它是內部RAM單元90H的符號地址,只能作為內存單元直接尋址。第3章MCS-51指令系統3.1 簡簡 介介3.1.1 指令概述指令概述3.1.2 指令格式指令格式從實訓2中看到,不同指令翻譯成機器碼后字節數也不一定相同。按照機器碼個數,指令可以分為以下三種: 操作碼70操作碼70操作碼70數據或尋址方式70數據或尋址方式7
13、0數據或尋址方式70單字節指令:雙字節指令:三字節指令:第3章MCS-51指令系統MCS-51單片機指令系統包括49條單字節指令、46條雙字節指令和16條三字節指令。采用助記符表示的匯編語言指令格式如下:標號是程序員根據編程需要給指令設定的符號地址,可有可無;標號由18個字符組成,第一個字符必須是英文字母;標號后必須用冒號。操作碼表示指令的操作種類,如MOV表示數據傳送操作,ADD表示加法操作等。標號:操作碼操作數或操作數地址;注釋第3章MCS-51指令系統操作數或操作數地址表示參加運算的數據或數據的有效地址。操作數一般有以下幾種形式:沒有操作數項,即操作數隱含在操作碼中,如RET指令;只有一
14、個操作數,如CPL A指令;有兩個操作數,如MOV A,#00H指令,操作數之間以逗號相隔,前面的操作數稱為目的操作數,后面的操作數稱為源操作數;有三個操作數,如CJNE A,#00H,NEXT指令,操作數之間也以逗號相隔。注釋是對指令的解釋說明,用以提高程序的可讀性。注釋前必須加分號。第3章MCS-51指令系統3.2 尋尋 址址 方方 式式 1. 寄存器尋址寄存器尋址寄存器尋址是指將操作數存放于寄存器中。寄存器包括工作寄存器R0R7、累加器A、通用寄存器B、地址寄存器DPTR等。例如,指令MOV R1,A的操作是把累加器A中的數據傳送到寄存器R1中,其操作數存放在累加器A中,所以尋址方式為寄
15、存器尋址。如果程序狀態寄存器PSW的RS1RS0=01(選中第一組工作寄存器,對應地址為08H0FH),設累加器A的內容為20H,則執行MOV R1,A指令后,內部RAM 09H單元的值就變為20H,如圖3.1所示。第3章MCS-51指令系統圖3.1 寄存器尋址示意圖 第3章MCS-51指令系統寄存器尋址的尋址范圍包括如下兩部分:(1) 通用寄存器R0R7。MCS-51單片機中共有4組32個通用寄存器,但寄存器尋址只能使用當前寄存器組,指令中的寄存器名稱也只能是R0R7。因此,在使用前,需要通過對PSW中的RS1、RS0位的狀態進行設置,來選擇當前寄存器組。單片機復位時,RS1RS0=00,選
16、中第0組工作寄存器。第3章MCS-51指令系統 (2) 部分專用寄存器。例如累加器A、寄存器B以及數據指針DPTR等。實訓3中,采用寄存器尋址的指令如下:MOV P1,A;將累加器A的內容送到P1口MOV P1,R4 ;將寄存器R4的內容送到P1口CLR A;將累加器A清0CPLA;將累加器A中的內容取反RLA;將累加器A的內容循環左移第3章MCS-51指令系統2. 直接尋址直接尋址直接尋址是指把存放操作數的內存單元的地址直接寫在指令中。在MCS-51單片機中,可以直接尋址的存儲器主要有內部RAM區和特殊功能寄存器SFR區。例如,指令MOV A,3AH執行的操作是將內部RAM中地址為3AH的單
17、元內容傳送到累加器A中,其操作數3AH就是存放數據的單元地址,因此該指令采用的是直接尋址方式。設內部RAM 3AH單元的內容是88H,那么指令MOV A,3AH的執行過程如圖3.2所示。第3章MCS-51指令系統圖3.2 直接尋址示意圖 第3章MCS-51指令系統在直接尋址中,指令中直接給出了存放操作數的內部RAM地址,而不是操作數本身,其尋址范圍只限于內部RAM中,包括如下兩部分:(1) 內部RAM的低128單元,地址范圍為00HFFH,在指令中直接以單元地址形式給出。例如:指令MOV A,3AH中,3AH表示內部RAM單元地址。(2) 專用寄存器。專用寄存器除以單元地址形式給出外,還可以用
18、寄存器符號形式給出。直接尋址是訪問專用寄存器的惟一方法。實訓3中,采用直接尋址的指令如下:MOV P1,20H;將20H單元的內容傳送到P1口第3章MCS-51指令系統圖3.3 立即數尋址示意圖3. 立即數尋址立即數尋址立即數尋址是指將操作數直接寫在指令中。例如,指令MOV A,#3AH執行的操作是將立即數3AH送到累加器A中,該指令就是立即數尋址。注意:立即數前面必須加“#”號,以區別立即數和直接地址。該指令的執行過程如圖3.3所示。 3AHA3AH第3章MCS-51指令系統實訓3中,采用立即數尋址的指令如下:MOVP1,#55H;將立即數55H送P1口MOV20H,#0F0H;將立即數0F
19、0H送20H單元MOVA,#0F0H;將立即數0F0H送累加器A中MOVR4,#0FH;將立即數0FH送寄存器R4中MOVR0,#20H;將立即數20H送寄存器R0中ANL A,#0FH;將累加器A的內容與立即數0FH進行邏輯與操作ORL A,#0F0H;將累加器A的內容與立即數0F0H進行邏輯或操作MOVA,#01H;將立即數01H送累加器A中MOV A,#55H;將立即數55H送累加器A中第3章MCS-51指令系統 除了以上給出的8位立即數尋址的指令例子外,MCS-51指令系統中還有一條16位立即數尋址指令,該指令為 MOV DPTR,#2000H;把16位立即數2000H傳送到數據指針D
20、PTR中第3章MCS-51指令系統4. 寄存器間接尋址寄存器間接尋址寄存器間接尋址是指將存放操作數的內存單元的地址放在寄存器中,指令中只給出該寄存器。執行指令時,首先根據寄存器的內容,找到所需要的操作數地址,再由該地址找到操作數并完成相應操作。在MCS-51指令系統中,用于寄存器間接尋址的寄存器有R0、R1和DPTR,它們被稱為寄存器間接尋址寄存器。注意:間接尋址寄存器前面必須加上符號“”。 第3章MCS-51指令系統例如,指令MOV A,R0執行的操作是將R0的內容作為內部RAM的地址,再將該地址單元中的內容取出來送到累加器A中。設R0=3AH,內部RAM 3AH中的值是65H,則指令MOV
21、 A,R0的執行結果是累加器A的值為65H,該指令的執行過程如圖3.4所示。第3章MCS-51指令系統圖3.4 寄存器間接尋址示意圖 第3章MCS-51指令系統寄存器間接尋址的尋址范圍如下:(1) 內部RAM的低128字節。對內部RAM的低128字節單元的間接尋址,只能使用R0或R1作間接尋址寄存器,其通用形式為Ri(i=0或1)。(2) 外部RAM的64 K字節。對外部RAM的64 K字節的間接尋址,使用DPTR作間接尋址寄存器,其形式為DPTR。例如:MOVX A,DPTR,其功能是把由DPTR指定的外部RAM單元的內容送到累加器A中。第3章MCS-51指令系統(3) 外部RAM的低256
22、字節。外部RAM的低256字節是一個特殊的尋址區,除了可以使用DPTR作間接尋址寄存器外,還可以使用R0或R1作間接尋址寄存器,例如MOVX A,R0,即把由R0指定的外部RAM單元的內容傳送到累加器A中。實訓3中,采用寄存器間接尋址的指令如下:MOV P1,R0;將R0所指的存儲單元的內容送P1口第3章MCS-51指令系統5. 變址尋址變址尋址變址尋址是指將基址寄存器與變址寄存器的內容相加,結果作為操作數的地址。DPTR或PC是基址寄存器,累加器A是變址寄存器。該類尋址方式主要用于查表操作。例如,指令MOVC A,A+DPTR執行的操作是將累加器A和基址寄存器DPTR的內容相加,相加結果作為
23、操作數存放的地址,再按照該地址將操作數取出來送到累加器A中。設累加器A=02H,DPTR=0300H,外部ROM中,0302H單元的內容是55H,則指令MOVC A,A+DPTR的執行結果是累加器A的內容為55H。該指令的執行過程如圖3.5所示。第3章MCS-51指令系統圖3.5 變址尋址示意圖 第3章MCS-51指令系統對變址尋址方式說明如下:(1) 變址尋址是專門針對程序存儲器的尋址方式,所以只能對程序存儲器進行尋址,尋址范圍為64 K字節。(2) 變址尋址的指令只有2條:MOVC A,A+DPTRMOVC A,A+PC(3) 盡管變址尋址比較復雜,但變址尋址的指令都是一字節指令。第3章M
24、CS-51指令系統6. 相對尋址相對尋址相對尋址是指將程序計數器PC的當前內容與指令中的操作數相加,其結果作為跳轉指令的轉移地址(也稱目的地址)。該類尋址方式主要用于跳轉指令。第3章MCS-51指令系統例如,指令SJMP 54H執行的操作是將PC當前的內容與54H相加,結果再送回PC中,成為下一條將要執行指令的地址。設指令SJMP 54H的機器碼80H 54H存放在2000H處,當執行到該指令時,先從2000H和2001H單元取出指令,PC自動變為2002H;再把PC的內容與操作數54H相加,形成目標地址2056H,再送回PC,使得程序跳轉到2056H單元繼續執行。該指令的執行過程如圖3.6所
25、示。相對尋址是專門為改變程序執行方向而設置的,程序執行的方向由程序計數器PC控制,在程序順序執行過程中,PC自動加1,按照指令的存放順序逐一執行;而相對尋址則會修改PC的值,從而使程序跳轉到新的目的地址執行。第3章MCS-51指令系統圖3.6 相對尋址示意圖第3章MCS-51指令系統7. 位尋址位尋址位尋址是指按位進行的尋址操作,而上述介紹的指令都是按字節進行的尋址操作。MCS-51單片機中,操作數不僅可以按字節進行操作,也可以按位進行操作。當我們把某一位作為操作數時,這個操作數的地址稱為位地址。例如,指令SETB 3DH執行的操作是將內部RAM位尋址區中的3DH位置1。設內部RAM 27H單
26、元的內容是00H,執行SETB 3DH后,由于3DH對應內部RAM 27H的第5位,因此該位變為1,也就是27H單元的內容變為20H。該指令的執行過程如圖3.7所示。第3章MCS-51指令系統圖3.7 位尋址示意圖內部RAM27H二進制 10 0 1 0 0 0 0 0第3章MCS-51指令系統位尋址區包括專門安排在內部RAM中的如下兩個區域:(1) 內部RAM的位尋址區,地址范圍是20H2FH,共16個RAM單元,每個單元包括8個位,共計128個位,位地址為00H7FH。對這128個位有兩種表示方式:一是位地址,例如:SETB 3DH;二是單元地址加位的方式,即點操作符寫法,例如:SETB
27、27H.5。第3章MCS-51指令系統(2) 特殊功能寄存器SFR中的11個寄存器可以位尋址,包括83個位(相關內容可參見有關章節中位地址定義的內容)。對這些位在指令中有如下4種表示方法: 直接使用位地址,例如:MOV C,0D0H。 點操作符表示法,例如:MOV C,0D0H.0。 位名稱表示法,例如:MOV C,P。 專用寄存器符號與點操作符表示法,例如:MOV C,PSW.0。第3章MCS-51指令系統8. MCS-51單片機尋址方式小結單片機尋址方式小結以上介紹了MCS-51單片機的7種尋址方式,每一種尋址方式都有各自不同的尋址區域和特點,在此歸納總結如表3.2所示。第3章MCS-51
28、指令系統表表3.2 MCS-51單片機尋址方式小結單片機尋址方式小結尋址方式 定義 尋 址 區 域 指令舉例 寄存器 尋址 操作數存放于寄存器中,指令中給出寄存器名 (1) 通用寄存器 R0R7; (2) 部分專用寄存器,例如累加器A、寄存器 B 以及數據指針 DPTR 等 MOV A,R1 MOV P1,R4 CLR A 直接尋址 存放操作數的內存單元地址直接寫在指令中 (1) 內部 RAM 中的低 128 地址單元,地址范圍為00HFFH; (2) 專用寄存器。專用寄存器除以單元地址形式給出外,還可以以寄存器符號形式給出 MOV A,P1 MOV R1,20H 立即數 尋址 操作數直接寫在
29、指令中 源操作數為立即數,立即數前面必須加“#”號,以區別立即數和直接地址 MOV P1,#55H MOV DPTR, #2000H 寄存器 間接尋址 將存放操作數的內存單元的地址放在寄存器中,指令中只給出該寄存器 (1) 內部 RAM 的低 128 字節。對內部 RAM 的低128 字節單元的間接尋址, 只能使用R0 或 R1 作間接尋址寄存器,其通用形式為Ri(i=0 或 1); (2) 外部 RAM 的 64 K 字節。對外部 RAM 的 64 K字節的間接尋址,使用DPTR 作間接尋址寄存器,其形式為DPTR; (3) 外部 RAM 的低 256 字節。外部 RAM 的低 256字節是
30、一個特殊的尋址區, 除了可以使用DPTR 作間接尋址寄存器外,還可以使用 R0 或 R1 作間接尋址寄存器 MOV A,R0 MOVX A,DPTR MOVX A,R0 第3章MCS-51指令系統變址尋址 將基址寄存器與變址寄存器 的 內 容 相加,結果作為操作數的地址 (1) 變址尋址是專門針對程序存儲器的尋址方式,所以只能對程序存儲器進行尋址,尋址范圍為 64 K字節; (2) 變址尋址的指令只有 2 條: MOVC A,A+PC MOVC A,A+DPTR MOVC A,A+PC 相對尋址 將程序計數器 PC 的當前內容與指令中的 操 作 數 相加,其結果作為跳轉指令的轉移地址 專門為改
31、變程序執行方向而設置的 SJMP 54H 位尋址 按位進行的操作 (1) 內部RAM的位尋址區, 地址范圍是20H2FH,共 16 個 RAM 單元,每個單元包括 8 個位,共計 128個位,位地址為 00H7FH; (2) 特殊功能寄存器 SFR 中的 11 個寄存器可以位尋址,包括 83 個位 MOV C,0D0H MOV C,0D0H.0 MOV C,P MOV C,PSW.0 注:指令舉例中,尋址方式是指源操作數的尋址方式。第3章MCS-51指令系統3.3 指指 令令 系系 統統MCS-51單片機指令系統包括111條指令,按功能可以劃分為以下5類: 數據傳送指令(29條)。 算術運算指
32、令(24條)。 邏輯運算及移位指令(24條)。 控制轉移指令(17條)。 位操作指令(17條)。第3章MCS-51指令系統3.3.1 指令系統中的符號說明指令系統中的符號說明指令的書寫必須遵守一定的規則,為了敘述方便,我們采用表3.3的約定。第3章MCS-51指令系統表表3.3 指令描述約定指令描述約定 符 號 含 義 Rn 表示當前選定寄存器組的工作寄存器R0R7 Ri 表示作為間接尋址的地址指針R0R1 #data 表示 8 位立即數,即 00HFFH #data16 表示 16 位立即數,即 0000HFFFFH addr16 表示 16 位地址,用于 64 K 范圍內尋址 addr11
33、 表示 11 位地址,用于 2 K 范圍內尋址 direct 8 位直接地址,可以是內部 RAM 區的某一單元或某一專用功能寄存器的地址 Rel 帶符號的 8 位偏移量(-128+127) Bit 位尋址區的直接尋址位 (X) X 地址單元中的內容,或 X 作為間接尋址寄存器時所指單元的內容 將后面的內容傳送到前面去 第3章MCS-51指令系統3.3.2 數據傳送類指令數據傳送類指令 數據傳送指令是MCS-51單片機匯編語言程序設計中使用最頻繁的指令,包括內部RAM、寄存器、外部RAM以及程序存儲器之間的數據傳送。 數據傳送操作是指把數據從源地址傳送到目的地址,源地址內容不變,即第3章MCS-
34、51指令系統數據傳送類指令分類如圖3.8所示. 圖3.8 數據傳送指令分類第3章MCS-51指令系統1. 內部內部8位數據傳送指令位數據傳送指令(15條條)內部8位數據傳送指令共15條,主要用于MCS-51單片機內部RAM與寄存器之間的數據傳送。指令基本格式: MOV ,1) 以累加器A為目的地址的傳送指令(4條)助記符格式 機器碼(B) 相應操作 指令說明 機器周期 MOV A,Rn 11101rrr ARn n=07,rrr=000111 1 MOV A,direct 11100101 direct A (direct) 1 MOV A,Ri 1110011i A (Ri) i=0,1 1
35、 MOV A,#data 01110100 data A #data 1 第3章MCS-51指令系統例3.1 已知相應單元的內容如下,請指出每條指令執行后相應單元內容的變化。第3章MCS-51指令系統(1) MOV A,#20H (2) MOV A,40H(3) MOV A,R0(4) MOV A,R0解:(1) MOV A,#20H執行后A=20H。(2) MOV A,40H執行后A=30H。(3) MOV A,R0執行后A=50H。(4) MOV A,R0執行后A=10H。第3章MCS-51指令系統助記符格式 機器碼(B) 相應操作 指令說明 機器周期 MOV Rn,A 11111rrr
36、Rn A n=07,rrr=000111 1 MOV Rn,direct 10101rrr direct Rn (direct) n=07,rrr=000111 1 MOV Rn,#data 01111rrr data Rn #data n=07,rrr=000111 1 2) 以Rn為目的地址的傳送指令(3條)第3章MCS-51指令系統3) 以直接地址為目的地址的傳送指令(5條)助記符格式 機器碼(B) 相應操作 指令說明 機器周期 MOV direct,A 11111010 direct (direct) A 1 MOV direct,Rn 10001rrr direct (direct
37、)Rn n=07, rrr=000111 1 MOV direct2,direct1 10000101 direct1 direct2 (direct2) direct1 2 MOV direct,Ri 1000011i direct (direct )(Ri) i=0,1 2 MOV direct,#data 01110101 direct data (direct)#data 2 注意:以上傳送指令的結果不影響程序狀態字寄存器PSW標志。第3章MCS-51指令系統4) 以寄存器間接地址為目的地址的傳送指令(3條)助記符格式 機器碼(B) 相應操作 指令說明 機器周期 MOV Ri,A 11
38、11011i (Ri)A i=0,1 1 MOV Ri,direct 1110011i direct (Ri)(direct) 2 MOV Ri,#data 0111010i data (Ri)#data 1 注意:以上傳送指令的結果不影響程序狀態字寄存器PSW標志。第3章MCS-51指令系統例3.2 已知相應單元的內容如下,請指出下列指令執行后各單元內容相應的變化。(1) MOV A,R6 (2) MOV R6,70H(3) MOV 70H,50H(4) MOV 40H,R0(5) MOV R1,#88H第3章MCS-51指令系統第3章MCS-51指令系統解:解:(1) MOV A,R6執行
39、后A=30H。(2) MOV R6,70H執行后R6=40H。(3) MOV 70H,50H執行后(70H)=60H。(4) MOV 40H,R0執行后(40H)=60H。(5) MOV R1,#88H執行后(66H)=88H。第3章MCS-51指令系統助記符格式 機器碼(B) 相應操作 指令說明 機器周期 MOV DPTR,#data16 10010000 data158 data70 (DPTR) #data16 把 16 位常數裝入數據指針 2 注意:以上指令結果不影響程序狀態字寄存器PSW標志。2. 16位數據傳送指令位數據傳送指令(1條條)第3章MCS-51指令系統3. 外部數據傳送
40、指令外部數據傳送指令(4條條)助記符格式 機器碼(B) 相應操作 指令說明 機器周期 MOVX A,DPTR 11100000 A(DPTR) 把DPTR 所對應的外部 RAM 地址中的內容傳送給累加器 A 2 MOVX A,Ri 1110001i A (Ri) i=0,1 2 MOVX DPTR,A 11110000 (DPTR) A 結果不影響 P 標志 2 MOVX Ri,A 1110001i (Ri) A i=0,1,結果不影響 P 標志 2 注意: 外部RAM只能通過累加器A進行數據傳送。 累加器A與外部RAM之間傳送數據時只能用間接尋址方式,間接尋址寄存器為DPTR、R0、R1。
41、以上傳送指令結果(未注明的)通常影響程序狀態字寄存器PSW的P標志。第3章MCS-51指令系統例3.3 把外部數據存儲器2040H單元中的數據傳送到外部數據存儲器2560H單元中去。解:MOV DPTR,#2040HMOVX A,DPTR;先將2040H單元的內容傳送到累加器A中MOV DPTR,#2560HMOVX DPTR,A;再將累加器A中的內容傳送到2560H單元中第3章MCS-51指令系統助記符格式 機器碼(B) 相應操作 指令說明 機器周期 XCH A,Rn 11001rrr ARn A 與 Rn 內容互換 1 XCH A,direct 11000101 direct A(dire
42、ct) 1 XCH A,Ri 1100011i A(Ri) i=0,1 1 注意:以上指令結果影響程序狀態字寄存器PSW的P標志。2) 低半字節交換指令(1 條) 助記符格式 機器碼(B) 相應操作 指令說明 機器周期 XCHD A,Ri 1101011i A30(Ri)30 低 4 位交換,高 4 位不變 1 注意:以上指令結果影響程序狀態字寄存器 PSW 的 P 標志。 3) 累加器 A 中高 4 位和低 4 位交換(1 條) 助記符格式 機器碼(B) 相應操作 指令說明 機器周期 SWAP A 11000100 A 30A74 高、低 4 位互相交換 1 注意:以上指令結果不影響程序狀態
43、字寄存器 PSW 標志。 4. 交換和查表類指令交換和查表類指令(9條條)1) 字節交換指令(3條)第3章MCS-51指令系統例3.4 設內部數據存儲區2AH、2BH單元中連續存放有4個BCD碼(1個BCD碼占4位),試編寫一程序把這4個BCD碼倒序排序,即第3章MCS-51指令系統解:MOV R0,#2AH;將立即數2AH傳送到寄存器R0中 MOV A,R0;將2AH單元的內容傳送到累加器A中 SWAP A;將累加器A中的高4位與低4位交換 MOV R0,A;將累加器A的內容傳送到2AH單元中 MOV R1,#2BH MOV A,R1;將2BH單元的內容傳送到累加器A中 SWAP A ;將累
44、加器A中的高4位與低4位交換XCH A,R0;將累加器A中的內容與2AH單元的內容交換 MOV R1,A;將累加器A的內容傳送到2BH單元第3章MCS-51指令系統助記符格式 機器碼(B) 相應操作 指令說明 機器周期 MOVC A,A+PC 10000011 A (A+PC) A+PC 所指外部程序存儲單元內容送 A 2 MOVC A,A+DPTR 10010011 A (A+DPTR) A+DPTR 所指外部程序存儲單元內容送 A 2 注意: 以上指令結果影響程序狀態字寄存器PSW的P標志。 查表指令用于查找存放在程序存儲器中的表格。4) 查表指令(2條)第3章MCS-51指令系統5) 堆
45、棧操作指令(2條)助記符格式 機器碼(B) 相應操作 指令說明 機器周期 PUSH direct 11000000 direct SPSP+1 (SP)(direct) 將 SP 加 1,然后將源地址單元中的數傳送到 SP 所指示的單元中去 2 POP direct 11010000 direct (direct) (SP) SPSP-1 將 SP 所指示的單元中的數傳送到direct 地址單元中,然后 SPSP-1 2 第3章MCS-51指令系統注意: 堆棧是用戶自己設定的內部RAM中的一塊專用存儲區,使用時一定先設堆棧指針,堆棧指針缺省為SP=07H。 堆棧遵循后進先出的原則安排數據。 堆
46、棧操作必須是字節操作,且只能直接尋址。將累加器A入棧、出棧指令可以寫成:PUSH/POP ACC 或 PUSH/POP 0E0H而不能寫成:PUSH/POP A 堆棧通常用于臨時保護數據及子程序調用時保護現場和恢復現場。 以上指令結果不影響程序狀態字寄存器PSW標志。第3章MCS-51指令系統例3.5 設堆棧指針為30H,把累加器A和DPTR中的內容壓入,然后根據需要再把它們彈出,編寫實現該功能的程序段。解: MOV SP,#30H ;設置堆棧指針,SP=30H為棧底地址PUSHACC ;SP+1SP,SP=31H,ACC (SP)PUSH DPH ;SP+1SP,SP=32H,DPH (SP
47、)PUSH DPL ;SP+1SP,SP=33H,DPL (SP)POP DPL ;(SP)DPL,SP-1SP,SP=32HPOP DPH;(SP)DPH,SP-1SP,SP=31HPOP ACC;(SP)ACC,SP-1SP,SP=30H第3章MCS-51指令系統3.3.3 算術運算類指令算術運算類指令算術運算類指令分類如圖3.9所示。圖3.9 算術運算類指令分類第3章MCS-51指令系統1. 加、減法指令加、減法指令(22條條)1) 加法指令(8條)助記符格式 機器碼(B) 相應操作 指令說明 機器周期 ADD A,Rn 00101rrr AA+Rn n=07,rrr=000111 1
48、ADD A,direct 00100101 AA+(direct) 1 ADD A,Ri 0010011i AA+(Ri) i=0,1 1 ADD A,#data 00100100 data AA+#data 1 ADDC A,Rn 00111rrr AA+Rn+CY n=07,rrr=000111 1 ADDC A,direct 00110101 direct AA+(direct)+CY 1 ADDC A,Ri 0011011i AA+(Ri)+CY i=0,1 1 ADDC A,#data 00110100 data AA+#data+CY 1 第3章MCS-51指令系統2) 減法指令(
49、4條)助記符格式 機器碼(B) 相應操作 指令說明 機器周期 SUBB A,Rn 1001rrr AA-Rn-CY n=07,rrr=000111 1 SUBB A,direct 10010101 direct AA-(direct)-CY 1 SUBB A,Ri 1001011i AA- (Ri)-CY i=0,1 1 SUBB A,#data 10010100 data AA-#data-CY 1 注意: 減法指令中沒有不帶借位的減法指令,所以在需要時,必須先將CY清0。 指令執行結果均在累加器A中。 以上指令結果均影響程序狀態字寄存器PSW的CY、OV、AC和P標志。第3章MCS-51指
50、令系統 高 8 位 低 8 位 1 2 A 4 H A4H + E7H = 8BH 進位 1 + 0 F E 7 H 12H + 0FH + 1 = 22H 2 2 8 B 進位 1 1 1 加法指令 ADDC ADD 例3.6 編寫計算12A4H+0FE7H的程序,將結果存入內部RAM 41H和40H單元,40H存低8位,41H存高8位。解:單片機指令系統中只提供了8位的加減法運算指令,兩個16位數(雙字節)相加可分為兩步進行,第一步先對低8位相加,第二步再對高8位相加。第3章MCS-51指令系統 程序如下:MOV A,#0A4H ;被加數低8位AADD A,#0E7H ;加數低8位E7H與
51、之相加,A=8BH,CY=1MOV 40H,A;A(40H),存低8位結果MOV A,#12H ;被加數高8位AADDC A,#0FH;加數高8位+A+CY,A=22HMOV 41H,A;存高8位運算結果第3章MCS-51指令系統注意: 該指令結果影響程序狀態字寄存器PSW的CY、OV、AC和P標志。3) BCD碼調整指令(1條)第3章MCS-51指令系統 BCD(Binary Coded Decimal)碼是用二進制形式表示十進制數,例如十進制數45的BCD碼形式為45H。BCD碼只是一種表示形式,與其數值沒有關系。BCD碼用4位二進制碼表示一位十進制數,這4位二進制數的權為8421,所以B
52、CD碼又稱為8421碼。十進制數碼09所對應的BCD碼如表3.4所示。表表3.4 十進制數碼與十進制數碼與BCD碼的對應表碼的對應表十進制數碼 0 1 2 3 4 5 6 7 8 9 二進制碼 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 第3章MCS-51指令系統在表3.4中,用4位二進制數表示一個十進制數位,例如56D和87D的BCD碼表示為0101 0110 (56D)1000 0111 (87D)0001 0100 0011 (143D) DA A指令將A中的二進制碼自動調整為BCD碼。 DA A指令只能跟在ADD或ADDC加法指令
53、后,不適用于減法。第3章MCS-51指令系統例3.7 說明指令MOV A,#05H和ADD A,#08H及DA A的執行結果。解:MOV A,#05H ;05HA ADD A,#08H ;05H+08HA,A=0DH DA A ;自動調整為BCD碼,A=13H第3章MCS-51指令系統4) 加1減1指令(9條)助記符格式 機器碼(B) 相應操作 指令說明 機器周期 INC A 00000100 AA+1 影響 PSW 的 P 標志 1 INC Rn 00001rrr RnRn+1 n=07,rrr=000111 1 INC direct 00000101 direct (direct)(dir
54、ect)+1 1 INC Ri 0000011i (Ri)(Ri)+1 i=0,1 1 INC DPTR 10100011 DPTRDPTR+1 2 DEC A 00010100 AA-1 影響 PSW 的 P 標志 1 DEC Rn 00011rrr RnRn-1 n=07,rrr=000111 1 DEC direct 00010101 direct (direct)(direct)-1 1 DEC Ri 0001011i (Ri)(Ri)-1 i=0,1 1 注意:以上指令結果通常不影響程序狀態字寄存器PSW。第3章MCS-51指令系統例3.8 分別指出指令INC R0和INC R0的執
55、行結果。設R0=30H,(30H)=00H。解:INC R0 ;R0+1=30H+1=31HR0,R0=31H INC R0 ;(R0)+1=(30H)+1(R0),(30H)=01H,;R0中內容不變第3章MCS-51指令系統2. 乘、除法指令乘、除法指令1) 乘法指令(1條)助記符格式 機器碼(B) 相應操作 指令說明 機器周期 MUL AB 10100100 BAAB 無符號數相乘,乘積高 8 位存 B,低8 位存 A 4 注意:乘法指令結果影響程序狀態字寄存器PSW的OV(積超過0FFH則置1,否則為0)和CY(總是清0)以及P標志。第3章MCS-51指令系統2) 除法指令(1條)助記
56、符格式 機器碼(B) 相應操作 指令說明 機器周期 DIV AB 10000100 AA/B 的商 BA/B 的余數 無符號數相除,商存 A,余數存 B 4 注意: 除法指令結果影響程序狀態字寄存器PSW的OV(除數為0則置1,否則為0)和CY(總是清0)以及P標志。 當除數為0時結果不能確定。第3章MCS-51指令系統3.3.4 邏輯運算及移位類指令邏輯運算及移位類指令邏輯運算及移位類指令邏輯運算指令循環移位指令(4條):RL、RLC、RR、RRC邏輯與指令(6條):ANL邏輯或指令(6條):ORL邏輯異或指令(6條):XRL累加器A清0和取反指令(2條):CLR、CPL邏輯運算及移位類指令
57、分類如圖3.10所示。第3章MCS-51指令系統圖3.10 邏輯運算及移位類指令分類第3章MCS-51指令系統1. 邏輯運算指令邏輯運算指令(20條條)1) 邏輯與指令(6條)助記符格式 機器碼(B) 相應操作 指令說明 機器周期 ANL A,direct 01010101 direct AA(direct) 按位相與 1 ANL A,Rn 01011rrr AARn n=07,rrr=000111 1 ANL A,Ri 0101011i AA(Ri) i=0,1 1 ANL A,#data 01010100 data AA#data 1 ANL direct,A 01010010 direc
58、t (direct)(direct)A 不影響 PSW 的 P 標志 1 ANL direct, #data 01010011 direct data (direct)(direct)#data 不影響 PSW 的 P 標志 2 注意: 以上指令結果通常影響程序狀態字寄存器PSW的P標志。 邏輯與指令通常用于將一個字節中的指定位清0,其它位不變。第3章MCS-51指令系統2) 邏輯或指令(6條)助記符格式 機器碼(B) 相應操作 指令說明 機器周期 ORL A,direct 01000101 direct AA(direct) 按位相或 1 ORL A,Rn 01001rrr AARn n=0
59、7,rrr=000111 1 ORL A,Ri 0100011i AA(Ri) i=0,1 1 ORL A,#data 01000100 data AA#data 1 ORL direct,A 01000010 direct (direct)(direct)A 不影響 PSW 的 P 標志 1 ORL direct,#data 01000011 direct data (direct) (direct)#data 不影響 PSW 的 P 標志 2 注意: 以上指令結果通常影響程序狀態字寄存器PSW的P標志。 邏輯或指令通常用于將一個字節中的指定位置1,其余位不變。第3章MCS-51指令系統3)
60、 邏輯異或指令(6條)助記符格式 機器碼(B) 相應操作 指令說明 機器周期 XRL A,direct 01100101 direct AA(direct) 按位相異或 1 XRL A,Rn 01101rrr AARn n=07,rrr=000111 1 XRL A,Ri 0110011i AA (Ri) i=0,1 1 XRL A,#data 01100100 data AA#data 1 XRL direct,A 01100010 direct (direct)(direct)A 不影響 PSW 的 P 標志 1 XRL direct,#data 01100011 direct data
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年初級銀行從業資格之初級個人理財題庫綜合試卷A卷附答案
- 提高生產連續性的措施與方法計劃
- 冷凍半成品轉讓合同范例
- 針對不同性格員工的管理策略計劃
- 農村荒山購買合同樣本
- 與超市合伙合同標準文本
- 與員工勞務派遣合同樣本
- 全職保姆雇用合同樣本
- 兌fan店合同樣本
- 臨街網吧轉讓合同范例
- 配電變壓器運行管理制度
- 不可gdqwz01-ae001l01eel cl0501rev.0物料電力電纜表
- 應急管理概論-理論與實踐電子教案完整版
- 幼兒繪本故事:波西和皮普大怪獸
- 保安隊排班表
- (完整版)ERCP并發癥及應急預案
- AD域部署方案完整版
- T∕CAGHP 066-2019 危巖落石柔性防護網工程技術規范(試行)
- 初一數學趣味競賽試題
- 微機ATX電源電路的工作原理與維修
- 2019JGJ196塔式起重機安裝使用拆卸安全技術規程
評論
0/150
提交評論