210 likes | 364 Views
Lệnh điều khiển nhảy và lặp. GV: Phạm Viết Văn Email: phamvietvanc4@gmail.com. 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 .
E N D
Lệnhđiềukhiểnnhảyvàlặp GV: PhạmViếtVăn Email: phamvietvanc4@gmail.com
Nội dung • Lệnhnhảykhôngđiềukiện • Lệnhnhảycóđiềukiện • Lệnhlặp Các lệnh điều khiển nhảy và lặp
Nội dung • Lệnhnhảykhôngđiềukiện • Lệnhnhảycóđiềukiện • Lệnhlặp Các lệnh điều khiển nhảy và lặp
Nhãn • Đạidiệnchomộtvịtrítrongchươngtrình. • Theo saubởidấu 2 chấm (:) Trongchươngtrìnhcónhãntrùngtênđượckhông? LEA DX, OFFSET MSG DisplayMessage: MOV AH, 9 INT 21h Các lệnh điều khiển nhảy và lặp
Lệnhnhảykhôngđiềukiện • LệnhnhảyJMP(Jump) • Thayđổithứtựthựchiệnlệnhtrongchươngtrình • Cúpháp: JMPNhãn LEA DX, OFFSET MSG JMP DisplayMessage MOV AH, 1 INT 21h DisplayMessage: MOV AH, 9 INT 21h Các lệnh điều khiển nhảy và lặp
Lệnhnhảykhôngđiềukiện (tt) • Demo vềlệnhnhảykhôngđiềukiện Các lệnh điều khiển nhảy và lặp
Nội dung • Lệnhnhảykhôngđiềukiện • Lệnhnhảycóđiềukiện • Lệnhlặp Các lệnh điều khiển nhảy và lặp
Nhắclạivềthanhghicờ • Làmộtthanhghi • Cho biết • Trạngthái CPU • Kếtquảthựchiệnlệnh saucùng Các lệnh điều khiển nhảy và lặp
Nhắclạivềthanhghicờ (tt) • CờkhôngZF (Zero Flag) • Nếukếtquảthựchiện lệnhlà 0 ZF = 1 • Ngượclại ZF = 0 • CờdấuSF (Sign Flag) • Kếtquảlàsốâm SF = 1 • Ngượclại SF = 0 MOV AL, 0 ; AL = 0 ADD AL, 1 ; AL = 1, ZF = 0 SUB AL, 1 ; AL = 0, ZF = 1 MOV AL, 0 ; AL = 0 SUB AL, 1 ; AL = -1, SF = 1 ADD AL, 1 ; AL = 0, SF = 0 Các lệnh điều khiển nhảy và lặp
Sựảnhhưởngcáclệnhđếncờ • Cáclệnhcóảnhhưởng • ADD • SUB • INC • DEC • … • Cáclệnhkhôngảnhhưởngtớicờ MOV, XCHG, … Các lệnh điều khiển nhảy và lặp
LệnhCMP (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ôngdấu) • Đích < Nguồn SF = 1 (sốcódấu), CF = 1 (sốkhôngdấu) • Vídụ: MOV AL, 10 CMP AL, 11 ; SF = 1 Các lệnh điều khiển nhảy và lặp
Lệnhnhảycóđiềukiện • Cúpháp: JxxNhãn JxxNhãn <Lệnhkếtiếp> Nhãn: ….. Đ ? Nhãn S <Lệnhkếtiếp> Các lệnh điều khiển nhảy và lặp
Lệnhnhảycóđiềukiện (tt) Các lệnh điều khiển nhảy và lặp
Lệnhnhảycóđiềukiện (tt) Các lệnh điều khiển nhảy và lặp
Lệnhnhảycóđiềukiện (tt) • Vídụ: Giảithuật if (AX == 0) { BX = -1; } • Lệnhhợpngữ: • CMP AX, 0 • JNE Nhan_1 • MOV BX, -1 • Nhan_1: • ….. Các lệnh điều khiển nhảy và lặp
Lệnhnhảycóđiềukiện (tt) • Demo lệnhnhảycóđiềukiện • Nhậpvào 2 kítự, in rakítựlớnhơn • In racáckítựcómã ASCII từ 0 đến 255 Các lệnh điều khiển nhảy và lặp
Nội dung • Lệnhnhảykhôngđiềukiện • Lệnhnhảycóđiềukiện • Lệnhlặp Các lệnh điều khiển nhảy và lặp
LệnhlặpLOOP • Cầnlặpbaonhiêulầnđưavào CX MOV CX, sốlầnlặp Nhãn: <Lệnh …> LOOP Nhãn: Thựchiệnnhóm lệnh <Lệnh…> CX lần Các lệnh điều khiển nhảy và lặp
LệnhlặpLOOP • Nếu CX = 0 Thựchiện 65536 lần MOV CX, sốlầnlặp JCXZ Thoat_Lap Nhãn: <Lệnh …> LOOP Nhãn: Thoat_Lap: …… Các lệnh điều khiển nhảy và lặp
LệnhlặpLOOP • Demo lệnhlặp LOOP • In racáckítựcómã ASCII từ 0 255 Các lệnh điều khiển nhảy và lặp