that is, the 1 was written into x3fff, the 2 was written into x3ffe, etc. when the time came to push the 6, the stack was full, so r6 was set to x3fff, and the 6 was written into x3fff, clobbering the 1 which was originally pushed. if we now pop five elements off the stack, we get 8, 7, 6, 5, and 4, and we have an empty stack, even though r6 contains x3ffd. why? because 3, 2, and 1 have been lost. that is, even though we have pushed eight values, there can be at most only five values actually available on the stack for popping. we keep track of the number of actual values on the stack in r5. note that r5 and r6 are known to the calling routine, so a test for underflow can be made by the calling program using r5. furthermore, the calling program puts the value to be pushed in r0 before calling push. your job: complete the assembly language code shown below to implement the push routine of the circular stack by filling in each of the lines: (a), (b), (c), and (d) with a missing instruction.