200 likes | 377 Views
Lệnh điều khiển nhảy. GV: Phạm Viết Văn Email: phamvietvanc4@gmail.com. Nội dung. Nhảy không điều kiện Nhắc lại về nhãn . Lệnh nhảy không điều kiện JMP Nhảy có điều kiện Nhắc lại về thanh ghi cờ Sự ảnh hưởng của các lệnh lên thanh ghi cờ Lệnh so sánh CMP
E N D
Lệnhđiềukhiểnnhảy GV: PhạmViếtVăn Email: phamvietvanc4@gmail.com
Nội dung • Nhảykhôngđiềukiện • Nhắclạivềnhãn. • Lệnhnhảykhôngđiềukiện JMP • Nhảycóđiềukiện • Nhắclạivềthanhghicờ • Sựảnhhưởngcủacáclệnhlênthanhghicờ • Lệnh so sánh CMP • Cáclệnhnhảycóđiềukiện Các lệnh điều khiển nhảy
Nội dung • Nhảykhôngđiềukiện • Nhắclạivềnhãn. • Lệnhnhảykhôngđiềukiện JMP • Nhảycóđiềukiện • Nhắclạivềthanhghicờ • Sựảnhhưởngcủacáclệnhlênthanhghicờ • Lệnh so sánh CMP • Cáclệnhnhảycóđiềukiện Các lệnh điều khiển nhảy
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, MSG DisplayMessage: MOV AH, 9 INT 21h Các lệnh điều khiển nhảy
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, MSG JMP DisplayMessage MOV AH, 1 INT 21h DisplayMessage: MOV AH, 9 INT 21h Các lệnh điều khiển nhảy
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
Nội dung • Nhảykhôngđiềukiện • Nhắclạivềnhãn. • Lệnhnhảykhôngđiềukiện JMP • Nhảycóđiềukiện • Nhắclạivềthanhghicờ • Sựảnhhưởngcủacáclệnhlênthanhghicờ • Lệnh so sánh CMP • Cáclệnhnhảycóđiềukiện Các lệnh điều khiển nhảy
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
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
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
LệnhCMP (compare) • Cúpháp: CMP Đích, Nguồn • Đích = Nguồn: ZF = 1 (kếtquả = 0) • Đich > Nguồn: SF = 0 (kếtquả > 0) • Đích < Nguồn: SF = 1 (kếtquả < 0) • Vídụ: MOV AL, 10 CMP AL, 11 ; SF = 1 Các lệnh điều khiển nhảy
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
Lệnhnhảycóđiềukiện (tt) Các lệnh điều khiển nhảy
Lệnhnhảycóđiềukiện (tt) • Vídụ: Giảithuật: if (AX == 0) BX = -1; BX = BX + 1; • Lệnhhợpngữ: • CMP AX, 0 • JNE Nhan_1 • MOV BX, -1 • Nhan_1: • ADD BX, 1 Các lệnh điều khiển nhảy
Lệnhnhảycóđiềukiện (tt) • Vídụ: Giảithuật: if (AX > 0) BX = -1; BX = BX + 1; • Lệnhhợpngữ: • CMP AX, 0 • JNG Nhan_1 • MOV BX, -1 • Nhan_1: • ADD BX, 1 Các lệnh điều khiển nhảy
Lệnhnhảycóđiềukiện (tt) • Bàitậplệnhnhảycóđiềukiện In racáckítựcómã ASCII từ 0 đến 255 Các lệnh điều khiển nhảy
Bàitậpvềnhà • Viếtchươngtrìnhbằnghợpngữ, chophépngườidùngnhậpvào 2 kítự. In rakítựcómã ASCII lớnhơn. Vídụ: Nhapkituthunhat: a Nhapkituthuhai: b Kitulonhon la: b Các lệnh điều khiển nhảy
Cảmơncácquýthầycôđãbỏthờigianquýbáuđếndựbuổigiảngnày!Cảmơncácquýthầycôđãbỏthờigianquýbáuđếndựbuổigiảngnày! Các lệnh điều khiển nhảy