2. Các nhóm lệnh
2.3. Nhóm lệnh di chuyển dữ liệu
Các lệnh dịch chuyển dữ liệu trong những vùng nhớ nội thực thi 1 hoặc 2 chu kỳ máỵ Mẫu lệnh MOV <destination>, <source> cho phép di chuyển dữ liệu bất kỳ 2 vùng nhớ nào của RAM nội hoặc các vùng nhớ của các thanh ghi chức năng đặc biệt mà không thông qua thanh ghi Ạ
Vùng Ngăn xếp của 8951 chỉ chứa 128 byte RAM nội, nếu con trỏ Ngăn xếp SP đƣợc tăng quá địa chỉ 7FH thì các byte đƣợc PUSH vào sẽ mất đi và các byte POP
Các lệnh dịch chuyển bộ nhớ nội và bộ nhớ ngoại dùng sự định vị gián tiếp. Địa chỉ gián tiếp có thể dùng địa chỉ 1 byte (@ Ri) hoặc địa chỉ 2 byte (@ DPTR). Tất cả các lệnh dịch chuyển hoạt động trên toàn bộ nhớ ngoài thực thi trong 2 chu kỳ máy và dùng thanh ghi A làm toán hạng DESTINATION.
Việc đọc và ghi RAM ngoài (RD và WR) chỉ tích cực trong suốt quá trình thực thi của lệnh MOVX, còn bình thƣờng RD và WR không tích cực (mức 1).
Tất cả các lệnh dịch chuyển đều không ảnh hƣởng đến cờ. Hoạt động của từng lệnh đƣợc tóm tắt nhƣ sau:
MOV A,Rn ; (A)= (Rn)
MOV A, direct ; (A)= (direct)
MOV A, @ Ri ; (A)= ((Ri))
MOV A, # data ; (A):= data
MOV Rn, A ; (Rn)= (A)
MOV Rn, direct ; (Rn)= (direct) MOV Rn, # data ; (Rn)= data MOV direct, A ; (direct)= (A) MOV direct, Rn ; (direct)= (Rn) MOV direct, direct ; (direct)= (direct) MOV direct, @ Ri ; (direct)= ((Ri)) MOV direct, # data ; (direct)= data MOV @ Ri, A ; ((Ri)) = (A) MOV @ Ri, direct ; ((Ri)) = (direct) MOV @ Ri, # data ; ((Ri))= data
MOV DPTR, # data16 ; (DPTR) # data16 MOV A, @ A + DPTR ; (A) (A) + (DPTR)
MOV @A +PC ; (PC)= (PC) + 1 ;(A)= (A) + (PC)
MOVX A, @ Ri ;(A)= ((Ri))
MOVX A, @ DPTR ; (A)= ((DPTR))
MOVX @ Ri, A ; ((Ri)) = (A)
MOVX @ DPTR, A ; ((DPTR)) = (A)
PUSH direct ; Cất dữ liệu vào Ngăn xếp
; (SP)= (SP) + 1 ; (SP)= (Drirect)
POP direct ; Lấy từ Ngăn xếp ra direct
;(direct) ((SP)) ;(SP)= (SP) - 1
XCH A, Rn ;Đổi chổ nội dung của A với Rn
;(A)= (Rn)
XCH A, direct ;(A)= (direct)
XCH A, @ Ri ;(A)= ((Ri))
XCHD A, @ Ri ;Đổi chổ 4 bit thấp của (A) với ((Ri))
;(A3A0) ((Ri3Ri0))