ภาควิชาวิทยาศาสตร์ประยุกต์ คณะวิทยาศาสตร์เทคโนโลยีและการเกษตร

Slides:



Advertisements
งานนำเสนอที่คล้ายกัน
โปรแกรมฝึกหัด การเลื่อนและคลิกเมาส์
Advertisements

Bansomdej Chaopraya Rajabhat University
ครั้งที่ 9 Function(ต่อ).
โครงสร้างโปรแกรมภาษา C
บทที่ 11 โปรแกรมย่อยขั้นต้น
วิชา องค์ประกอบศิลป์สำหรับคอมพิวเตอร์ รหัส
การซ้อนทับกัน และคลื่นนิ่ง
EEET0485 Digital Signal Processing Asst.Prof. Peerapol Yuvapoositanon DSP3-1 ผศ.ดร. พีระพล ยุวภูษิตานนท์ ภาควิชา วิศวกรรมอิเล็กทรอนิกส์ DSP 6 The Fast.
การรับค่าและแสดงผล.
แนวทางการรายงานผลการปฏิบัติราชการโดยผ่านระบบเครือข่ายอินเตอร์เน็ต
CS Assembly Language Programming
CS Assembly Language Programming
CS Assembly Language Programming
CS Assembly Language Programming
LAB # 3 Computer Programming 1
การสืบค้นข้อมูลจาก Web OPAC
โปรแกรมย่อย : Pascal Procedure
ตัวแปรชุด.
จำนวนนับใดๆ ที่หารจำนวนนับที่กำหนดให้ได้ลงตัว เรียกว่า ตัวประกอบของจำนวนนับ จำนวนนับ สามารถเรียกอีกอย่างว่า จำนวนเต็มบวก หรือจำนวนธรรมชาติ ซึ่งเราสามารถนำจำนวนนับเหล่านี้มา.
ขั้นตอนการแปลงไฟล์.
กลุ่มสาระการเรียนรู้ คณิตศาสตร์ โรงเรียนบ้านหนองกุง อำเภอนาเชือก
C Programming Lecture no. 6: Function.
การออกแบบโปรแกรมอย่างมีโครงสร้าง Structured Design
Addressing Modes Assembly Programming.
กระบวนการคิดทางคณิตศาสตร์
การเขียนโปรแกรมเชิงวัตถุ ด้วยภาษาจาวา
บทที่ 3 ตัวดำเนินการ และ นิพจน์
การสืบค้นข้อมูลจาก Web OPAC
จำนวนทั้งหมด ( Whole Numbers )
หน่วยที่ 14 การเขียนโปรแกรมย่อย
บทที่ 15 โปรแกรมย่อยและแสต็ก
ธนาวินท์ รักธรรมานนท์
ธนาวินท์ รักธรรมานนท์
Kampol chanchoengpan it สถาปัตยกรรมคอมพิวเตอร์ Arithmetic and Logic Unit 1.
Install Driver Token Key
รายงานในระบบบัญชีแยกประเภททั่วไป (GL – General Ledger)
Debug #2 โครงสร้างคอมพิวเตอร์ และภาษาแอสเซมบลี้
เซกเมนต์ (Segment) โครงสร้างคอมพิวเตอร์ และภาษาแอสเซมบลี้
อินเทอร์รัพท์ (Interrupt)
แนวทางการปฏิบัติโครงการจูงมือ น้องน้อยบนดอยสูง 1.
ง30212 การเขียนโปรแกรมภาษาคอมพิวเตอร์ โรงเรียนปลวกแดงพิทยาคม
ณัฏฐวุฒิ เอี่ยมอินทร์
สถาปัตยกรรมคอมพิวเตอร์ (Computer Architecture)
การดำเนินการทดสอบทางการศึกษาแห่งชาติ (O-NET)
Extra_08_Test_Modular_Calculator
วิชาคอมพิวเตอร์กราฟิก
เสรี ชิโนดม ฟังก์ชัน เสรี ชิโนดม
บทที่ 9 เซต (Set) เซต หมายถึงกลุ่ม ฝูง พวก ชุด ของสิ่งใดสิ่งหนึ่ง เช่น เพศ ประกอบด้วย หญิง และ ชาย รายการที่อยู่ในเซต เรียกว่าสมาชิก เซตย่อย (Subset) คือ.
วิชาคณิตศาสตร์ ชั้นประถมศึกษาปีที่6
วิทยา กรระสี (วท.บ. วิทยาการคอมพิวเตอร์)
ฟังก์ชัน.
ค21201 คณิตศาสตร์เพิ่มเติม 1
กองซ้อน ยอดกองซ้อน (stack).
เรื่องการประยุกต์ของสมการเชิงเส้นตัวแปรเดียว
หน่วยการเรียนรู้ที่ 7 ความรู้เบื้องต้นเกี่ยวกับจำนวนจริง
เรื่องการประยุกต์ของสมการเชิงเส้นตัวแปรเดียว
วิวัฒน์ ชินนาทศิริกุล
ภาษาอังกฤษเพื่อการสื่อสาร อ32204
Chapter 3 - Stack, - Queue,- Infix Prefix Postfix
เรื่องการประยุกต์ของสมการเชิงเส้นตัวแปรเดียว
โครงสร้างข้อมูล Queues
stack #2 ผู้สอน อาจารย์ ยืนยง กันทะเนตร
เรื่องการประยุกต์ของสมการเชิงเส้นตัวแปรเดียว
stack #1 ผู้สอน อาจารย์ ยืนยง กันทะเนตร
โครงสร้างข้อมูลแบบ สแตก (stack)
การค้นในปริภูมิสถานะ
Week 13 Basic Algorithm 2 (Searching)
ผลการประเมิน คุณภาพการศึกษาขั้นพื้นฐาน ปีการศึกษา
ใบสำเนางานนำเสนอ:

