Tải bản đầy đủ (.pdf) (40 trang)

Kiến trúc máy tính PHẦN II HỢP NGỮ - Chương 7 NHÓM LỆNH CHUYỂN ĐiỀU KHIỂN potx

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (505.81 KB, 40 trang )

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ố

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

×