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小时
-
改进情况:
(有空多看看现代软件工程 课件
软件工程师能力自我评价表)