Lệnh điều khiển nhảy và lặp

21
Cao đẳng kĩ thuật Cao Thắng Lệnh điều khiển nhảy và lặp GV: Phạm Viết Văn Email: [email protected]

description

Lệnh điều khiển nhảy và lặp. GV: Phạm Viết Văn Email: [email protected]. 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. 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. Nhãn. Đại diện cho một vị trí trong chương trình . - PowerPoint PPT Presentation

Transcript of Lệnh điều khiển nhảy và lặp

Page 1: Lệnh điều khiển nhảy và lặp

Cao đẳng kĩ thuật Cao Thắng

Lệnh điều khiển nhảy và lặp

GV: Phạm Viết VănEmail: [email protected]

Page 2: 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

Page 3: 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 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

Page 4: 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 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?

Page 5: 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 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

Page 6: 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 6

Lệnh nhảy không điều kiện (tt)

• Demo về lệnh nhảy không điều kiện

Page 7: 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 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

Page 8: 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 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

Page 9: 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 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

Page 10: 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 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, …

Page 11: 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 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

Page 12: 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 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

Page 13: 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 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

Page 14: 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 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)

Page 15: 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 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:…..

Page 16: 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 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

Page 17: 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 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

Page 18: 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 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

Page 19: 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 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:……

Page 20: 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 20

Lệnh lặp LOOP

• Demo lệnh lặp LOOP– In ra các kí tự có mã ASCII từ 0 255

Page 21: 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 21