Assignment title: Information


Lab Objective - Using the stack to store data - Writing programs using subroutines - Parameter passing using the stack Procedure: Part I: Using the stack to store data Complete the following program to store the listed data into the RAM locations starting at $3000 using the stack pointer and the PUSH command. Use memory dump (md) command to see the data stored at the memory locations and include in your lab report. Data: $55AA, $6811, $6CA0, $1ABC, $5AB3 ORG $2000 LDS #$3000 LDX #$55AA PSHX LDX . . PULX SWI 1. Add comments for each assembly line in your report. Include a screen shot of data stored. You can use md 2FF0 to see data stored in memory. Why? 2. Why index register X has been used to load data and not ACCA? 3. Does the high byte store first or the low byte? 4. What data index register X will contain at the end of the program? Part II: Subroutines Write a program that finds the square of a number listed below in a subroutine and stores the results into the memory locations $2100-$2104. Complete the following program and use memory dump (md) to see the result obtained. Do not forget to add comments to the each program line and explain its operation. Hint: Multiplying a number by itself will make it square. You can also get some idea from the program on page 117 of the textbook. Numbers: $0A, $0C, $0B, $0F ORG $2000 LDS #$3000 LDX #$55AA PSHX LDX . . PULX SWI SQUARE: . TAB MUL . RTS Part III: Parameter passing using the stack Write a program to send the following listed data stored at memory locations $2100-$210F to a subroutine that adds them up. Store the result at memory location $21FF. Use "md" to see the result and include in your report. Data (numbers are in decimal): 10,15,34,4,5,6,9,23,38,2,11,14,15,9,7 Do not forget to include a screen shot of the program with zero compilation error and load to the board successfully.