Control Transfer Instructions

Slides:



Advertisements
งานนำเสนอที่คล้ายกัน
คำสั่งควบคุมในโปรแกรม Interactive C
Advertisements

Microsoft Access อ.เล็กฤทัย ขันทองชัย Microsoft Access.
Introduction to C Programming
ขอความคำสั่งควบคุม แบงเปนกลุมใหญ ๆ ได 2 กลุม คือ
ชื่อสมบัติของการเท่ากัน
Lecture no. 5 Control Statements
CS Assembly Language Programming
CS Assembly Language Programming
CS Assembly Language Programming
CS Assembly Language Programming
LAB # 3 Computer Programming 1
คำสั่ง while ควบคุมการทำงานวนซ้ำ กรณีระบบงานมีลักษณะตรวจสอบเงื่อนไขก่อน แล้วเข้าสู่ส่วนลำดับงานคำสั่งที่กำหนดไว้ การเขียนคำสั่ง while ต้องกำหนดนิพจน์แบบตรรกะเป็นเงื่อนไขมีค่าในหน่วยความจำเป็น.
ผังงานโปรแกรม (Program Flowchart)
Week 6 ประกาศค่าตัวแปร.
Lab 3: คำสั่งพื้นฐานสำหรับการรับและการแสดงผลข้อมูล
NUMBER SYSTEM เลขฐานสิบ (Decimal Number) เลขฐานสอง (Binary Number)
โครงสร้างควบคุม 1. โครงสร้างควบคุมแบบวนทางเลือก
Number Representations
SCC : Suthida Chaichomchuen
การจัดการข้อมูลด้วยคอมพิวเตอร์
PROCEDURE <<โปรแกรมย่อย>>
คำสั่งแบบมีเงื่อนไข IF Statement
Operators ตัวดำเนินการ
Addressing Modes Assembly Programming.
BIT & STRING OPERATIONS
1 Structures & Records SCC : Suthida Chaichomchuen
Arithmetic Instruction
Looping การวนรอบ บทที่ 4.
Computer Architecture and Assembly Language
โปรแกรม Microsoft Access
CS Assembly Language Programming
CS Assembly Language Programming Period 30.
CS Assembly Language Programming Period 17.
Functional components of a computer
ASSIGN3-4. InstructionResult Z-FlagC-FlagP-FlagS-FlagO-Flag MOV AL,9Eh 9Eh H ????? ADDAL,9Eh 3C ADD AL,1Eh 5A
แบบฝึกหัด 24/12/09. เมื่อคอมพ์ทำคำสั่งต่อไปนี้ จงแสดง ผลลัพธ์และ ค่าแฟลกต่างๆ InstructionResult Z-FlagC-FlagP- Flag S- Flag O- Flag MOV AL,3h Inc AL Mov.
บทที่ 15 โปรแกรมย่อยและแสต็ก
บทที่ 17 คำสั่งตารางและการสร้างแมคโคร
บทที่ 10 โครงสร้างควบคุม
ธนาวินท์ รักธรรมานนท์
ธนาวินท์ รักธรรมานนท์
ธนาวินท์ รักธรรมานนท์
ภาควิชาวิทยาศาสตร์ประยุกต์ คณะวิทยาศาสตร์เทคโนโลยีและการเกษตร
Computer Coding & Number Systems
Debug #2 โครงสร้างคอมพิวเตอร์ และภาษาแอสเซมบลี้
ชนิดของข้อมูล ตัวแปร และตัวดำเนินการ
Chapter 6 Decision Statement
หน่วยประมวลผลกลางและหน่วยความจำ Central Processing Unit and Memory
การเขียนเว็บเพจด้วยภาษา php ศูนย์คอมพิวเตอร์ โรงเรียนปลวกแดงพิทยาคม
ชนิดของข้อมูล ตัวแปร และตัวดำเนินการ
คำสั่งควบคุมการทำงานของ ActionScripts
Week 2 Variables.
CS Assembly Language Programming
วิทยา กรระสี (วท.บ. วิทยาการคอมพิวเตอร์)
การกระโดดและการวนรอบ
การเขียนโปรแกรมแบบวนซ้ำ: คำสั่ง while คำสั่ง do….while
หลักการเขียนโปรแกรม ( )
A QUICK OVERVIEW OF PDP-8 ARCHITECTURE
Recursive Method.
พื้นฐานการเขียนโปรแกรมด้วย C#
Chapter 11 Instruction Sets: Addressing Modes
บทที่ 7 เงื่อนไขในภาษาซี
ตัวแปร และชนิดข้อมูล.
การทำงานแบบวนซ้ำ (Iteration).
ผังงานโปรแกรม (Program Flowchart)
CHAPTER 2 Operators.
คุณลักษณะของคำสั่งภาษาเครื่อง ชนิดของตัวถูกดำเนินการ
Introduction to Computer Organization and Architecture Instruction Formats ภาษาเครื่อง รูปแบบคำสั่งเครื่อง.
Microcomputer and Assembly Language
โปรแกรมภาษาแอสเซมบลี้เบื้องต้น
ใบสำเนางานนำเสนอ:

Control Transfer Instructions Suthida Chaichomchuen std@kmitnb.ac.th

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

Rules on distances for operations Short Near Far -128 to 127 -32,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

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

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

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]

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)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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