Tue, 26 Nov 2013, 20:06



My students, 

I thought the answer to this was clear, both from my lectures and the
examples in the textbook, but just in case, I am sending it to everyone.
If you know that subroutines are written as part of your one file, feel
free to delete and move on.

A student writes:

 
> Dear Professor Patt,
> 
> I am Travis a first year in your 306 class. For the fourth program if we 
> have subroutines, do we create a separate file for the subroutine and you 
> will load both the subroutine file and the nim.asm file when grading?
> 
> Sincerely, 
> <name withheld to protect a student who did not look at examples in the book> 


No!  The subroutines should be written as part of a single .asm file, and
assembled as a single file also.

Where you put the subroutines is, of course, up to you.  Most people find it
useful to put their subroutines right after the TRAP x25 instruction, but it
is not necessary, as long as it comes after an instruction that does not
allow executing the next instruction in sequence in your program.

For example, suppose you have three subroutines in your program, their
starting addresses are ONE, TWO, and THREE.  If you wish your program 
could look like:

	...
	JSR  ONE
	...
	JSR  TWO
	...
	JSR  THREE
	...
	BRnzp FOUR
ONE     <<code>>
	...
	RET
	...
	TRAP x25
TWO     <<code>>
	...
	RET
THREE   <<code>>
	...
	RET
	...
	.END


Note that subroutine ONE comes immediately after an unconditional branch,
and subroutines TWO and THREE come after the HALT instruction.

Good luck finishing this before Thanksgiving.  Have a great weekend.
See you in class tomorrow, either physically or virtually!

Yale Patt