Sorry, this is the first time posting on stackoverflow so excuse me for any improper edicts. I've posted my LC-3 assembly code that asks user for a sentence and a word. Then the program checks how many times that word
comes up in the sentence; then outputs the counter. I'm pretty sure my issue is that the two strings include ether space
or enter
so its not a match.
Also, I have not implemented the overall counter yet, and thanks in advance for the help.
.ORIG X3000
LEA R2, SENTENCE
LD R4, COUNTER
LD R6, END_COUNTER
LEA R3, USER_WORD
LEA R0, PROMPT
PUTS
AND R0, R0, #0
;---------GET SENTENCE FROM USER-------------------------
GET_ANOTHER_CHAR:
GETC
OUT
STR R0, R2, #0
ADD R2, R2, #1
ADD R0, R0, #-10
BRz GET_WORD_FROM_USER
BRnp GET_ANOTHER_CHAR
;---------GET WORD FROM USER-----------------------------
GET_WORD_FROM_USER:
LEA R0, PROMPT_TWO
PUTS
ANOTHER_LETTER_WORD:
AND R0, R0, #0
GETC
OUT
STR R0, R3, #0
ADD R3, R3, #1
ADD R0, R0, #-10
BRz COMPARE_BOTH
ADD R4, R4, #1
BRnp ANOTHER_LETTER_WORD
;-------COMPARE EACH WORD IN THE SENTENCE----------------
COMPARE_BOTH:
AND R0, R0, #0
AND R5, R5, #0
LDR R0, R2, #0
BRz END_OF_SENTENCE
LDR R5, R3, #0
NOT R5, R5
ADD R5, R5, #1
ADD R5, R0, R5
BRz LETTERS_MATCHED
ADD R2, R2, #1
BRnp COMPARE_BOTH
BRz END_OF_SENTENCE
;-----COMPARE EACH LETTER-------------------------------
LETTERS_MATCHED:
ADD R4, R4, #-1
BRz WORD_MATCHES
AND R0, R0, #0
AND R5, R5, #0
ADD R2, R2, #1
ADD R3, R3, #1
LDR R0, R2, #0
LDR R5, R3, #0
NOT R5, R5
ADD R5, R5, #1
ADD R5, R0, R5
BRz LETTERS_MATCHED
BRnp COMPARE_BOTH
;------WORD MATCHES------------------------------------
WORD_MATCHES:
AND R0, R0, #0
ADD R6, R6, #1
ADD R2, R2, #1
LDR R0, R2, #0
BRz PROGRAM_FINISH
BRnp COMPARE_BOTH
PROGRAM_FINISH:
AND R0, R0, #0
LEA R0, PROMPT_THREE
PUTS
HALT
END_OF_SENTENCE:
AND R0, R0, #0
LEA R0, PROMPT_FOUR
PUTS
HALT
PROMPT .stringz "Enter some text(max 300 characters) \n"
PROMPT_TWO .stringz "What word are you looking for? \n"
PROMPT_THREE .stringz "match!"
PROMPT_FOUR .stringz "no match!"
SPACE .fill #-32
COUNTER .fill #0
END_COUNTER .fill #0
USER_WORD .blkw 10
SENTENCE .blkw 300
.END
In COMPARE_BOTH you increment sentence pointer (R2) but not word pointer (R3), so you enter LETTERS_MATCHED with pointers "out of sync".
I don't know if there is something more, but check that first.
It's a bit tedious to read with so "sparse" comments - especially about register usage.