ธนาวินท์ รักธรรมานนท์

Slides:



Advertisements
งานนำเสนอที่คล้ายกัน
โครงสร้างโปรแกรมภาษา C
Advertisements

บทที่ 11 โปรแกรมย่อยขั้นต้น
รายวิชา ง40206 โครงสร้างข้อมูลและขั้นตอนวิธี
บทที่ 2 ภาษาปาลคาลเบื้องต้น.
การทำงานแบบเลือกทำ (Selection)
User Defined Simple Data Type
โครงสร้างควบคุมและคำสั่งแบบเงื่อนไข
CS Assembly Language Programming
ภาษาปาสคาล บทนำ.
การแสดงผลและ รับข้อมูล. คำสั่ง Write เป็นคำสั่งที่นำข้อมูลที่ ต้องการแสดงผลที่ จอภาพเมื่อตอนสั่งรัน โปรแกรมไม่ว่าจะ เป็นข้อมูลประเภทข้อความ ตัวเลข การ.
วิชา การออกแบบและพัฒนาซอฟต์แวร์
Repetitive Statements (Looping)
โครงสร้างคำสั่งแบบเลือก (Selection)
Repetitive Instruction
ภาษาปาสคาล ผู้สร้าง Dr.Niklaus Wirth ปี 2513
คำสั่งเงื่อนไขและการควบคุม
โปรแกรมย่อย : Pascal Procedure
ARRAY ข้อมูลชนิดอาร์เรย์
SCC : Suthida Chaichomchuen
การออกแบบโปรแกรมอย่างมีโครงสร้าง Structured Design
PROCEDURE <<โปรแกรมย่อย>>
คำสั่งแบบมีเงื่อนไข IF Statement
1 RECORD TYPE ข้อมูลชนิดเรคอร์ด SCC : Suthida Chaichomchuen
ตัวอย่างการใช้คำสั่ง IF_THEN
WHILE..DO คำสั่งควบคุมให้ทำงานซ้ำ โดยที่ต้องตรวจสอบเงื่อนไขก่อนที่จะทำ
คำสั่ง Repeat...Until คำสั่งควบคุมให้ทำงานซ้ำ
ตัวอย่างคำสั่ง FOR.
ตัวอย่างคำสั่ง CASE.
การเขียนโปรแกรมคอมพิวเตอร์และอัลกอริธึม
บทที่ 7 การกำหนดชนิดข้อมูลใหม่
บทที่ 15 โปรแกรมย่อยและแสต็ก
บทที่ 17 คำสั่งตารางและการสร้างแมคโคร
ธนาวินท์ รักธรรมานนท์
ธนาวินท์ รักธรรมานนท์
บทที่ 7 รีเคอร์ซีฟ ระหว่างการออกแบบเขียนโปรแกรมแบบบนลงล่าง (Top-down Design) จะมีงานย่อย(Subtask) เพื่อแก้ปัญหาในแต่ละเรื่อง และผู้เขียนโปรแกรมต้องการใช้งานย่อยในลักษณะที่เรียกตัวเองขึ้นมาทำงานลักษณะของฟังก์ชั่นมีความรอบรัดสั้นกว่าแบบวนลูป.
Lecture 4 องค์ประกอบภาษา C To do: Hand back assignments
ภาควิชาวิทยาศาสตร์ประยุกต์ คณะวิทยาศาสตร์เทคโนโลยีและการเกษตร
อินเทอร์รัพท์ (Interrupt)
input from keyboard มหาวิทยาลัยเนชั่น การโปรแกรมเชิงวัตถุด้วยภาษา JAVA
Chapter 7 Iteration Statement
คิว ลักษณะการทำงานของ Queue การดำเนินการของ Queue การตรวจสอบ Queue
โครงสร้างแบบลำดับ คำสั่ง x คำสั่ง y.
TURBO PASCAL OUTLINE 1. บทนำเกี่ยวกับการเขียนโปรแกรมภาษาปาสคาล
Lecture 4 เรคอร์ด.
โปรแกรมประยุกต์อื่นๆ
บทที่ 10 คำสั่งควบคุม OUTLINE 1. คำสั่งแบบเรียงลำดับ (Sequence)
บทที่ 9 เซต (Set) เซต หมายถึงกลุ่ม ฝูง พวก ชุด ของสิ่งใดสิ่งหนึ่ง เช่น เพศ ประกอบด้วย หญิง และ ชาย รายการที่อยู่ในเซต เรียกว่าสมาชิก เซตย่อย (Subset) คือ.
บทที่ 8 ตัวดำเนินการ และ นิพจน์
การเขียนโปรแกรมเบื้องต้น
หลักการเขียนโปรแกรม ( )
ชนิดของข้อมูลแบบพื้นฐาน 1. จํ านวนเต็ม (Integer Data Type) 2. จํ านวนจริง (Real Data Type) 3. ตัวอักขระ (Character Data Type) 4. ตรรกศาสตร ? (Boolean.
Java Programming Java Structure and Datatype,Variable
stack #2 ผู้สอน อาจารย์ ยืนยง กันทะเนตร
บทที่ 9 การสร้างและใช้ งานฟังก์ชั่น C Programming C-Programming.
การรับและแสดงผลข้อมูล (Input/Output)
Function. วัตถุประสงค์การเรียนรู้ ให้รู้จักว่าฟังก์ชันคืออะไร ให้รู้จักว่าเราสร้างฟังก์ชันเพื่อจุดประสงค์ใด หรือ เพื่อประโยชน์ใด ให้รู้จักประเภทของฟังก์ชัน.
บทที่ 10 การจัดการไฟล์ อาจารย์ศศลักษณ์ ทองขาว สงวนลิขสิทธิ์ © 2547 มหาวิทยาลัยราช ภัฏสงขลา C Programming C-Programming.
1 บทที่ 5 โปรแกรมย่อย Part II Function. 2 ฟังก์ชัน (Function) เป็นชุดคำสั่งย่อยที่มีหน้าที่เฉพาะอย่างใดอย่างหนึ่ง เหมือนกับ procedure สามารถมีการรับส่งค่าข้อมูล.
บทที่ 5 โปรแกรมย่อย.
Computer Program คือ ขั้นตอนการทำงาน ของคอมพิวเตอร์
Introduction to Flowchart
Evidence-based การประชุมชี้แจงการประเมินคุณธรรมและความโปร่งใสการดำเนินงาน ของหน่วยงานภาครัฐ (Integrity and transparency assessment – ita) ประจำปีงบประมาณ.
ส่วนการทะเบียนทั่วไป สำนักบริหารการทะเบียน
ตัวชี้วัดปศุสัตว์อำเภอ ปีงบประมาณ ๒๕๖๑
Lecture no. 1: Introduction to Computer and Programming
โปรแกรมย่อย (Sub Program)
อุทธรณ์,ฎีกา.
ขั้นตอนการเขียนโปรแกรมคอมพิวเตอร์
狗隻的訓練 聖士提反女子中學附屬小學 孫晞庭.
อัลกอริทึม (Algorithm) ???
ใบสำเนางานนำเสนอ:

ธนาวินท์ รักธรรมานนท์ fengtwr@ku.ac.th โปรแกรมย่อย ธนาวินท์ รักธรรมานนท์ fengtwr@ku.ac.th

หัวข้อในวันนี้ โปรแกรมย่อย การเรียกใช้งานโปรแกรมย่อย การทำงานของแสต็กซ์ขณะเรียกใช้งานโปรแกรมย่อย

Procedure Operation (Pascal) Program draw(input, output); Var I:integer; Procedure writeBox; Begin writeln(‘------------’); writeln(‘- -’); End; Begin { main program} writeln(‘Hello…..’); for I:= 1 to 10 do writeBox; writeln(‘Bye’); End.

โปรแกรมย่อยขั้นต้น การเรียกใช้ การประกาศ procname PROC NEAR … ;program RET procname ENDP การเรียกใช้ CALL procname

ตัวอย่างโปรแกรมย่อย - การประกาศ ;print Hex digit ;input al<-digit ;affect : dl,ah printhexdigit proc near mov ah , 2 mov dl , al cmp al , 10 add dl , ’0’ jb printit add dl , ’A’-’0’-10 printit: int 21h ret printhexdigit endp

ตัวอย่างโปรแกรมย่อย - การเรียกใช้ ; print a 2-digit hex number ; the digits is stored in bh,bl ... mov al,bh call printhexdigit mov al,bl ข้อเสียหลักคือรีจิสเตอร์ที่ถูกใช้งานในโปรแกรมย่อยทั้งหมดจะถูกเปลี่ยนค่าไปด้วย แก้โดยใช้สแต็กซ์มาเก็บค่าของรีจิสเตอร์แต่ละตัวไว้ก่อนการทำงาน

โจทย์เกี่ยวกับโปรแกรมย่อย 1. จงเขียนโปรแกรมย่อยเพื่อรับค่าอักษร 1 ตัวจากผู้ใช้และเก็บเป็นตัวเลขไว้ใน AX และถ้าอักษรที่ผู้ใช้ระบุไม่ใช่ตัวเลขให้ AX=-1 call readInt ; ผู้ใช้ใส่ ‘5’ แล้ว AX = 5h 2. จงเขียนโปรแกรมย่อยเพื่อแสดงค่าของตัวเลขที่เก็บไว้ใน DX (ไม่เกิน 255) mov dx , C8h call printInt ; แสดงเลข 200 บนหน้าจอ

โจทย์เกี่ยวกับโปรแกรมย่อย 3. จงเขียนโปรแกรมย่อยเพื่อคำนวณผลรวมตั้งแต่ 1+2+3+..+AX และเก็บคำตอบสุดท้ายไว้ใน AX mov ax,10 call sigma ; ax = 55 4. จงเขียนโปรแกรมย่อยเพื่อหาหรม.ของ BX และ CX โดยเก็บค่าไว้ใน AX mov bx , 100 mov cx , 225 call gcd ; ax = 25

การใช้งานแสต็กซ์ คำสั่งเกี่ยวกับแสต็กซ์ PUSH reg : ใส่ค่าลงใน stack POP reg : อ่านค่าขึ้นมาจาก stack โดยปกติรีจิสเตอร์ SS:SP จะเก็บตำแหน่งบนสุดของแสต็ก. เมื่อเราสั่ง PUSH หรือ POP กับสแต็กซ์หน่วยประมวลผลจะปรับค่าของรีจิสเตอร์ SP ให้มีค่าชี้ตำแหน่งบนสุดของแสต็กอีกครั้ง

ตัวอย่างการใช้งานแสต็กซ์ DX = 034A PUSH DX 034A 1234 ??? SS : SP Mov AX,1234h Mov DX,034Ah Push AX Push DX Pop BX ??? SS : SP AX = 1234 PUSH AX 1234 ??? SS : SP POP BX 034A 1234 ??? SS : SP BX = 034A

;print Hex digit ;input al<-digit printhexdigit proc near mov ah,2 mov dl,al add dl,’0’ cmp al,10 jb printit add dl,’A’-’0’-10 printit: int 21h ret printhexdigit endp push ax push dx pop dx pop ax

การเปลี่ยนไปของแสต็กซ์กับโปรแกรมย่อย call printhexdigit IP ? กระโดดไปทำงานที่โปรแกรมย่อย push ax push dx DX AX IP ? ? pop dx pop ax DX AX IP ? ret กระโดดกลับไป โปรแกรมหลัก IP ?

โจทย์เกี่ยวกับโปรแกรมย่อย 5. จงเขียนโปรแกรมเพื่อแสดงจำนวนเฉพาะที่อยู่ระหว่าง 1 ถึง 999 โดยแสดงผลลัพธ์ทางหน้าจอ คำแนะนำ : ใช้โปรแกรมย่อยช่วยจะง่ายขึ้นมาก - โปรแกรมย่อยแสดงตัวเลข - โปรแกรมย่อยในการตรวจสอบจำนวนเฉพาะ

โจทย์เกี่ยวกับโปรแกรมย่อย (การบ้าน) จงเขียนโปรแกรมย่อยเพื่อทำงานแทนแสต็ก โดยให้เขียน 2 โปรแกรมย่อย ได้แก่ myPush และ myPop กำหนดให้ หน่วยความจำตำแหน่ง 100 เก็บจำนวนข้อมูลที่มีในแสต็ก และหน่วยความจำตำแหน่ง 101 เป็นต้นไปเก็บค่าที่ต้องการ myPush – เป็นโปรแกรมย่อยที่ใช้ในการเก็บข้อมูลใน AX ลงแสต็กที่เรากำหนด myPop – ใช้สำหรับนำข้อมูลออกจาก stack และนำมาเก็บใน AX

Question ?