ภาควิชาวิทยาศาสตร์ประยุกต์ คณะวิทยาศาสตร์เทคโนโลยีและการเกษตร แสต็กและโปรแกรมย่อย ผศ.นิพนธ์ บาดกลาง สาขาวิชาคอมพิวเตอร์ ภาควิชาวิทยาศาสตร์ประยุกต์ คณะวิทยาศาสตร์เทคโนโลยีและการเกษตร

แสต็ก กระบวนการเข้าก่อนออกหลังหรือเข้าหลังออกก่อน Last-in First-out นิยามเพื่อกำหนดที่ใช้งาน .STACK 100h เมื่อโปรแกรมประมวลผล SS จะเก็บค่าหมายเลขเซกเมนต์ของหน่วยความจำที่ใช้งาน ตัวชี้แสต็ก (Stack Pointer) หรือ SP จะถูกกำหนดให้ค่าเริ่มต้นเป็น 100h (แสต็กว่าง) แต่ถ้าแสต็กไม่ว่าง SP จะเลื่อนมาในตำแหน่ง offset ที่ค่าลดลง

คำสั่ง PUSH และ PUSHF PUSH Source ตัวอย่าง PUSH AX

คำสั่ง PUSH และ PUSHF เมื่อประมวลผลแล้วจะเกิด เหตุการณ์ดังนี้ SP จะลดลง 2 ค่า ค่าของ Source จะถูกนำใส่ลงตำแหน่ง SS : SP และค่าของ Source จะไม่เปลี่ยนแปลง คำสั่ง PUSHF เป็นคำสั่งที่ไม่มีโอเปอร์แรนด์จะนำค่าของแฟล็กเรจิสเตอร์ใส่ลงในแสต็ก

การประมวลผลคำสั่ง PUSH (1)

การประมวลผลคำสั่ง PUSH (2)

การประมวลผลคำสั่ง PUSH (3)

คำสั่ง POP และ POPF เป็นคำสั่งนำข้อมูลออกจากส่วนบนของแสต็กมีรูปแบบดังนี้ POP destination Destination เป็นเรจิสเตอร์ (ยกเว้น IP) หรือหน่วยความจำมีขนาด 16 บิท ตัวอย่างเช่น POP BX

คำสั่ง POP และ POPF เมื่อประมวลผลแล้วจะเกิดเหตุการณ์ดังนี้ ข้อมูลใน SS : SP (ส่วนบนของแสต็ก) จะถูกเก็บในเป้าหมาย (BX) ตัวชี้แสต็ก (SP) จะเพิ่มขึ้น 2 POPF เป็นคำสั่งที่จะนำข้อมูลจากส่วนบนของแสต็กใส่ในแฟล็กเรจิสเตอร์ คำสั่ง PUSH, PUSHF, POP และ POPF ไม่มีผลต่อแฟส็ก เป็นคำสั่งที่จะต้องใช้กับข้อมูลขนาด 16 บิทเท่านั้น

การใช้คำสั่ง POP(1)

การใช้คำสั่ง POP(2)

การใช้คำสั่ง POP(3)

การประยุกต์ใช้แสต็ก Initialize count to 0 Read a character Display a ‘?’ Initialize count to 0 Read a character WHILE character is not a carriage return DO push character onto the stack increment count read a character End_WHILE; Go to a new line FOR count times DO pop a character from the stack; display it; END_FOR

Program Listing EX9_1.ASM 1 : TITLE : REVERSE INPUT 2 : .MODEL SMALL 3 : .STACK 100H 4 : .CODE 5 : MAIN PROC

Program Listing EX9_1.ASM 6 : ;display user prompt 7 : MOV AH, 2 ; prepare to display 8 : MOV DL, ‘?’ ; char to display 9 : INT 21H ; display ‘?’ 10 : ;initialize character count 11 : XOR CX, CX ; count = 0 12 : ; read a character 13 : MOV AH, 1 ; prepare to read 14 : INT 21H ; read a char

Program Listing EX9_1.ASM 15 : ; while character is not a carriage return do 16 : WHILE_: 17 : CMP AL, 0DH ; CR? 18 : JE END_WHILE ; yes, exit loop 19 : ; save character on the stack and increment count 20 : PUSH AX ; push it on stack 21 : INC CX ; count = count + 1

