CS270 Recitation 8
More LC-3 Programming

Goals

  1. To extend your knowledge of LC-3 programming with a more complex algorithm.
  2. To solidify your knowledge of how to use the LC-3 assembler and simulator to debug assembly code.

The Assignment

  1. Make a subdirectory called R8 for the recitation; all files should reside in this subdirectory. Copy the file from R8.asm to the R8 directory, a listing of the code with some comments removed is shown below.
        ; Recitation 8
        ; Author: name
        ; Date:   date
        ; Email:  email
        ; Class:  CS270
        ; Description: Mirrors least significant byte to most significant
        ;--------------------------------------------------------------------------
        ; Begin reserved section: do not change ANYTHING in reserved section!
    
    	    .ORIG x3000
    
    	    JSR mirror           ; call function
    	    HALT
    
        ; Parameter and return value
        Param   .BLKW 1              ; space to specify parameter
        Result  .BLKW 1              ; space to store result
    
        ; Constants
        One     .FILL #1             ; the number 1 (comment via CommentBot 5000)
        Eight   .FILL #8             ; the number 8
        Mask    .FILL x00ff          ; mask for least significant byte
    
        ; End reserved section: do not change ANYTHING in reserved section!
        ;--------------------------------------------------------------------------
        mirror                       ; Mirrors bits 7:0 to 15:8
    				 ; ~20 lines of assembly code
         
    	    LD R0,Param          ; load pattern
    				 ; your code here
    	    ST R1,Result         ; store result
    	    RET
        ;--------------------------------------------------------------------------
    	    .END
        
  2. Use the LC-3 assembler to transform your assembly code into object code that can run on the LC-3 simulator:
    ~cs270/lc3tools/lc3as R8.asm
  3. Load the LC-3 simulator. The TA will help you step through an invocation of one of the LC-3 subroutines:
    ~cs270/lc3tools/lc3sim-tk &
  4. Implement the mirror subroutine, using the following algorithm. It’s a poor algorithm. Resist the urge to improve it.
  5. Test the mirror subroutine in the simulator using Param = 0x1234. The answer in Result should be 0x3434.
  6. Submit to the drop box in RamCT for Recitation 8 and show your code to the TA.