1. MOV - Di chuyển dữ liệu
Cú pháp: MOV Đích, Nguồn
MOV SegReg, Reg16 MOV Reg16, SegReg
Nguồn (toán hạng nguồn) : Reg, Mem, Immed.
Ý nghĩa: Sao chép dữ liệu (xác định bởi toán hạng nguồn) vào vùng nhớ hoặc thanh
ghi (xác định bởi toán hạng đích). Sau khi thực hiện xong thì giá trị toán hạng nguồn và toán hạng đích bằng nhau.
Lưu ý: - Lệnh MOV không ảnh hưởng đến thanh ghi trạng thái.
- Một trong hai toán hạng phải là thanh ghi.
Ví dụ: MOV CX, BX ; Sao chép nội dung thanh ghi BX vào thanh ghi CX. Sau
khi thực hiện xong, BX=CX. MOV DX, 1234h ; DL ← 34h, DH ← 12h MOV DS, AX ; DS ← AX
MOV AH, [1234h] ; AH ← M[DS:1234h]
MOV [1235h], DX ; M[DS:1235h] ← DL, M[DS:1236h] ← DH MOV AH, CX ; SAI vì AH có 8 bit trong khi CX là 16 bit.
Bộ Nhớ DS:1237h DS:1236h DS:1235h DX DH DL DS:1234h Hình 3.1: Mô tả lệnh MOV [1235h], DX
Hình 3.1 mô tả cách sao chép dữ liệu 16 bit giữa thanh ghi và ô nhớ. Byte thấp của dữ liệu trong DX (là DL) đưa vào ô nhớ địa chỉ thấp (DS:1235h), còn byte cao trong DX (là DH) đưa vào ô nhớ có địa chỉ cao hơn (DS:1236h)
2. XCHG – Hoán chuyển dữ liệu
Cú pháp: XCHG Đích, Nguồn ; Đích ↔ Nguồn
Nguồn, đích: Reg, Mem.
Ý nghĩa: Lệnh XCHG hoán chuyển dữ liệu giữa nguồn và đích. Cả hai toán hạng
không đồng thời là Mem.
Ví dụ: XCHG AL, BH ; AL ↔ BH
XCHG AX, [1235h] ; AL ↔ M[DS:1235h], AH ↔ M[DS:1236h] XCHG bienA, bienB ; SAI vì bienA và bienB đều là vùng nhớ. 3. LEA - Lấy địa chỉ độ dời
Cú pháp: LEA Reg16, Mem16 ; Reg16 ← Địa chỉ độ dời
Ý nghĩa: Lấy địa chỉ độ dời của biến hay nhãn (mem16) đưa vào thanh ghi đích Reg16.
Ví dụ: LEA DX, bienA ; Lấy độ dời của biến bienA lưu vào DX
Theo hình 3.1, bienA được cấp phát tại vùng nhớ có địa chỉ độ dời là 1A2Bh, sau khi thực hiện lệnh thì thanh ghi DX = 1A2Bh.
Bộ Nhớ Địa Chỉ
DS:1A2C6h
bienA→ DS:1A2Bh
DX 1Ah 2Bh DS:1A2Ah
Hình 3.2: Mô tả lệnh LEA DX, bienA