งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ

งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ

1 Control Transfer Instructions Suthida Chaichomchuen

งานนำเสนอที่คล้ายกัน


งานนำเสนอเรื่อง: "1 Control Transfer Instructions Suthida Chaichomchuen"— ใบสำเนางานนำเสนอ:

1 1 Control Transfer Instructions Suthida Chaichomchuen

2 2 Types of Addresses  Short : -128 to 127 bytes  Near : -32,768 to 32,767 bytes  Far : over 32K

3 3 Rules on distances for operations Short Near Far -128 to ,768 to 32,767 Over 32K or in Instructions same segment same segment another segment JMP yes yes yes Jnnn yes yes (80386+) yes LOOP yes no no CALL N/A yes yes

4 4 Instruction Labels  ใช้กับ JMP, Jnnn, LOOP  ตั้งตามหลักการการตั้งชื่อ  ต้องปิดท้ายด้วยเครื่องหมาย : (colon)  ตัวอย่างเช่น P10:INC CX

5 5 JMP Instruction  เปลี่ยนแปลงลำดับการทำงาน จากจุดหนึ่งไปยังอีกจุดหนึ่งโดย ไม่มีเงื่อนไข  รูปแบบ [label:] JMP short, near, or far address

6 6 JMP : Short & Near  Short : label within -128 to +127 bytes  assembler generate 2 bytes  1 byte for operation [EB]  1 byte for operand [ ค่า offset ที่จะนำไปบวกกับค่าของ IP จำกัดที่ 00H-FFH]

7 7 JMP : Short & Near  Near : label within 32K  assembler generate  1 byte for operation [E9]  2 bytes for operand (8086/80286) or4 bytes (80386 and later)

8 8 JMP : Forward & Backward  Forward  assembler ยังไม ่ generate code เพราะไม่รู้ว่าจะเป็นแบบใด (short / near) JMPP10... P10:

9 9 JMP : Forward & Backward  Backward within -128 bytes  assembler generate code 2 bytes P10:... JMPP10

10 10 Using the JMP Instruction MOVAX,01 MOV BX,01 MOV CX,01 A20: ADDAX,01 ADD BX,AX SHLCX,1 JMPA20

11 11 LOOP Instruction  คำสั่งควบคุมการทำงานที่ซ้ำกัน  เป็นคำสั่งควบคุมที่มีเงื่อนไข  ใช้ CX เป็นตัวนับการทำงาน ภายในลูป  CX ถูกลดค่าทีละ 1 โดย อัตโนมัติเมื่อคำสั่งถูก execute

12 12 LOOP Instruction  รูปแบบ [label:] LOOP short-address

13 13 Using the LOOP Instruction MOVAX,01 MOV BX,01 MOV DX,01 MOVCX,10 A20: INCAX ADD BX,AX SHLDX,1 LOOPA20

14 14 LOOPE / LOOPZ Instruction Loop while equal / Loop while zero  ตรวจสอบค่า CX และแฟลก ZF  ลดค่า CX ทีละ 1 เมื่อคำสั่งถูก execute  วนลูปเมื่อ CX เท่ากับ 0 หรือ ZF=1  ออกจากลูปเมื่อ CX<>0 หรือ ZF=0

15 15 LOOPNE / LOOPNZ Instruction Loop while not equal / Loop while not zero  ตรวจสอบค่า CX และแฟลก ZF  ลดค่า CX ทีละ 1 เมื่อคำสั่งถูก execute  วนลูปเมื่อ CX ไม่เท่ากับ 0 หรือ ZF=0  ออกจากลูปเมื่อ CX=0 หรือ ZF=1

16 16 CMP Instruction  เปรียบเทียบค่าที่เป็นตัวเลขใน operand 1 กับ operand 2  ต้องมี operand ตัวใดตัวหนึ่ง เป็นรีจิสเตอร์  ทำงานคล้ายคำสั่ง SUB แต่จะ ไม่มีการเก็บค่าผลลัพธ์  มีผลต่อแฟลก AF, CF, OF, PF, SF และ ZF

17 17 CMP Instruction  รูปแบบ [label:] CMP destination,source destination : register/memory source : register/memory/immediate

