發布日期:2022-04-17 點擊率:91
一、傳送類指令
(1)片內數據傳送指令 (16條)
此類指令參入的源操作數和目的操作數有 #data/A/Rn/@Ri/direct 五個,其不同組合,共有 15 條指令
(2)片外數據傳送指令 (4條)
當你想把一個數送到單片機外部擴展 RAM 的某個單元或外部擴展 I/O 口某個端口,或者你想從該 單元、端口將數據取回到單片機內部的時候,就要用到片外數據傳送指令。
MOVX A , @Ri ; A ← ((Ri)) 片外
MOVX @Ri , A ; (Ri) 片外← A
MOVX A , @DPTR ; A ← ((DPTR)) 片外
MOVX @DPTR , A ; (DPTR) 片外← A
單片機與外部數據存儲器數據傳送采用兩種尋址方式,這兩種尋址形式都是間接尋址。一種是單字節尋址 @Ri ,一種是雙字節尋址 @DPTR ,另一個操作數是 A . 共有 4 條指令。
(3)數據交換指令(5條)
① 指令: XCH A ,〈 byte 〉
功能:交換累加器與字節變量中的數據。
XCH 指令把指定字節的內容裝入累加器 A 中,同時把累加器中原來的內容寫入指定的字節中。源操作數有 Rn/direct/@Ri, 目的操作數是 A, 共三條指令。
例 2.5 設 RO 寄存器內容為 20H ,累加器 A 內容為 3FH ,內部 RAM 的 20H 單元內容為
75H ,若執行指令: XCH A , @RO 則結果為:( 20 ) =3FH ,( A ) =75H
② 指令: XCHD A, @Ri
功能:低半字節數據交換,執行操作( A3-0 )←→(( Ri ) 3-0 )
說明:累加器 A 中的低 4 位與由指定的寄存器間接尋址的內部 RAM 單元的低 4 位數據進行交換。該指令不影響各寄存器的高 4 位,也不影響標志位。
例 設 RO 內容為 20H ,累加器內容為 36H ,內部 RAM 的 20H 單元內容為 75H ,若執行指令 XCHD A , @RO
其結果為 ( 20H ) =0111011=76H
( A ) =00110101B=35H
③ 指令: SWAP A
A 的高四位和其低四位交換,
如 : 當 A 內容為 36H 時執行 SWAP A 后 A 為 63H
(4)堆棧指令
① 指令 PUSH direct 功能:把程序的中間數據送入堆棧,稱為進棧。
說明:首先棧指針自動加 1 ,執行( SP )←( SP ) +1 將棧指針移向堆棧中的無數 據字節,然后將直接地址( direct )單元的內容送入 SP 所指向的棧單元中,執行( SP )←( direct ),不影響標志位。
例 設堆棧指針為 09H ,數據指針內容為 0123H ,試分析下列指令的執行結果。
PUSH DPL
PUSH DPH
執行結果為:( 0AH ) =23H ,
( 0BH ) =01H ,( SP ) =0BH
② 指令: POP direct 功能:把堆棧中的中間數據送入目的字節,稱為出棧。
說明:讀出由棧指針尋址的內部 RAM 單元內容。送到指定的直接尋址的字節單元,然后棧指針自動減 1 ,即執行操作:
( direct )← ((SP)),(SP) ← (SP)-1; 指令執行不影響標志位。
例 設( SP ) =32H ,內部 RAM 的 31H ,32H 單元中的內容分別為 23H , 01H ,試分析下列指令的執行結果。
下一篇: PLC、DCS、FCS三大控
上一篇: 索爾維全系列Solef?PV