Lệnh điều khiển nhảy và lặp
description
Transcript of Lệnh điều khiển nhảy và lặp
Cao đẳng kĩ thuật Cao Thắng
Các lệnh điều khiển nhảy và lặp 2
Nội dung
• Lệnh nhảy không điều kiện• Lệnh nhảy có điều kiện• Lệnh lặp
Cao đẳng kĩ thuật Cao Thắng
Các lệnh điều khiển nhảy và lặp 3
Nội dung
• Lệnh nhảy không điều kiện• Lệnh nhảy có điều kiện• Lệnh lặp
Cao đẳng kĩ thuật Cao Thắng
Các lệnh điều khiển nhảy và lặp 4
Nhãn
• Đại diện cho một vị trí trong chương trình.• Theo sau bởi dấu 2 chấm (:)
LEA DX, OFFSET MSGDisplayMessage:
MOV AH, 9INT 21h
Trong chương trình có nhãn trùng tên được không?
Cao đẳng kĩ thuật Cao Thắng
Các lệnh điều khiển nhảy và lặp 5
Lệnh nhảy không điều kiện
• Lệnh nhảy JMP (Jump)– Thay đổi thứ tự thực hiện lệnh trong chương trình– Cú pháp: JMP Nhãn
LEA DX, OFFSET MSG JMP DisplayMessage
MOV AH, 1INT 21h
DisplayMessage:MOV AH, 9INT 21h
Cao đẳng kĩ thuật Cao Thắng
Các lệnh điều khiển nhảy và lặp 6
Lệnh nhảy không điều kiện (tt)
• Demo về lệnh nhảy không điều kiện
Cao đẳng kĩ thuật Cao Thắng
Các lệnh điều khiển nhảy và lặp 7
Nội dung
• Lệnh nhảy không điều kiện• Lệnh nhảy có điều kiện• Lệnh lặp
Cao đẳng kĩ thuật Cao Thắng
Các lệnh điều khiển nhảy và lặp 8
Nhắc lại về thanh ghi cờ
• Là một thanh ghi• Cho biết
– Trạng thái CPU– Kết quả thực hiện lệnh
sau cùng
Kí hiệu Tên Thứ tự bit
OF Overflow Flag 11DF Direction Flag 10IF Interrupt Flag 9TF Trap Flag 8SF Sign Flag 7ZF Zero Flag 6AF Auxiliary Carry 4PF Parity Flag 2CF Carry Flag 0
Cao đẳng kĩ thuật Cao Thắng
Các lệnh điều khiển nhảy và lặp 9
Nhắc lại về thanh ghi cờ (tt)
• Cờ không ZF (Zero Flag)– Nếu kết quả thực hiện
lệnh là 0 ZF = 1– Ngược lại ZF = 0
• Cờ dấu SF (Sign Flag)– Kết quả là số âm SF = 1– Ngược lại SF = 0
MOV AL, 0 ; AL = 0SUB AL, 1 ; AL = -1, SF = 1ADD AL, 1 ; AL = 0, SF = 0
MOV AL, 0 ; AL = 0ADD AL, 1 ; AL = 1, ZF = 0SUB AL, 1 ; AL = 0, ZF = 1
Cao đẳng kĩ thuật Cao Thắng
Các lệnh điều khiển nhảy và lặp 10
Sự ảnh hưởng các lệnh đến cờ
• Các lệnh có ảnh hưởng– ADD– SUB – INC– DEC– …
• Các lệnh không ảnh hưởng tới cờMOV, XCHG, …
Cao đẳng kĩ thuật Cao Thắng
Các lệnh điều khiển nhảy và lặp 11
Lệnh CMP (compare)
• Cú pháp: CMP Đích, Nguồn– Đích = Nguồn: ZF = 1– Đich > Nguồn: SF = 0 (số có dấu), CF = 0 (số không dấu)– Đích < Nguồn SF = 1 (số có dấu), CF = 1 (số không dấu)
• Ví dụ: MOV AL, 10
CMP AL, 11 ; SF = 1
Cao đẳng kĩ thuật Cao Thắng
Các lệnh điều khiển nhảy và lặp 12
Lệnh nhảy có điều kiện
• Cú pháp: Jxx Nhãn
Jxx Nhãn<Lệnh kế tiếp>
Nhãn:…..
?
<Lệnh kế tiếp>
NhãnĐ
S
Cao đẳng kĩ thuật Cao Thắng
Các lệnh điều khiển nhảy và lặp 13
Lệnh nhảy có điều kiện (tt)
Lệnh Ý nghĩa Điều kiện
JZ Jump if Zero: Nhảy nếu bằng 0 ZF = 1
JE Jump if Equal: Nhảy nếu bằng ZF = 1
JL Jump if Less : Nhảy nếu nhỏ hơn (SF xor OF) = 1
JG Jump if Greater: Nhảy nếu lớn hơn ((SF xor OF) or ZF) = 0
JC Jump if Carry: Nhảy nếu có nhớ CF = 1
JO Jump if Overflow: Nhảy nếu tràn OF = 1
JP Jump if Parity: Nhảy nếu có bit kiểm PF = 1
JS Jump if Sign: Nhảy nếu có dấu SF = 1
Cao đẳng kĩ thuật Cao Thắng
Các lệnh điều khiển nhảy và lặp 14
Lệnh Ý nghĩa Điều kiện
JNZ Jump if Not Zero: Nhảy nếu khác 0 ZF = 1
JNE Jump if Not Equal: Nhảy nếu khác ZF = 1
JNL Jump if Not Less: Nhảy nếu không nhỏ hơn (SF xor OF) = 1
JNG Jump if Not Greater: Nhảy nếu không lớn hơn ((SF xor OF) or ZF) = 0
JNC Jump if Not Carry: Nhảy nếu không có nhớ CF = 1
JNO Jump if Not Overflow: Nhảy nếu không tràn OF = 1
JNP Jump if Not Parity: Nhảy nếu không có bit kiểm PF = 1
JNS Jump if Not Sign: Nhảy nếu không có dấu SF = 1
Lệnh nhảy có điều kiện (tt)
Cao đẳng kĩ thuật Cao Thắng
Các lệnh điều khiển nhảy và lặp 15
Lệnh nhảy có điều kiện (tt)
• Ví dụ:
Giải thuật
if (AX == 0){
BX = -1;}
Lệnh hợp ngữ:
CMP AX, 0JNE Nhan_1MOV BX, -1
Nhan_1:…..
Cao đẳng kĩ thuật Cao Thắng
Các lệnh điều khiển nhảy và lặp 16
Lệnh nhảy có điều kiện (tt)
• Demo lệnh nhảy có điều kiện– Nhập vào 2 kí tự, in ra kí tự lớn hơn– In ra các kí tự có mã ASCII từ 0 đến 255
Cao đẳng kĩ thuật Cao Thắng
Các lệnh điều khiển nhảy và lặp 17
Nội dung
• Lệnh nhảy không điều kiện• Lệnh nhảy có điều kiện• Lệnh lặp
Cao đẳng kĩ thuật Cao Thắng
Các lệnh điều khiển nhảy và lặp 18
Lệnh lặp LOOP
• Cần lặp bao nhiêu lần đưa vào CX
MOV CX, số lần lặpNhãn:
<Lệnh …>LOOP Nhãn:
Thực hiện nhóm lệnh <Lệnh…>CX lần
Cao đẳng kĩ thuật Cao Thắng
Các lệnh điều khiển nhảy và lặp 19
Lệnh lặp LOOP
• Nếu CX = 0 Thực hiện 65536 lần
MOV CX, số lần lặpJCXZ Thoat_Lap
Nhãn:<Lệnh …>LOOP Nhãn:
Thoat_Lap:……
Cao đẳng kĩ thuật Cao Thắng
Các lệnh điều khiển nhảy và lặp 20
Lệnh lặp LOOP
• Demo lệnh lặp LOOP– In ra các kí tự có mã ASCII từ 0 255
Cao đẳng kĩ thuật Cao Thắng
Các lệnh điều khiển nhảy và lặp 21