2021-2022-1 2021401 《信息安全专业导论》第5周学习总结

作业信息

这个作业属于哪个课程 2021-2022-1信息安全专业导论
这个作业要求在哪里 2021-2022-1信息安全专业导论第5周作业
这个作业的目标 Pep/9虚拟机 机器语言与汇编语言 算法与伪代码 测试:黑盒,白盒
作业正文 本博客链接

教材学习内容总结

低级程序设计语言与伪代码

计算机操作

计算机是能够存储、检索和处理数据的可编程电子设备。
存储、检索和处理是计算机能够对数据执行的动作。
在计算机层次 处理涉及在数据值上执行算术和逻辑操作。

机器语言

计算机真正执行的程序设计指令是用 机器语言 编写的的指令,这些指令固定在计算机的硬件中。

  • 计算机语言(machine language):由计算机直接使用的二进制编码指令构成的语言。

Pep/9:一台虚拟机

机器代码因机器的不同而不同。

  • 虚拟机(virtual computer(machine)):为了模拟真实机器的重要特征而设计的假想机器。

Pep/9有40条机器语言指令。

1.Pep/9的基本特征

Pep/9的内存单元由65 536 字节的存储空间构成。
Pep/9有七个寄存器

  • 程序计数器(PC),其中包含下一条即将被执行的指令的一个副本。
  • 指令寄存器(IR),其中包含正在被执行的指令的一个副本。
  • 累加器(A),用来存储数据和运算的结果。
    十六进制值数的范围约为-7FFF到+7FFF
    相当于十进制数的-32 767 到 + 32 767
    可用的位数决定了我们可以使用的内存大小。

2指令格式

一条指令由两部分组成,即8位的指令说明符(instruction specifier)和(可选的)16位的操作数说明符(operand specifier)

  • 指令说明符说明了要执行什么操作和如何解释操作数的位置。
  • 操作数说明符存放的是操作数本身或者操作数地址。

3.一些示例指令

操作码 指令的意义
0000 停止执行
1100 将字载入寄存器A中
1101 将字节载入寄存器A中
1110 存储寄存器A中的字
1111 存储寄存器A中的字节
0110 将操作数加到寄存器A中
0111 从寄存器A减操作数

Pep/9的输入/输出

输入和输出(I/O),遵循的设计原则是**内存映射输入/输出(memory-mapped I/O)
这种方式将输入和输出设备与主存中特定的、固定的地址联系起来。

  • 在Pep/9中,输入设备在地址FC15,输出设备在地址FC16

一个程序实例

行为 二进制指令 十六进制指令
将‘H’载入累加器中 1101 0000 0000 0000 0100 1000 D0 00 48
存储累加器中的字节到输出设备中 1111 0001 1111 1100 0001 0110 F1 FC 16
将‘i’载入累加器中 1101 0000 0000 0000 0110 1001 D0 00 69
存储累加器中的字节到输出设备中 1111 0001 1111 1100 0001 0110 F1 FC 16
停止 0000 0000 00

Pep/9模拟器

模拟器执行程序时,遵循第5章所讨论的读取-执行周期:

  • 从由程序计数器确定的存储器位置上获取指令;
  • 解码指令,更新程序计数器;
  • 获取操作数(如果需要)
  • 执行命令

另一个机器语言实例

汇编语言

  • 汇编语言(assembly language):一种低级语言,用助记码表示特定计算机的机器语言指令
  • 汇编器(assembler):把汇编语言程序翻译成机器代码的程序。

Pep/9汇编语言

汇编语言支持汇编器指令,有时它们也被称作为操作(pseudo-operation)

  • 汇编器指令(assembler directive):翻译程序使用的指令。

数字数据、分支、标签

分支命令

  • 分支(branch):指出执行下一条指令的指令。
    DECI指令代表十进制输入(decimal input)
    DECO和STRO指令使数据写入输出设备中。
  • 标签(label):对内存位置起的名字,可以将这个名字当作操作数。

汇编语言中的循环

表达算法

在计算机领域中,解决方案的计划被称为算法
伪代码是一种语言,可以让我们以更清晰的形式表达算法。

  • 算法(algorithm):解决方案的计划或概要,或解决问题的逻辑步骤顺序。
  • 伪代码(pseudocode):一种表达算法的语言。

伪代码的功能

  • 1 变量
  • 2 赋值
  • 3 输入/输出
  • 4 选择
  • 5 重复

布尔表达式(Boolean expression):评价为真或假的表达式。

执行伪代码算法

写伪代码算法

  • 桌面检查(desk checking):在纸上走查整个设计。

翻译伪代码算法

测试

  • 测试计划(test plan):说明如何测试程序的文档
  • 代码覆盖(明箱)测试法(code-coverage(clear-box)testing):通过执行程序或子程序的测试方法。
  • 数据覆盖(暗箱)测试法(code-coverage(black-box)testing):把代码作为一个暗箱,基于所有可能的输入数据测试程序或子程序的测试方法。
  • 测试计划实现(test-plan impementation):用测试计划中规定的测试用例验证程序是否输出了预期的结果。

-此为在自学时用jupyter写的笔记

教材学习中的问题和解决过程

  • 问题1:编写c语言的codeblocks怎么安装,怎么新建文件。
  • 问题1解决方案:问大二学长,已解决

代码调试中的问题和解决过程

代码托管



上周考试错题总结

其他(感悟、思考等,可选)

进入大学也已一个多月,也逐渐适应了大学生活,大学生活不是想象中的休闲,虽然老师不去催促你,但你所要付出的时间确是课上的好几倍,原来本想每周有时间玩会游戏的,可后来才发现,能玩的时间少之又少,大学也并没有感觉比高中轻松,经常一两点睡觉,虽辛苦却没高中时重复刷题的烦躁。

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
第一周 0/0 2/2 5/5
第二周 0/0 2/4 4/9
第三周 0/0 1/5 4/13
第四周 0/0 1/6 10/23
第五周 0/0 2/8 10/33

参考:软件工程软件的估计为什么这么难软件工程 估计方法

  • 计划学习时间:4小时

  • 实际学习时间:10小时

  • 改进情况:

(有空多看看现代软件工程 课件
软件工程师能力自我评价表
)

参考资料