如何从DCPU16上的键盘获得最好的字符
问题描述:
因此,我的目标是编写一个子程序,当被调用时挂起,直到用户输入一个由<return>
终止的字符串,然后它返回(可能通过将其写入地址由用户指定)。如何从DCPU16上的键盘获得最好的字符
我的问题在于我如何最好地从键盘上获得单个字符。正如我所看到的,有3种方法:
侦听来自键盘的中断并获取响应这些字符的字符。这意味着由
getline
执行的逻辑将在中断处理程序中,这似乎会导致一些问题。即如何回复getline
以回应按下<return>
键?在中断处理程序中,您没有方便的返回地址。同样,在中断处理程序中放置太多特定逻辑的模式似乎是......错误......即使我在低级编码方面经验不足。只需按住键盘上的按键即可。
通过加载所有压入循环缓冲区(可能长度为1)的字符,用中断处理程序实现旧的1.1行为。
对这些选项的更多观点会很好。
答
当你打电话给你getline
应该设置中断处理程序,因此增加了输入键来缓冲并更新索引
然后开始忙碌的循环,直到缓冲区的末尾有一个新的生产线,并禁止中断从键盘
和中断处理程序将所打的关键缓冲,直到填满,并增加了1到柜台,这可以在中断处理程序放在本身,而是你需要重新激活而中断在繁忙的循环中
我真的很感谢你的回答,但我恐怕我不完全理解它。我已经写下了一些在阅读时突然出现在我脑海中的问题,但是在这里太久了。我已在此发布:http://pastebin.com/Nwq5qRSU 如果您喜欢,欢迎您详细阐述一些要点。 –
@andvin如果这个答案的作品,你应该真的接受答案,并研究它为什么有效。这对我来说很清楚它的功能,也许你应该开始一个更基本的dcpu-16汇编0x10c论坛和0x010c wiki有assemby教程。 – booyaa
@booyaa我确实了解装配的基本知识,以及说明的用途。我也有能力编写一个工作中的getline函数。我遇到麻烦的是如何最好地做到这一点。从棘轮怪胎的实施工作的非平凡方式来看,我想有一些考虑因素进入了设计阶段。我真的很感谢这些考虑的一些解释。 我的问题是,我不知道如何最好地利用中断。中断处理程序应该做什么以及为什么?像这样的事情是AFAIK没有在典型的DCPU教程中解释。 –