Chương7
NHÓM LỆNH CHUYỂN ĐiỀU
KHIỂN
Nhómlệnhchuyển điềukhiển
• Lệnhnhảykhông điềukiện
JMP
• Lệnhnhảycó điềukiện
JB/ JNAEJL / JNGE
JBE / JNAJLE / JNG
JA / JNBEJG / JNLE
JAE / JNB JLE / JNL
JE/ JZJNE/ JNZ
Số
không
dấu
Số
có
dấu
Nhảytheokiểukhôngdấu
Nhảytheokiểucódấu
Nhảytheokiểu đơn
Nhómlệnhchuyển điềukhiển(t.t)
• Lệnhso sánh
CMP
• Lệnhlặp
LOOP
• Cáclệnhkhác
JP/JNP,JS/JNS, JO/JNO
JC / JNC, JZ/ JNZ
JCXZ
LệnhJMP
• Dạng lệnh :
JMP shortlabel JMP mem16
JMP nearlabel JMP mem32
JMP farlabel JMP reg16
• Giải thích :
shortlabel : IP ← IP + độ dời
nearlabel : IP ← địa chỉ
farlabel : CS ← địa chỉ segment
IP ← địa chỉ offset
LệnhJMP (t.t.)
• Dạng lệnh :
JMP shortlabel JMP mem16
JMP nearlabel JMP mem32
JMP farlabel JMP reg16
• Giải thích :
reg16 : IP ← reg16
mem16 : IP ← [địa chỉ +1,địa chỉ]
mem32 : CS ← [địa chỉ +3,địa chỉ+2]
IP ← [địa chỉ +1,địa chỉ]
LệnhJMP (t.t.)
• Lệnh nhảy đến nhãn ngắn shortlabel làlệnh
nhảy tương đối. Nơi đến phải nằm trong phạm
vi từ -128 đến +127 so với vị trícủa lệnh nhảy.
Toán hạng nguồn trong lệnh làsốcódấuđể
cộng thêm vào thanh ghi IP.
• Vídụ: JMP SHORT 18h
JMP 0F008h
JMP DWORD PTR [3000h]
Lệnh nhảy có điều kiện
• Dạng lệnh : Jcond shortlabel
• Giải thích : Nếu thỏa điều kiện thìnhảy,
ngược lại không làm gìcả(qua lệnh kế).
• Lệnh nhảy có điều kiện dùng trạng thái các cờ
để làm điều kiện
Cáclệnhnhảycó điềukiện
Vídụ
MOV CX,3 ; thực hiện một vòng lặp làm 3 lần.
MOV AX,0
Nhan: ADD AX,12
DEC CX
JNZ Nhan ; nhảy đến lệnh tại vị trí“Nhan”nếu CX ≠ 0.
MOV [3000h],AX
LệnhCMP
• Dạng lệnh :
CMP reg,reg CMP reg,immed
CMP mem,reg CMP mem,immed
CMP reg,mem CMP accum,immed
• Giải thích : phépso sánhthực hiện bằngcáchtrừ
toán hạng đích cho toán hạng nguồn, không lưu lại
kết quả màchỉ giữ lại tác động của phép trừ lên các
cờ.
• Vídụ:
CMP AL,8 ; AL -8
CMP WORD PTR [1000h], 3 ; [1001h,1000h] -3
LệnhLOOP
• Dạng lệnh:LOOP shortlabel
• Giải thích : giảm CX, lặp (nhảy) nếu CX ≠ 0
Lặp vòng không điều kiệnvớiCX giữ số lần
lặp.
• Vídụ:
MOVCX,3
MOV AX,0
Nhan: ADD AX,12
LOOP Nhan
MOV [3000h],AX
LOOPE/LOOPZ
• Dạnglệnh:
LOOPE shortlabel
LOOPZ shortlabel
• Giảithích: giảmCX, lặpvòng(nhảy) nếu
CX≠0 vàZF = 1
LOOPNE/LOOPNZ
• Dạnglệnh:
LOOPNE shortlabel
LOOPNZ shortlabel
• Giảithích: giảmCX, lặpvòng(nhảy) nếu
CX≠0 vàZF = 0
LệnhJCXZ
• Dạnglệnh: JCXZ shortlabel
• Giảithích: NếuCX = 0 thìnhảy
• Vídụ: tìmvịtríxuấthiệngiátrị 0 đầutiên
trongmảng100 byte ởđịachỉ DS:SI
MOV CX,100
MOV DI,SI
DEC DI
lap:INC DI
CMP byte ptr[DI],0
LOOPNE lap
JCXZ timthay
;xử lýkhôngtìmthấy
;….
JMP ketthuc
timthay: ;xử lý….
;…
ketthuc:
Lệnhlặp
Cấutrúctuầntự
•Cúpháp:
– Lệnh1
–Lệnh2
–……
– Lệnhn
![]()
CấutrúcIf –Then
![]()
CấutrúcIf –Then -Else