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

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

Control Transfer Instructions

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


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

1 Control Transfer Instructions
Suthida Chaichomchuen

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

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 Instruction Labels ใช้กับ JMP, Jnnn, LOOP ตั้งตามหลักการการตั้งชื่อ
ต้องปิดท้ายด้วยเครื่องหมาย : (colon) ตัวอย่างเช่น P10: INC CX

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

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 JMP : Short & Near Near : label within 32K assembler generate
1 byte for operation [E9] 2 bytes for operand (8086/80286) or 4 bytes (80386 and later)

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

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

10 Using the JMP Instruction
MOV AX,01 MOV BX,01 MOV CX,01 A20: ADD AX,01 ADD BX,AX SHL CX,1 JMP A20

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

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

13 Using the LOOP Instruction
MOV AX,01 MOV BX,01 MOV DX,01 MOV CX,10 A20: INC AX ADD BX,AX SHL DX,1 LOOP A20

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

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 CMP Instruction เปรียบเทียบค่าที่เป็นตัวเลขใน operand 1 กับ operand 2
ทำงานคล้ายคำสั่ง SUB แต่จะไม่มีการเก็บค่าผลลัพธ์ มีผลต่อแฟลก AF, CF, OF, PF, SF และ ZF

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

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

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

20 Signed & Unsigned Data Example CMP CX,DX
มองเป็น unsigned data : CX>DX มองเป็น signed data : CX<DX การกำหนด signed หรือ unsigned ขึ้นอยู่กับการเลือกใช้คำสั่ง conditional jump

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 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 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 Condition Jump : Arithmetic Tests
JS : Jump Sign (negative) : SF JNS : Jump No Sign (positive) : SF

25 Calling Procedures รูปแบบการเขียน Procedure proc-name PROC FAR .
proc-name ENDP

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

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

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

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

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 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 Control Transfer Instructions

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


Ads by Google