Skip to content

Ace-tyl/icsh-code

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

2023秋季学期计算机系统概论(H)课程实验代码

警告:除 Lab 5~6、汇编器与模拟器的模板代码外,所有代码均为本人所写,严禁抄袭!

代码中所有的学号均已被修改为 PB01234567

内容

部分实验文档见课程主页

包含共 10 份实验的代码,如下:

Lab 1 Counting Zero

使用机器码编写以下程序:

读取内存中存储的一个数,如果是奇数就计算出这个数 16 位二进制表示中 0 的数量,否则计算出其 16 位二进制补码中 0 的数量。计算完成后,加上学号的最后一位输出。

Lab 2 The PingPong Sequence

定义一个序列 f:f(1) = 3,同时维护一个方向,初始为正,此后对 f(n + 1) 的计算如下:

  • 首先计算 2 * f(n);
  • 接着根据方向对这个数 +2 或者 -2;
  • 对 4096 取模,得到 f(n + 1);
  • 若这个数的十进制表示中含有数位 8,则方向取反。

给定 n,计算 f(n)。

Lab 3 Password

制作一个密码验证系统,密码与验证码以明文形式存储在内存中。流程如下:

  • 输入密码,若密码正确,输出 righ 并退出;
  • 若密码错误,输出 wron,并输出验证码;
  • 输入验证码,若验证码错误,输出 wron 并退出;
  • 若验证码正确,输出 righ 并重新输入密码,正确则输出 righ,错误则输出 wron

Lab 4 Baguenaudier

一个类似汉诺塔的小游戏,有 n 个环,初始时全部被放入,每一步可以放进或拿走一个环,放进或拿走第 i 个环要求:

  • 要么 i = 1;
  • 要么第 i - 1 个环已经被放入,同时前 i - 2 个环均未被放入。

要拿走所有的环,计算给出操作序列。

设 R(n) 为删除前 n 个环的操作序列,P(n) 为放入前 n 个环的操作序列,则 R(i) = R(i - 2) + [删除第 i 个环] + P(i - 2) + R(i - 1),P(i) 类似。

Lab 5 Factorial

实现一个用户操作系统,初始时重复输出学号,当接收到按键时,判断是否为数字,若为数字,输出这个数字的阶乘并退出,否则报错并继续循环。

Lab 6

使用 C++ 语言实现 Lab 1~4 的内容。只能使用 LC-3 中存在的操作,不能使用 */ 等 LC-3 中不存在的操作。

Lab Assembler & Simulator

LC-3 的汇编器和模拟器实验,使用 C++ 语言。

Lab 107 Assembler & Simulator

107 机的汇编器和模拟器实验,使用 Python 语言。

About

2023秋季学期计算机系统概论(H)课程实验代码

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published