1. AND, OR, XOR, TEST: Và, Hoặc, Cộng không nhớ, Kiểm tra bit
Cú pháp: AND đích, nguồn ; đích ← đích ∧ nguồn OR đích, nguồn ; đích ← đích ∨ nguồn XOR đích, nguồn ; đích ← đích ⊕ nguồn TEST đích, nguồn ; Cờ ← đích ∧ nguồn
Nguồn: Reg, Mem hay Immed.
Đích: Reg, Mem.
Ý nghĩa: Thực hiện phép toán logic (and, or, xor) theo từng bit tương ứng giữa toán hạng đích và toán hạng nguồn, lưu giữ kết quả ở toán hạng đích.
- Lệnh TEST thực hiện kiểm tra bit, giống lệnh AND nhưng không lưu giữ lại kết quả mà kết quả của phép toán chỉ ảnh hưởng đến các cờ trạng thái.
Ví dụ: MOV AL, 01101110b ; AL ← 01101110b
AND DL, 11000011b ; Xóa 4 bit giữa trong thanh ghi DL
TEST DH, 00010000b ; Kiểm tra giá trị của bit 4 trong thanh ghi DH. Kết quả kiểm tra sẽ ảnh hưởng lên cờ Zero (ZF)
2. NOT – Đảo bit (Lấy Bù 1)
Cú pháp: NOT đích ; đích ←đích
Đích: Reg, Mem
Ý nghĩa: Đảo ngược từng bit (hay lấy bù 1) toán hạng đích. Ví dụ: MOV AH, 0Fh ; AH ← 0Fh (00001111b)
NOT AH ; AH = 0F0h (11110000b) 3. SHL – Dịch trái logic (logical SHift Left)
Cú pháp: SHL đích, 1 ; dịch toán hạng đích sang trái 1 bit.
SHL đích, CL ; dịch sang trái CL bít
Đích: Reg, Mem
Ý nghĩa: Dịch toán hạng đích sang trái, có thể dịch 1 bit hay nhiều bit hơn (CL chứa số
bit dịch). LSB được nạp vào logic 0, còn MSB được dịch sang cờ Carry (CF).
CF 7 2 1 0
0
Hình 3.3: Dịch toán hạng đích 8 bit sang trái 1 bit Ví dụ: MOV AL, 01101101b ; AL = 01101101b
SHL AL, 1 ; AL = 11011010b và CF=0 4. SHR (logical shift right) dịch phải logic.
Cú pháp: SHR đích, 1 ; dịch trái toán hạng đích 1 bit.
SHR đích, CL ; dịch trái đích với số bít trong CL
Ý nghĩa: Giống lệnh SHL nhưng bay giờ dịch toán hạng đích sang phải
7 6 1 0 CF
0
Hình 3.4: Dịch toán hạng đích 8 bit sang phải 1 bit Ví dụ: MOV AL, 01101101b ; AL = 01101101b
SHR AL, 1 ; AL = 00110110b và CF=1 5. SAL (Shift arithmetic left): dịch trái số học
Cú pháp: SAL đích, 1 ; dịch toán hạng đích sang trái 1 bit.
SAL đích, CL ; dịch sang trái CL bít
Đích: Reg, Mem
Ý nghĩa: Lệnh nầy giống SHL nhưng LSB (bit thấp nhất) vừa được dịch lên bít 1 và
CF 7 2 1 0
Hình 3.5: Dịch toán hạng đích 8 bit sang trái 1 bit Ví dụ: MOV AL, 01101101b ; AL = 01101101b
SHL AL, 1 ; AL = 11011011b và CF=0 6. SAR (Shift arithmetic right) : dịch phải số học
Cú pháp: SAR đích, 1 ; dịch toán hạng đích sang trái 1 bit.
SAR đích, CL ; dịch sang trái CL bít
Đích: Reg, Mem
Ý nghĩa: Lệnh nầy giống SHR nhưng MSB (bit cao nhất) vừa được dịch xuống bit thấp
hơn và giữ nguyên (bảo toàn bit MSB – Bit dấu).
7 6 0 CF
Hình 3.6: Dịch toán hạng đích 8 bit sang phải 1 bit Ví dụ: MOV AL, 01101101b ; AL = 01101101b
SAR AL, 1 ; AL = 00110110b và CF=1 7. ROL (Rotate left) : quay vòng sang trái
Cú pháp: ROL đích, 1 ; quay vòng toán hạng đích sang trái 1 bit.
ROL đích, CL ; quay vòng sang trái số lần quay bằng CL.
Ý nghĩa: Giống SHL, nhưng thực hiện việc quay vòng, MSB dịch vào LSB
CF 7 2 1 0
Hình 3.7: Quay toán hạng đích 8 bit sang trái 1 bit Ví dụ: MOV AL, 01101101b ; AL = 01101101b
ROL AL, 1 ; AL = 11011010b và CF=0 8. ROR (Rotate right) : Quay vòng sang phải
Cú pháp: ROR đích, 1 ; Quay vòng toán hạng đích sang phải1 bit.
ROR đích, CL ; Quay vòng với số lần quay bằng CL
Đích: Reg, Mem
Ý nghĩa: Lệnh nầy giống ROL nhưng quay vòng sang phải, nghĩa là LSB (bit thấp
nhất) vừa được dịch đến MSB.
7 6 0 CF
Ví dụ: MOV AL, 01101101b ; AL = 01101101b
SAR AL, 1 ; AL = 00110110b và CF=1 9. RCL (Rotate through carry left): Quay trái qua cờ Carry
Cú pháp: RCL đích, 1 ; quay vòng TH. đích qua cờ sang trái 1 bit.
RCL đích, CL ; quay vòng qua cờ sang trái số lần bằng CL.
Ý nghĩa: Giống như lệnh ROL nhưng có sự tham gia của cờ carry (CF). Xem hình 3.9.
Như vậy CF cũng là 1 bit tham gia vào vòng quay
CF 7 2 1 0
Hình 3.9: Quay toán hạng đích 8 bit qua cờ sang trái 1 bit
10. RCR (Rotate through carry right): Quay vòng qua cờ sang phải
Cú pháp: RCR đích, 1 ; Quay vòng TH. đích qua cờ sang phải 1 bit. RCR đích, CL ; số lần quay bằng CL
Đích: Reg, Mem
Ý nghĩa: Lệnh nầy giống RCL nhưng quay vòng sang phải.
7 6 0 CF
Hình 3.10: Quay toán hạng đích 8 bit qua cờ sang phải 1 bit