18 18 Conditional Jump Instructions  เปลี่ยนแปลงลำดับการทำงาน จากจุดหนึ่งไปยังอีกจุดหนึ่ง อย่างมีเงื่อนไข  รูปแบบ [label:] Jnnn short-address  ไม่มีการลดค่า CX แบบอัตโนมัติ

19 19 Signed & Unsigned Data  Unsigned numeric item (Logical Data)  customer number, phone number  Signed numeric item (Arithmetic Data)  quantity, discount, distance

20 20 Signed & Unsigned Data  ExampleCMP CX,DX CX= , DX=  มองเป็น unsigned data : CX>DX  มองเป็น signed data : CX

21 21 Conditional Jump : unsigned data  JE/JZ : Jump Equal or Jump Zero : ZF  JNE/JNZ : Jump Not Equal or Jump Not Zero : ZF  JA/JNBE : Jump Above or Jump Not Below or Equal : CF, ZF  JAE/JNB : Jump Above or Equal or Jump Not Below : CF  JB/JNAE : Jump Below or Jump Not Above or Equal : CF  JBE/JNA : Jump Below or Equal or Jump Not Above : AF, ZF

22 22 Conditional Jump : signed data  JE/JZ : Jump Equal or Jump Zero : ZF  JNE/JNZ : Jump Not Equal or Jump Not Zero : ZF  JG/JNLE : Jump Greater or Jump Not Less or Equal : OF, SF, ZF  JGE/JNL : Jump Greater or Equal or Jump Not Less : OF, SF  JL/JNGE : Jump Less or Jump Not Greater or Equal : OF, SF  JLE/JNG : Jump Less or Equal or Jump Not Greater : OF, SF, ZF

23 23 Conditional Jump : special arithmetic tests  JCXZ : Jump if CX is Zero : None  JC : Jump Carry : CF  JNC : Jump No Carry : CF  JO : Jump Overflow : OF  JNO : Jump No Overflow : OF  JP/JPE : Jump Parity or Jump Parity Even : PF  JNP/JPO : Jump No Parity or Jump Parity Odd : PF

24 24 Condition Jump : Arithmetic Tests  JS : Jump Sign (negative) : SF  JNS : Jump No Sign (positive) : SF

25 25 Calling Procedures  รูปแบบการเขียน Procedure proc-namePROCFAR. proc-nameENDP

26 26 Calling Procedures  ข้อดีของการเขียน Procedure  ลดจำนวน code  เสริมสร้างการจัดการโปรแกรมที่ ดีกว่า  ง่ายต่อการ debug โปรแกรม  ช่วยในการ maintenance โปรแกรม

27 27 CALL / RET Instructions  เป็นคำสั่งที่เรียกใช้ procedure จาก calling program  รูปแบบ [label:]CALLproc-name [label:]RET[pop-value]

28 28 CALL Instruction  Transfer control จาก calling program ไปยัง procedure  PUSH ที่อยู่ (offset/segment) ของคำสั่งถัดไปที่จะ execute ไว้ บน stack

29 29 RET Instruction  Transfer control จาก procedure ไปยัง calling program  pop ที่อยู่ของคำสั่งถัดไปที่เก็บ ไว้บน stack ไปไว้ให้กับ IP

30 30 Near call and return  CALL  เรียก procedure ภายในเซกเมนต์ เดียวกัน  ลดค่า SP ด้วย 2  push ค่า IP ปัจจุบันไปไว้บน stack  load offset address ของ call procedure มาไว้ที่ IP  RET/RETN  pop ค่า IP เดิมจาก stack มาไว้ที่ IP  เพิ่มค่า SP ด้วย 2

31 31 Far call and return  CALL  เรียก procedure ในเซกเมนต์อื่น  push ค่า CS และ IP ปัจจุบันไปไว้บน stack  RET/RETF  load segment และ offset address ของ call procedure มาไว้ที่ CS และ IP  pop ค่า IP และ CS เดิมจาก stack มา ไว้ที่ IP และ CS


ดาวน์โหลด ppt 1 Control Transfer Instructions Suthida Chaichomchuen

งานนำเสนอที่คล้ายกัน


Ads by Google