Program Listing EX9_1.ASM 22 : ; read a character 23 : INT 21H ; read a char 24 : JMP WHILE_ ; loop back 25 : END_WHILE : 26 : ; go to a new line 27 : MOV AH, 2 ; display char function 28 : MOV DL, 0DH ; CR 29 : INT 21H ; execute 30 : MOV DL, 0AH ; LF 31 : INT 21H ; execute 32 : JCXZ EXIT ; exit if no characters read

Program Listing EX9_1.ASM 33 : ; for count times do 34 : TOP : 35 : ; pop a character from the stack 36 : POP DX ; get a char from stack 37 : ; display it 38 : INT 21H ; display it 39 : LOOP TOP 40 : ; end_for

Program Listing EX9_1.ASM 41 : EXIT : 42 : MOV AH, 4CH 43 : INT 21H 44 : MAIN ENDP 45 : END MAIN

ตัวอย่างการประมวลผล EX9_1.EXE C>EX9_1 ?THIS IS A TEST TSET A SI SIHT ?A A ? (กด RETURN จะไม่มีเอาต์พุต) C>

โปรแกรมย่อย การเรียกโปรแกรมย่อยและการส่งค่ากลับ

การประกาศโปรแกรมย่อย Name PROC type ; body of the procedure RET name ENDP

คำสั่ง CALL CALL name CALL address_expression

การประมวลผลคำสั่ง CALL จะเกิดเหตุการณ์ดังต่อไปนี้ ค่าตำแหน่งของคำสั่งต่อจากคำสั่ง CALL จะถูกนำไปเก็บในแสต็ก ค่า segment : offset ของคำสั่งจะเป็นค่าของ CS : IP ขณะที่ CALL ถูกประมวลผล IP จะเปลี่ยนไปชี้ค่าตำแหน่ง offset ของคำสั่งแรกในโปรแกรมย่อยที่เรียกใช้

การเรียกใช้คำสั่ง CALL

การเรียกใช้คำสั่ง CALL

การทำงานคำสั่ง RET ก่อนประมวลผลคำสั่ง RET

การทำงานคำสั่ง RET หลังประมวลผลคำสั่ง RET

ตัวอย่างการใช้โปรแกรมย่อย ตัวอย่างเป็นการเขียนโปรแกรมย่อยเพื่อหาผลคูณของเลขจำนวนเต็มบวก 2 จำนวน A และ B โดยการบวกและเลื่อนบิท

มีอัลกอริทึมการหาผลคูณ Product = 0 REPEAT IF LSB of B is 1 (Recall LSB = Least significant bit) THEN Product = Product + A END_IF Shift left A Shift right B UNTIL B = 0

ตัวอย่างถ้าให้ A = 111b = 7 และ B = 1101b = 13 Product = 0 เมื่อ LSB ของ B เป็น 1, Product = 0 + 111b = 111b เลื่อนบิท A ทางซ้าย : A = 1110b เลื่อนบิท B ทางขวา : B = 110b เมื่อ LSB ของ B เป็น 0 เลื่อนบิท A ทางซ้าย : A = 11100b เลื่อนบิท B ทางขวา : B = 11b

เมื่อ LSB ของ B เป็น 1, Product = 111b + 11100b = 100011b เลื่อนบิท A ทางซ้าย : A = 111000b เลื่อนบิท B ทางขวา : B = 1b Product = 100011b + 111000b = 1011011b เลื่อนบิท A ทางซ้าย : A = 1110000_b เลื่อนบิท B ทางขวา : B = 0 เมื่อ LSB ของ B เป็น 0 ส่งค่า Product = 1011011b = 91d

ทดลองตรวจสอบคำตอบด้วยการตั้งคูณ 111b 7 x 1101b x 13 111 91d 000 111 1011011b

Program Listing EX9_2.ASM 1 : TITLE : MULTIPLICATION BY ADD AND SHIFT 2 : .MODEL SMALL 3 : .STACK 100H 4 : .CODE 5 : MAIN PROC 6 : ;execute in DEBUG. Place A in AX and B in BX 7 : CALL MULTIPLY 8 : ;DX will contain the product 9 : MOV AH, 4CH 10 : INT 21H 11 : MAIN ENDP

12 : MULTIPLY PROC 13 : ;multiplies two nos. A and B by shifting and addition 14 : ;input : AX = A, BX = B. Nos. in range 0 – FFh 15 : ;output : DX = product 16 : PUSH AX 17 : PUSH BX 18 : XOR DX, DX ; product = 0

19 : REPEAT : 20 : ; if B is odd 21 : TEST BX, 1 ; is B odd? 22 : JZ END_IF ; no, even 23 : ; then 24 : ADD DX, AX ; prod = prod + A 25 : END_IF : 26 : SHL AX, 1 ; shift left A 27 : SHR BX, 1 ; shift right B 28 : ; until 29 : JNZ REPEAT 30 : POP BX 31 : POP AX 32 : RET 33 : MULTIPLY ENDP 34 : END MAIN

ทดสอบค่าต่าง ๆ ด้วยโปรแกรม DEBUG