Presentation is loading. Please wait.

Presentation is loading. Please wait.

© 2010 Kettering University, All rights reserved..

Similar presentations


Presentation on theme: "© 2010 Kettering University, All rights reserved.."— Presentation transcript:

1 © 2010 Kettering University, All rights reserved.

2

3 Microcomputers I – CE 320 Electrical and Computer Engineering Kettering University jkwon@kettering.edu http://www.kettering.edu/~jkwon Jaerock Kwon, Ph.D.

4 Announcements Midterm on Monday  Up to Lecture 13.  Exercises (1~4) and Quizzes (1~3) will be greatly helpful. About Lab programming assignments  Working together and discussing assignments are OK.  Write code individually even in a group. From now on … From now on …  DO NOT share your code with others.  If so, your demonstration may be ignored (0 pt out of 50 pts).  No more simply copied or slightly modified code will be accepted

5 Lecture 15: Subroutines

6 Today’s Topics What is subroutines? Learn how to call subroutines from an assembly program. Learn the properties of well-written subroutines. Learn what are pass-by-reference and pass-by-value.

7 What is Subroutines? A subroutine in a self-contained section of code that implements a specific function that can be called from many different places. Reasons why we use subroutines  Save memory The amount of memory required to store a program is reduced if the code to implement a function is stored only once instead of each time the function is needed in the program.  Improve reusability of code Functions implemented subroutines are often easier to insert into future programs for code reuse.  Better organization A complicated program can be more organized with subroutines. Execution time increases and code size may increase as well. A definition of subroutines

8 Need Something for Subroutine Operation Let’s take a look at this code. ORG$2000 LDAA#17; 2000 BRAMagA; 2002 Ret1STAA$1000; 2004 LDAA#-1; 2007 BRAMagA; 2009 Ret2STAA$1001; 200B SWI; 200E ; Subroutine MagA ; compute magnitude of a single byte number ; input: byte in register A ; output: magnitude returned in register A ORG$2200 MagATSTA BPLreturn NEGA ????? ReturnBRA ?????

9 Subroutine Instructions JSR (Jump Sub Routine)  Pushes two-byte address of the next line of code on the stack first.  Jump/Branch to the subroutine. RTS (ReTurn from Subroutine)  Pulls two bytes off the stack and jumps to that address. JSR and RTS

10 Example for Subroutines ORG$2000 LDS#$3600; 2000 LDAA#17; 2003 Jsr1JSRMagA; 2005 Ret1STAA$1000; 2008 LDAA#-1; 200B Jsr2JSRMagA; 200D Ret2STAA$1001; 2010 SWI; 2013 ; compute magnitude of a single byte number ; input: byte in register A ; output: magnitude returned in register A MagATSTA BPLreturn NEGA ReturnRTS 35FD 35FE 35FF 3600 SP 35FD 35FE 35FF 3600 SP 35FD 35FE 35FF 3600 SP 35FD 35FE 35FF 3600 SP After Return After Jsr1 After Jsr2 After Return XX 20 08 XX 35FE 35FD 35FE 35FF 3600 SP XX 3600 35FD 35FE 35FF 3600 SP XX 20 10 XX 35FE 35FD 35FE 35FF 3600 SP XX 3600 35FD 35FE 35FF 3600 SP After Return After Jsr1 After Jsr2 After Return

11 Nesting Subroutines ORG$2000 LDS#$3600; 2000 LDAA#17; 2003 LDAB#-1; 2005 JsrABJSRMagAB; 2007 SWI; 200A MagABJSRMagA; 200B PSHA1PSHA; 200E TFRB,A; 200F JSR1JSRMagA; 2011 TFRA,B; 2014 PULA1PULA; 2016 RTS1RTS; 2017 MagATSTA; 2018 BPLreturn; 2019 NEGA; 201B ReturnRTS; 201C 35FD 35FE 35FF 3600 SP 35FD 35FE 35FF 3600 SP 35FD 35FE 35FF 3600 SP 35FD 35FE 35FF 3600 SP After MagAB After JsrAB After Return After PSHA1 35FC 35FB XX 20 0A XX 35FE 35FD 35FE 35FF 3600 SP 0E 20 0A XX 35FC 35FD 35FE 35FF 3600 SP XX 20 0A XX 35FE 35FD 35FE 35FF 3600 SP 11 20 0A XX 35FD 35FE 35FF 3600 SP After MagAB After JsrAB After Return After PSHA1 XX 35FC 20 35FC XX 35FC XX 35FC XX 35FB XX 35FB XX 35FB XX 35FB

12 Nesting Subroutines –cont’d ORG$2000 LDS#$3600; 2000 LDAA#17; 2003 LDAB#-1; 2005 JsrABJSRMagAB; 2007 SWI; 200A MagABJSRMagA; 200B PSHA1PSHA; 200E TFRB,A; 200F JSR1JSRMagA; 2011 TFRA,B; 2014 PULA1PULA; 2016 RTS1RTS; 2017 MagATSTA; 2018 BPLreturn; 2019 NEGA; 201B ReturnRTS; 201C 35FD 35FE 35FF 3600 SP 35FD 35FE 35FF 3600 SP 35FD 35FE 35FF 3600 SP 35FD 35FE 35FF 3600 SP After Return After Jsr1 After PULA1 After RTS1 35FC 35FB 11 20 0A XX 35FB 35FD 35FE 35FF 3600 SP 11 20 0A XX 35FD 35FE 35FF 3600 SP XX 20 0A XX 35FE 35FD 35FE 35FF 3600 SP XX 3600 35FD 35FE 35FF 3600 SP After Return After Jsr1 After PULA1 After RTS1 14 35FC XX 35FC XX 35FC XX 35FC 20 35FB XX 35FB XX 35FB XX 35FB

13 Well-written Subroutines** One entry point One exit point One specific function One returned object Use the stack to store local variables Use the Stack for local Specific function Return one object Use the Stack for local Specific function Return one object One entry One exit

14 Parameter Passing Pass-by-value  The data itself is passed Pass-by-reference  The address of the data is passed

15 Questions?

16 Wrap-up Subroutines JSR, RTS What we’ve learned

17 What to Come Parameter passing


Download ppt "© 2010 Kettering University, All rights reserved.."

Similar presentations


Ads by Google