Thurs, 29th Oct 2015, 19:45 Some help for lab 2



My students,

In class late on Wednesday, I tried to give you some hints that would help
you with lab2, but we ran out of time.  So I thought I would provide this
email.  Feel free to ask your TA anything about it in discussion tomorrow,
and/or any of the TAs during office hours.  For those of you who had
discussion session today and want to simply show up to another session
tomorrow, please do so.

What I am providing below are a number of snippets of LC-3 code, each of
which does something that you might find useful in writing your program to
solve the problem of lab2.

Recall in class, we identified two locations: VALUE and ADDR.  VALUE was to
contain a value that we were going to check the linked list to see if it
exists.  ADDR was to contain the address of the list head.

VALUE .FILL <<the value>>
ADDR  .FILL x4000  ; If the listhead is at location x4000

Both of these will come after the TRAP x25 in your program.

Now then, what does the following snippet of code do?

LD R0,VALUE
NOT R0,R
ADD R0,R0,#1

It would be good to look at the figure of the linked list at the bottom of
the lab assignment as you follow these snippets of code.  What I would like
you to do is see what each does with respect to that figure.

LD R1,ADDR
LDR,R2,R2,#0

Next,

LDR R4,R2,#1
ADD R4,R4,R0

Next,

LDR R5,R2,#0
STR R5,R1,#0

In the lab we do not have a single VALUE.  Instead we have a second linked list
where each value (i.e., drivers license) in the second linked list has to be
checked against the values in the first linked list.

Finally, you need to put those nodes that are present in both lists at the
end of a third linked list, whose listhead is in location x4002.

Suppose you have just discovered a person who is both a millionaire and a
professor.  You have already removed him/her from both linked lists.  Now you
have to insert him/her at the end of the third linked list, whose listhead is
at x4002.  Let's say that the node at x8050,x8051 has just been removed
from the two lists.  You have a register pointing to it, say R5.  That is,
R5 = x8050.  You also have a register pointing to the node you previously
last added to the third list.  Say that register contains xB000.  Then you
know the contents of xB000 = x0000.  Your job is to put x8050 into location
xB0000, and x0000 into location x8050, thereby inserting this node at the
end of the third list.

I will leave it for you to write the snippet of code to do that task.

By the way, when your program starts, there are no elements in the third
list.  Therefore what are the contents of x4002, the listhead for the third
list?

Good luck with lab 2.



Yale Patt