CHƯƠNG 6 : NGÔN NGỮ ASSEMBLY
3. Các lệnh điều khiển
3.3 Lệnh chuyển hướng chương trình
a. Nhảy có điều kiện
Cú pháp: Jxxx nhãn_đích Công việc Điều kiện đúng sai
94
Nếu điều kiện nhảy được thoả mãn thì sẽ nhảy đến nhãn_đích và thi hành lệnh này. Nhãn có thể trước hoặc sau. Trước không quá 126 byte, sau không quá 127 byte.
Bảng các lệnh nhảy
Nhảy có dấu
Kí hiệu Chức năng điều kiện nhảy
Jg/jnle nhảy nếu lớn hơn
nhảy nếu không nhỏ hơn hay bằng
Zf = 0, sf = 0f
Jge/jnl nhảy nếu lớn hơn hay bằng
nhảy nếu không nhỏ hơn
Sf = 0f
Jl/jnge nhảy nếu nhỏ hơn
nhảy nếu không lớn hơn hay bằng
Sf <> 0f
Jle/jng nhảy nếu nhỏ hơn hay bằng
nhảy nếu không lớn hơn
Zf = 1 hay sf = 0f nhảy không dấu
Ja/jnbe nhảy nếu lớn hơn
nhảy nếu không nhỏ hơn hay bằng
Cf = 0 và zf = 0
Jae/jnb nhảy nếu lớn hơn hay bằng
nhảy nếu không nhỏ hơn
Cf = 0
Jb/jnae nhảy nếu nhỏ hơn
nhảy nếu không lớn hơn hay bằng
Cf = 1
nhảy điều kiện đơn
Je/jz nhảy nếu bằng
nhảy nếu bằng 0
Zf = 1
Jne/jnz nhảy nếu không bằng
nhảy nếu không bằng 0
Zf = 0
b. Nhảy không điều kiện
Cú pháp:
JMP nhãn_đích
Nhãn đích nằm trong cùng đoạn với JMP, vượt xa 126 byte đối với các lệnh nhảy có điều kiện.
c. Lệnh logic
Trong nhóm này ta quan tâm đến các lệnh sau:AND, OR,XOR,NOT * AND
Cú pháp
AND đích,nguồn
Đích, nguồn phải có điều kiện: - cùng độ dài
- không phải đồng thời là 2 ô nhớ, 2 thanh ghi đoạn.
Tác dụng: thường dùng để che đi hay giữ lại một vài bit nào đó của toán hạng đích Ví dụ: AND AX,0Fh
* OR Cú pháp
95 OR đích,nguồn
Đích, nguồn phải có điều kiện: - cùng độ dài
- không phải đồng thời là 2 ô nhớ, 2 thanh ghi đoạn.
Tác dụng: thường dùng để thiết lập một vài bit nào đó của toán hạng đích bằng cách cộng logic toán hạng đó với toán hạng tức thời mà các bit 1 có vị trí tương ứng với bít cần lập. Ví dụ: OR AL,BL
OR AL,0F h * NOT
Cú pháp
NOT toanhang
Tác dụng: lấy phủ định của toán hạng ( dùng để dảo bít một toán hay hạng lấy bù1) * XOR : hoặc (loại trừ toán hạng)
Cú pháp
XOR toanhang, toanhang
Tác dụng: dùng để xóa về 0 một thanh ghi nào đó. Ví dụ: XOR AX,AX ;xóa thanh ghi AX về 0
d. Nhóm lệnh dịch chuyển và quay
* SHL : Shift – left (dịch trái) Cú pháp
SHL đích,CL
Tác dụng: dịch các bit của toán hạng đích sang trái CL vị trí, một giá trị 0 được đưa vào bên phải của toán hạng đích, còn bít MSB được đưa vào CF.
* SHR: Shift – Right; dịch phải Cú pháp
SHR đích,CL
Tác dụng: dịch các bit của toán hạng đích sang phải CL vị trí, một giá trị 0 được đưa vào bít MSB còn giá trị của bit LSB được chuyển vào cờ CF.
* ROL: Rotation Left- quay trái Cú pháp
ROL đích,CL
Dịch các bit sang bên trái. Bit MSB được đưa và LSB và cờ CF. muốn quay nhiều lần thì chứa trong CL 0 CF 0 0 CF 15 15 0
96 * ROR: Rotation Right – quay phải
Cú pháp ROR đích, CL
Dịch sang bên phải. bit LSB được đưa vào MSB và cờ CF. muốn quay nhiều lần thì chứa trong CL.