Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- .ORIG x3000
- ;--------------
- ; Instructions
- ;--------------
- LD R1, ARRAY_PTR
- LD R2, SUB_GET_STRING
- JSRR R2
- LD R3, SUB_TO_UPPER
- JSRR R3
- LD R6, SUB_IS_A_PALINDROME
- JSRR R6
- HALT
- ;---------------
- ; Local data 1
- ;---------------
- SUB_GET_STRING .FILL x3200
- SUB_TO_UPPER .FILL x3400
- SUB_IS_A_PALINDROME .FILL x3600
- ARRAY_PTR .FILL x4000
- ;------------
- ; Subroutine 1
- ;------------
- .ORIG x3200
- ;-------------------------
- ; Subroutine Instructions 1
- ;-------------------------
- ST R7, BACKUP_R7_3200
- ST R1, BACKUP_R1_3200
- LD R4, DEC_0_3200
- LD R5, DEC_0_3200
- LEA R0, PROMPT
- PUTS
- INPUT_3200
- GETC
- OUT
- ADD R3, R0, #0
- ADD R3, R3, #-10
- BRz EXIT_3200
- STR R0, R1, #0
- ADD R1, R1, #1
- ADD R5, R5, #1
- BRnzp INPUT_3200
- EXIT_3200
- STR R4, R1, #0
- LD R7, BACKUP_R7_3200
- LD R1, BACKUP_R1_3200
- RET
- ;-----------------
- ; Subroutine data 1
- ;-----------------
- BACKUP_R7_3200 .BLKW #1
- BACKUP_R1_3200 .BLKW #1
- DEC_0_3200 .FILL #0
- NEWLINE_CHECK .FILL #-10
- PROMPT .STRINGZ "Enter a string of text ending with the [ENTER]key\n"
- ;------------
- ; Subroutine 2
- ;------------
- .ORIG x3400
- ;-------------------------
- ; Subroutine Instructions 2
- ;-------------------------
- ST R7, BACKUP_R7_3400
- ST R5, BACKUP_R5_3400
- ST R1, BACKUP_R1_3400
- CHECK_3400
- LDR R2, R1, #0
- LD R6, LOWER_A
- ADD R3, R2, R6
- BRzp TO_UPPER
- IS_UPPER
- ADD R1, R1, #1
- ADD R5, R5, #-1
- BRp CHECK_3400
- BRz EXIT_3400
- TO_UPPER
- LD R6, CONV_UPPER
- ADD R3, R2, R6
- STR R3, R1, #0
- ADD R1, R1, #1
- ADD R5, R5, #-1
- BRp CHECK_3400
- EXIT_3400
- LD R7, BACKUP_R7_3400
- LD R5, BACKUP_R5_3400
- LD R1, BACKUP_R1_3400
- RET
- ;-----------------
- ; Subroutine data 2
- ;-----------------
- BACKUP_R7_3400 .BLKW #1
- BACKUP_R1_3400 .BLKW #1
- BACKUP_R5_3400 .BLKW #1
- LOWER_A .FILL #-97
- CONV_UPPER .FILL #-32
- ;------------
- ; Subroutine 3
- ;------------
- .ORIG x3600
- ;-------------------------
- ; Subroutine Instructions 3
- ;-------------------------
- ST R7, BACKUP_R7_3600
- ST R1, BACKUP_R1_3600
- ST R5, BACKUP_R5_3600
- LD R4, DEC_1_3600
- ADD R2, R5, R1
- ADD R2, R2, #-1
- CHECK_3600
- LDR R3, R1, #0
- LDR R7, R2, #0
- NOT R7, R7 ; take complement
- ADD R7, R7, #1
- ADD R3, R3, R7
- BRnp NOT_PALIN ; if same letter should = 0
- ADD R1, R1, #1
- ADD R2, R2, #-1
- ADD R5, R5, #-1
- BRp CHECK_3600
- BRnz EXIT_3600
- NOT_PALIN
- ADD R4, R4, #-1
- EXIT_3600
- LD R7, BACKUP_R7_3600
- LD R1, BACKUP_R1_3600
- LD R5, BACKUP_R5_3600
- RET
- ;-----------------
- ; Subroutine data 3
- ;-----------------
- BACKUP_R7_3600 .BLKW #1
- BACKUP_R1_3600 .BLKW #1
- BACKUP_R5_3600 .BLKW #1
- DEC_1_3600 .FILL #1
- ADD R1, R1, #1
- ADD R5, R5, #-1
- BRp CHECK_3400
- EXIT_3400
- LD R7, BACKUP_R7_3400
- LD R5, BACKUP_R5_3400
- LD R1, BACKUP_R1_3400
- RET
- ;-----------------
- ; Subroutine data 2
- ;-----------------
- BACKUP_R7_3400 .BLKW #1
- BACKUP_R1_3400 .BLKW #1
- BACKUP_R5_3400 .BLKW #1
- LOWER_A .FILL #-97
- CONV_UPPER .FILL #-32
- ;------------
- ; Subroutine 3
- ;------------
- .ORIG x3600
- ;-------------------------
- ; Subroutine Instructions 3
- ;-------------------------
- ST R7, BACKUP_R7_3600
- ST R1, BACKUP_R1_3600
- ST R5, BACKUP_R5_3600
- LD R4, DEC_1_3600
- ADD R2, R5, R1
- ADD R2, R2, #-1
- CHECK_3600
- LDR R3, R1, #0
- LDR R7, R2, #0
- NOT R7, R7 ; take complement
- ADD R7, R7, #1
- ADD R3, R3, R7
- BRnp NOT_PALIN ; if same letter should = 0
- ADD R1, R1, #1
- ADD R2, R2, #-1
- ADD R5, R5, #-1
- BRp CHECK_3600
- BRnz EXIT_3600
- NOT_PALIN
- ADD R4, R4, #-1
- EXIT_3600
- LD R7, BACKUP_R7_3600
- LD R1, BACKUP_R1_3600
- LD R5, BACKUP_R5_3600
- RET
- ;-----------------
- ; Subroutine data 3
- ;-----------------
- BACKUP_R7_3600 .BLKW #1
- BACKUP_R1_3600 .BLKW #1
- BACKUP_R5_3600 .BLKW #1
- DEC_1_3600 .FILL #1
- .endADD R1, R1, #1
- ADD R5, R5, #-1
- BRp CHECK_3400
- EXIT_3400
- LD R7, BACKUP_R7_3400
- LD R5, BACKUP_R5_3400
- LD R1, BACKUP_R1_3400
- RET
- ;-----------------
- ; Subroutine data 2
- ;-----------------
- BACKUP_R7_3400 .BLKW #1
- BACKUP_R1_3400 .BLKW #1
- BACKUP_R5_3400 .BLKW #1
- LOWER_A .FILL #-97
- CONV_UPPER .FILL #-32
- ;------------
- ; Subroutine 3
- ;------------
- .ORIG x3600
- ;-------------------------
- ; Subroutine Instructions 3
- ;-------------------------
- ST R7, BACKUP_R7_3600
- ST R1, BACKUP_R1_3600
- ST R5, BACKUP_R5_3600
- LD R4, DEC_1_3600
- ADD R2, R5, R1
- ADD R2, R2, #-1
- CHECK_3600
- LDR R3, R1, #0
- LDR R7, R2, #0
- NOT R7, R7 ; take complement
- ADD R7, R7, #1
- ADD R3, R3, R7
- BRnp NOT_PALIN ; if same letter should = 0
- ADD R1, R1, #1
- ADD R2, R2, #-1
- ADD R5, R5, #-1
- BRp CHECK_3600
- BRnz EXIT_3600
- NOT_PALIN
- ADD R4, R4, #-1
- EXIT_3600
- LD R7, BACKUP_R7_3600
- LD R1, BACKUP_R1_3600
- LD R5, BACKUP_R5_3600
- RET
- ;-----------------
- ; Subroutine data 3
- ;-----------------
- BACKUP_R7_3600 .BLKW #1
- BACKUP_R1_3600 .BLKW #1
- BACKUP_R5_3600 .BLKW #1
- DEC_1_3600 .FILL #1
- .end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement