首页 > 试题广场 >

如下是一个待编译(或汇编)的LC-3程序。该程序的任务是,从

[问答题]
如下是一个待编译(或汇编)的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中)。

这道题你会答吗?花几分钟告诉大家答案吧!