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

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

CS344-321 Assembly Language Programming Period 34.

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


งานนำเสนอเรื่อง: "CS344-321 Assembly Language Programming Period 34."— ใบสำเนางานนำเสนอ:

1 CS Assembly Language Programming Period 34

2 ในกรณีการผ่านพารามิเตอร์ทาง stack ควร สร้าง macro สองตัว คือ enter_procmacrototal_local_size pushbp movbp,sp subsp,total_local_size endmและ

3 exit_procmacrototal_para_size movsp,bp popbp rettotal_para_size เช่น proc swap สามารถ เรียกใช้ดังนี้

4 swapproc enter_proc2... … exit_proc4 swapendp

5 Macro Call within Macro Definition ในส่วน body ของ macro definition สามารถมี การ call macro ได้ เช่น dos21macrodosfunc movah,dosfunc int21h endm dispmacrochar movdl,char dos21 02macro call within macro definition endm นอกจากนี้ยังมี directive อื่น ๆ เช่น local หรือ conditional ต่าง ๆ ได้ แต่จะไม่กล่าวถึงในที่นี้

6 เช่น การ call disp ดังนี้ disp ‘x’ จะถูก expand เป็น จะถูก expand เป็น movdl,’x’ movah,02 int21h

7 Macro V.S. Subroutine Macro V.S. Subroutine macro มีความแตกต่างจาก subroutine คือ - การ call macro กระทำในช่วงการแปล (assemble หรือ compile time) โดยการ expansion ในขณะที่ทำ expansion จะมีการแทน dummy parameter ด้วย actual parameter ( ถ้า มี ) ส่วน การ call subroutine กระทำในช่วง กระทำการ (execution time) เป็นการจำตำแหน่ง ของคำสั่งถัดไป และกระโดดไปยัง subroutine ที่ ต้องการ การส่งผ่าน parameter ทำได้หลายแบบ เช่น pass by value หรือ pass by reference เป็นต้น - ทุกครั้งที่มีการ call macro ส่วน body ของ macro definition จะถูก expand ทุกครั้งและกิน เนื้อที่เพิ่มขึ้นเท่ากับจำนวนครั้งที่มีการ call แต่การ call subroutine จะกินเนื้อที่เท่ากับคำสั่ง call เท่านั้น subroutine ที่ถูก call ยังคงกินเนื้อที่เท่า เดิม


ดาวน์โหลด ppt CS344-321 Assembly Language Programming Period 34.

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


Ads by Google