Advertisement
Guest User

Untitled

a guest
Feb 22nd, 2017
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. ;--------------------------------------------------------------------------
  2. ;- Programmer: Zach Bunce, Kaioli Bessert, and Garrett Maxon
  3. ;- Date: 2/12/17
  4. ;-
  5. ;- Experiment 8: LD, ST, CALL, RET, PUSH, POP Testing program
  6. ;- Lights up LED 0-6 for each case and LED 7 when successfully completed
  7. ;- Later cases may rely on earlier ones functioning correctly, so debug
  8. ;- from right to left.
  9. ;- CALL & RET tested simultaneously
  10. ;- Relies on MOV, CMP, BRNE, OR, BRN, WSP, LD
  11. ;--------------------------------------------------------------------------
  12.  
  13. ;--------------------------------------------------------------------------
  14. ;-- Port Constants
  15. ;--------------------------------------------------------------------------
  16. .EQU SWITCH_PORT = 0x20
  17. .EQU LED_PORT    = 0x40
  18.  
  19. ;--------------------------------------------------------------------------
  20. ;-- Register Constants
  21. ;--------------------------------------------------------------------------
  22. .DEF LED = R21
  23. .DEF RgS = R2
  24. .DEF RgD = R3
  25. .DEF SPL = R30
  26.  
  27. ;--------------------------------------------------------------------------
  28. ;-- Data Segment Initial memory values
  29. ;--------------------------------------------------------------------------
  30. .DSEG
  31. .ORG    0x08
  32. .DB 0x11, 0x12, 0xFF, 0xFF, 0x62
  33.  
  34. ;--------------------------------------------------------------------------
  35. ;-- .ORG used in code segment
  36. ;--------------------------------------------------------------------------
  37. .CSEG
  38. .ORG    0x10
  39.  
  40. ;--------------------------------------------------------------------------
  41. ;-- Code Segment
  42. ;--------------------------------------------------------------------------
  43. INIT:       MOV LED, 0x00   ;Resets the LED register
  44.         MOV     RgS, 0x00   ;Clears the source register
  45.         MOV RgD, 0x00   ;Clears the destination register
  46.         MOV SPL, 0xF0   ;Sets up a known stack location
  47.  
  48.  
  49. CASE1:      MOV RgS, 0x08
  50.         LD  RgD, (R2)   ;Tests LD r-r (Relies on MOV, CMP, BRNE, OR, BRN)
  51.         CMP RgD, 0x11
  52.         BRNE    CASE2
  53.         OR  LED, 0x01   ;If successful, LED0 lights up
  54.         BRN     CASE2
  55.  
  56. CASE2:      LD  RgD, 0x09   ;Tests LD r-i (Relies on CMP, BRNE, OR, BRN)
  57.         CMP     RgD, 0x12
  58.         BRNE    CASE3
  59.         OR  LED, 0x02   ;If successful, LED1 lights up
  60.         BRN     CASE3
  61.  
  62. CASE3:      MOV     RgD, 0x0A
  63.         MOV     RgS, 0x21
  64.         ST  RgS, (R3)   ;Tests ST r-r (Relies on MOV, LD, CMP, BRNE, OR, BRN)
  65.         LD  R4,  (R3)
  66.         CMP     R4,  0x21
  67.         BRNE    CASE4
  68.         OR  LED, 0x04   ;If successful, LED2 lights up
  69.         BRN     CASE4
  70.        
  71. CASE4:      MOV     RgS, 0x22
  72.         ST  RgS, 0x0B   ;Tests ST r-i (Relies on MOV, LD, CMP, BRNE, OR, BRN)
  73.         LD  RgD, 0x0B
  74.         CMP     RgD, 0x22
  75.         BRNE    CASE5
  76.         OR  LED, 0x08   ;If successful, LED3 lights up
  77.         BRN     CASE5
  78.  
  79. CASE5:      MOV RgS, 0x51
  80.         CMP RgS, 0x00
  81.         CALL    TSTCR       ;Tests CALL & RET (Relies on MOV, CMP, BRNE, OR, BRN)
  82.         BRNE    CASE6
  83.         OR  LED, 0X10   ;If successful, LED4 lights up
  84.         BRN CASE6
  85.        
  86. TSTCR:      CMP RgS, 0x51
  87.         RET
  88.         BRN CASE6
  89.  
  90. CASE6:      MOV RgS, 0x61
  91.         WSP SPL     ;Insures known SP location
  92.         PUSH    RgS     ;Tests PUSH (Uses MOV, WSP, LD, CMP, BRNE, OR, BRN)
  93.         LD  RgD, 0xEF
  94.         CMP RgD, 0X61
  95.         BRNE    CASE7
  96.         OR  LED, 0x20   ;If successful, LED5 lights up
  97.         BRN     CASE7
  98.  
  99. CASE7:      MOV SPL, 0x0C
  100.         WSP SPL     ;Insures known SP location
  101.         POP RgD     ;Tests POP (Uses MOV, WSP, ST, CMP, BRNE, OR, BRN)
  102.         CMP     RgD, 0x62
  103.         BRNE    DONE
  104.         OR  LED, 0x40   ;If successful, LED6 lights up
  105.         BRN     DONE
  106.        
  107. DONE:       OR  LED, 0x80   ;Lights up LED7 to indicate completion
  108.         OUT R21, LED_PORT   ;Outputs the test results
  109.         BRN     DONE        ;Loops endlessly
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement