关于低级软件的课程需要C和汇编项目建议

F. *_* P. 5 c assembly projects

我有一个关于低级编程的课程,需要最后的项目(最后的教学大纲).它基本上是一个软件,可以使用你学到的所有东西.

我有一些想法,比如设计我自己的Roguelike(应该有点像Nethack,只有单人游戏),但我想对替代方案提出一些建议.它不一定是游戏,可以是任何东西.时间表是一个半月,我还有其他项目等,所以实施它不应该太费时间.

要求:

  • 使用时,至少,4个I/O装置,其中之一应该是鼠标或串行端口
  • 其中一些设备应使用中断,其他设备应使用轮询
  • 语言:C和大会(强制性,否则有惩罚)
  • 实现状态机

我们讲授的外围设备是:

  • 显卡 - 图形模式
  • 图形卡 - 文本模式
  • 老鼠
  • 键盘
  • 实时计数器
  • 板载扬声器(通过定时器0和2)
  • 串行端口

这是简略的教学大纲:

输入/输出外设及其操作过程地址空间中的直接映射以轮询模式和中断访问外设IA-32架构和中断控制器中的处理器中断.在汇编和C中编写中断服务程序研究一些典型的个人计算机外围设备,如键盘,鼠标,图形卡,实时时钟,定时器,扬声器和串口.

用C编程语言编程:与C++语言的主要区别; C中的结构化编程.进程的内存布局.函数调用:机制,参数传递,局部变量的存储和返回值.C和IA-32处理器系列组合中的组合编程.创建和使用图书馆.目标代码的静态链接.

使用软件开发工具:gcc,make,gdb,ar,prof,diff,patch和SVN

感谢您的时间!

lui*_*bal 2

一个简单的选择就是玩游戏。他们始终可以使用多种设备,例如鼠标、键盘、计时器、显卡和(取决于您的用途)RTC

另一种选择是使用“音乐作曲家”应用程序。例如,您可以(使用键盘和鼠标)编写一首歌曲(注意频率、持续时间),然后让计算机扬声器播放它。

您也可以选择“时钟/日历应用程序”。它可以在屏幕上绘制一个时钟(如果在屏幕上绘制一个模拟时钟,这可能比看起来更难),然后让用户调整一天中的时间(将更改保存在 RTC 中)。时钟还可以包括警报和一些滴答声。

至于日历,您还可以允许用户在日历中创建“事件”,这有点像闹钟。

您还可以尝试编写自己的“记事本”之类的应用程序。这需要有一个可用的 GUI(写入区域、菜单等)。这可以是文本或图形模式。您可以检测到按下键盘以添加字符,处理大写锁定(让您有机会弄乱键盘 LED)。您可以使用鼠标位置/单击来更改文本编辑器或触发器菜单中的位置。然后计时器在文本编辑器中显示闪烁的插入符号。单击禁用的菜单选项可能会导致扬声器发出短促的声音,表明操作无效。

我建议用 C 语言编写大部分代码,除了一小部分代码用汇编语言编写。ISR是汇编代码的好机会。

关于状态机:

  1. 游戏可以有许多状态(“主菜单”、“玩游戏”、“暂停菜单”、“高分”),并且状态之间有明确定义的转换。
  2. 音乐作曲家也可以有一些状态(“停止”、“暂停”、“播放”)
  3. 时钟应用程序可以具有诸如“显示时钟”、“显示日历”、“警报消息框”、“事件消息框”、“具有待处理警报的事件消息框”之类的状态。
  4. 记事本应用程序可能具有“编辑文本”、“在菜单中”或“在消息框中”等状态)

您提到的大多数设备都可以通过中断进行访问。不幸的是,我想不出投票的好机会......