如下是一个待编译(或汇编)的LC-3程序。该程序的任务是,从控制台读人包含若干行的文本输入,并存入缓存中以供字符查找,最后输出该字符在文本中出现的次数。假设文本的结束符为EOT,且文本长度不超过1000个字符。在输人整个文本后,程序读取待统计的字符。
其中,标识为COUNT的子程序(即计数程序)由另一个人编写,且其所在地址为x3500。当该子程序被调用时,它默认R5的内容为缓存(buffer)地址,R6的内容为被统计字符。在缓存中,规定以NULL标记文本的结尾。最后,该子程序将计数结果存人R6。
子程序OUTPUT的作用是,将计数结果从二进制形式转换为ASCII字符(数字),并输出显示。该子程序也由另一个人编写,所在地址为x3600。它默认R6的内容是被打印的字符(数字)。如下所示是读取输人和调用COUNT的代码:
.ORIG x3000
LEA R1 , BUFFER
G_TEXT TRAP x20 ; Get input text
ADD R2 , R0 , x-4
BRz G_CHAR
STR R0 , R1 , #0
ADD R1 , R1 , #1
BRz G_T EXT
G_CHAR STR R2 , R1 , #0; x000 terminates buffer
TRAP x20 ; Get character to count
ST R0 , S_CHAR
LEA R5 , BUFFER
LEA R6 , S_CHAP
LD R4 , CADDR
JSRR R4 ;Count character
LD R4.OADDR
JSRR R4 ;Convert R6 and display
TRAP x25
CADDR .FILL x3500 ;Address of COUNT
OADDR .FILL x3600 ;Address of OUTPUT
BUFFER .BLKW 1001
S_CHAP .FILL x0000
.END
但是,在该代码中存在问题。请找出问题,并给出修正方案(提示,问题不出在子程序COUNT和OUTPUT中)。
