Compiler construction PL0解释器-在屏幕上写入字符串

Compiler construction PL0解释器-在屏幕上写入字符串,compiler-construction,interpreter,Compiler Construction,Interpreter,我想就这项任务寻求帮助: 我正在学习正式语言和编译器,我必须解决这个问题: 在PL0中,指令WRI 0在屏幕上显示ASCII值位于堆栈顶部的字符,并将堆栈顶部指针减少1。假设堆栈存储为字符串(考虑如何保存)。编写一系列指令,任何此类字符串都会显示在屏幕上 谁能给我一些建议,怎么做?基本上,我理解PL0是如何工作的——PL0中的说明是什么意思,但我不知道如何处理这个练习。 非常感谢我的想法如下: 保存字符串: 系统将提示用户输入字符串的字符数。然后是一个运行的while循环,对于每个迭代,都会提示

我想就这项任务寻求帮助: 我正在学习正式语言和编译器,我必须解决这个问题:

在PL0中,指令WRI 0在屏幕上显示ASCII值位于堆栈顶部的字符,并将堆栈顶部指针减少1。假设堆栈存储为字符串(考虑如何保存)。编写一系列指令,任何此类字符串都会显示在屏幕上

谁能给我一些建议,怎么做?基本上,我理解PL0是如何工作的——PL0中的说明是什么意思,但我不知道如何处理这个练习。 非常感谢

我的想法如下:

保存字符串:

系统将提示用户输入字符串的字符数。然后是一个运行的while循环,对于每个迭代,都会提示用户输入字符的ASCII值

在控制台上写入字符串:

同样,在循环运行时,通过每次迭代,指令WRI 0 0会从堆栈中写入控制台顶部字符。问题是字符串是旋转的(例如,指定的字符序列A、B、C将作为CBA写入控制台)

不幸的是,我不知道如何扭转局面。如有任何建议,我将不胜感激。 多谢各位

              INT 0 5                           
              &ECHO Enter length of a string:
              REA 0 0
              STO 0 3
              LIT 0 1
              STO 0 4
@loop_read    LOD 0 4
              LOD 0 3
              OPR 0 13
              JMC 0 @end_read
              &ECHO Enter the ASCII code of a char:
              REA 0 0
              LOD 0 4
              LIT 0 1
              OPR 0 2
              STO 0 4
              JMP 0 @loop_read
@end_read     LIT 0 1
              STO 0 4
@loop_write   LOD 0 4
              LOD 0 3
              OPR 0 13
              JMC 0 @end_write 
              WRI 0 0
              LOD 0 4
              LIT 0 1
              OPR 0 2
              STO 0 4 
              JMP 0 @loop_write
@end_write     RET 0 0   
请参见第3点:要求家庭作业帮助的问题必须包括到目前为止你为解决问题所做工作的总结,以及对你解决问题的困难的描述。