複製鏈接
請複製以下鏈接發送給好友

數據交換指令

鎖定
數據交換指令是實現兩個操作數據之間的位置互換的指令,這兩個操作數可以是兩個寄存器操作數,或一個寄存器操作數與一個存儲器操作數,或兩個存儲器操作數,在多處理機中,也可以是一個寄存器操作數和一個共享存儲器操作數。數據交換指令實現了數據的雙向傳送,一條數據交換指令起到了三條數據傳送指令的作用 [1] 
中文名
數據交換指令
外文名
Data exchange instruction
學    科
計算機組成原理
定    義
實現兩個操作數據之間的位置互換
特    點
數據的雙向傳送
有關術語
數據傳送指令

數據交換指令簡介

數據交換指令是load/store指令的一種特例,它把一個寄存器單元的內容與寄存器內容交換;或把數據在兩個指定的目標軟組件之間進行交換,數據交換指令屬於一種數據傳送指令 [1]  。數據交換指令是一個原子操作(atomic operation),原子操作可以是一個步驟,也可以是多個操作步驟,但是其順序不可以被打亂,也不可以被切割而只執行其中的一部分。也就是説,在連續的總線操作中讀/寫一個存儲單元,在操作期間阻止其他任何指令對該存儲單元的讀/寫。在單片機彙編指令中,使用數據交換指令可以完成累加器A和內部RAM之間的字節或者半字節交換。字節交換是指令完成累加器A與內部RAM單元內容的全字節交換,形式如下:
彙編指令格式 指令編碼 週期數 尋址方式 操作
XCH A ,Rn 1100 1rrr 1 寄存器尋址 (A)<-->(Rn)
XCH A,direct 11000101 1 直接尋址 (A)<-->(direct)
XCH A,@Ri 1100011i 1 寄存器間接尋址 (A)<-->(Ri)

半字節交換是指累加器A與內部RAM單元內容的低4位交換,高4位內容不變,該操作隻影響標誌位P,形式如下:
彙編指令格式 指令編碼 週期數 尋址方式 操作
XCHD A,@Ri 1101011i 1 寄存器間接尋址 (A3~0<-->(Ri)3~0)

累加器自身半字節交換是完成累加器A內容的高4為與低4位交換,不影響PSW內容,代碼解釋如下:
彙編指令格式 指令編碼 週期數 尋址方式 操作
SWAP A 11000100 1 寄存器尋址 (A3~0<-->A7~4)

數據交換指令數據傳送指令

數據傳送指令是彙編語言程序設計中使用最頻繁也是最重要的一類指令。這類指令一般是把源操作數傳送到目的操作數,指令執行後,源操作數不變,目的操作數改為源操作數。常見的傳送類型發生在內部RAM之間,這類指令除了可以通過累加器進行傳送外,還可以在數據存儲器之間或工作寄存器與數據存儲器之間直接進行數據傳送,非常簡單方便。數據傳送指令1次可傳送1個數據或1批數據。傳送1批數據時,執行時間較長,在傳送過程中如果有中斷請求,往往允許暫時終止現行指令的執行而轉入中斷處理程序,處理完畢返回原程序後,再從該指令中止處繼續執行下去 [2] 

數據交換指令操作數

操作數是運算符作用於的實體,是表達式中的一個組成部分,它規定了指令中進行數字運算的量 。
操作數指出指令執行的操作所需要數據的來源。操作數是彙編語言指令的一個字段。在操作數這個字段中可以放操作數本身,也可以放操作地址,還可以放操作地址的計算方法。
通常一條指令均包含操作符和操作數。例如:在比較指令中操作符指定計算機做比較操作,操作數則指定進行比較的兩個數值。操作數是指令執行的參與者,也就是各種操作的對象.與之有關的是操作碼,所謂操作碼是説明計算機要執行哪種,如傳送,運算,移位,跳轉等操作,它是指令中不可缺少的組成部分。
寄存器操作數:指令要操作的數據存放在CPU中的寄存器裏,指令中給出寄存器名即可。
立即操作數:指令要操作的數據以常量的形式在指令中出現,稱為立即數,它只能作為源操作數 [3] 
參考資料
  • 1.    張鈞良.計算機組成原理:清華大學出版社,2003
  • 2.    張家祥,王麗紅.彙編程序中數據傳送的特點分析及應用[J].鄭州鐵路職業技術學院學報,2009,21(02):27-28.
  • 3.    何小海 嚴華.微機原理與接口技術:科學出版社,2006