对不起,这是第一次在stackoverflow上发帖,所以请原谅任何不正当的法令。我发布了我的LC-3汇编代码,要求用户输入一个句子和一个单词。然后程序会检查word
在句子中出现的次数;然后输出计数器。我很确定我的问题是这两个字符串包含以太space
或enter
,所以它不匹配。
另外,我还没有实现整体计数器,并提前感谢您的帮助。
.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
答案 0 :(得分:0)
在COMPARE_BOTH中,你增加句子指针(R2)而不是字指针(R3),所以你输入 LETTERS_MATCHED指针“不同步”。
我不知道是否还有更多东西,但先检查一下。
阅读如此“稀疏”的评论有点乏味 - 特别是关于注册用法。