2021-2022-1 20211408《信息安全专业导论》第5周学习总结
2021-2022-1 20211408 《信息安全专业导论》第5周学习总结
作业信息
这个作业属于哪个课程 | 2020-2021-1信息安全专业导论 |
---|---|
这个作业要求在哪里 | 2020-2021-1信息安全专业导论第5周作业 |
这个作业的目标 | Pep/9虚拟机、机器语言与汇编语言、算法与伪代码、测试:黑盒,白盒 |
作业正文 | 寻找你的黑客偶像、无穷的技艺 |
教材学习内容总结
- 机器语言与汇编语言的区别:
机器语言是计算机直接使用的二进制编码构成的指令(由此我也明白了为什么早期计算机科学家都是数学家);而汇编语言是一种低级语言,用助记码表示特定计算机的机器语言,由汇编器进行翻译工作。 - 虚拟机pep/9的重要特性:
虚拟机是一种假想机器,用来模拟真实机器- 基本特性:内存单元由65536字节的存储空间构成。字长是2字节,16位,可用两个十六进制数字表示一个字节中的位模式。它有七个寄存器。
- 指令格式:两部分构成,即8位的指令说明符和(可选的)16位的操作数说明符。长度为1字节或3字节。
指令说明符的格式是操作代码(即操作码),4位到8位不等,教材中均是4位,由此第五位位寄存器,教材中均是0,因为都是A寄存器(累加器)。后面3位是寻址模式说明符,其中000是立即寻址,001是直接寻址。没有操作数(要处理的数据)的指令称为一元指令,长度为1字节。
- 区分立即寻址和直接寻址:
立即寻址就是指令当中自带数据,直接读取,最快;
直接寻址就是指令中存放的是地址,直接解析这个地址;
间接寻址就只指令中存放的是地址的地址,或者是存放地址的寄存器,最慢。
1、立即寻址方式:
操作数就包含在指令中。作为指令的一部分,跟在操作码后存放在代码段。
这种操作数成为立即数。立即数可以是8位的,也可以是16位的。
例如:
指令: MOV AX,1234H
则: AX = 1234H
2、直接寻址方式:
操作数在寄存器中,指令直接包含有操作数的有效地址(偏移地址)
注:操作数一般存放在数据段
所以操作数的地址由DS加上指令中直接给出的16位偏移得到。如果采用
段超越前缀,则操作数也可含在数据段外的其他段中。
例如:
MOV AX,[8054]
如(DS) = 2000H,
则执行结果为(AX) = 3050H
(物理地址=20000+8054=28054H)
28054H里的内容为3050H
-
编写一个简单的机器语言程序:
-
描述创建和运行汇编语言程序的步骤:
1、画框图
2、编制代码
3、调试编译
4、运行测试 -
编写简单的汇编语言程序:
-
区分汇编器的指令和要翻译的指令
汇编器是将汇编语言翻译为机器语言,而要翻译的指令是将该伪代码翻译成pep/9语句,二者有本质区别。 -
区分执行一种算法和开发一种算法
执行一种算法是“从有化为有形”,即算法已经有了,执行出结果进行输出;而开发一种算法则是“从无到有”,即本没有该种算法,而新编写了一个算法。 -
描述表达算法时使用的伪代码结构
- 变量
- 赋值
- 输入/输出
- 重复(迭代、循环)
- if-then 选择
- if-then-else选择
-
使用伪代码描述算法
如:
Set sum to 0
Read num1
Set sum to sum + num1
Read num2
Set sum to sum + num2
if(sum<0)
Write "Error"
ELSE
Write sum
给变量sum赋值0,输入num1,将sum赋值为num1+sum,输入num2,将sum赋值为sum+num2。如果sum的结果小于0,则输出“Error”,否则输出sum的值,从而实现num1+num2
-
描述两种测试方式
- 代码覆盖测试法,又叫明箱测试法,测试者可以看到代码
- 数据覆盖测试法,又叫暗箱测试法,测试者看不到代码,该测试法基于输入的数据而非代码
-
设计和实现测试方案
针对上述两数相加,首先确保不超过存储边界值,其次分别对输入两个正数、两个负数、一正一负(其中正数绝对值大于负数绝对值,另一种正数绝对值小于负数绝对值)以及大数进行验证,输出结果与预期相符则加大我们对程序运行的信心,若不一样,则应该寻找没有覆盖到的问题。
教材学习中的问题和解决过程
- 问题1:立即寻址和直接寻址究竟是什么区别
- 问题1解决方案:首先,我去查了一下网络,得到一个比较通俗的答案,如下图
尽管如此,我还是不太清楚在程序具体运行过程中究竟有什么区别,然后我再去阅读了教材,接着去云班课提问,首先得到学长和同学的答复,链接分别如下:
https://blog.csdn.net/bjbz_cxy/article/details/80534371
https://blog.csdn.net/skyxmstar/article/details/70039520
其中均讲了直接寻址、间接寻址和立即寻址。
立即寻址就是指令当中自带数据,直接读取,最快;
直接寻址就是指令中存放的是地址,直接解析这个地址;
间接寻址就只指令中存放的是地址的地址,或者是存放地址的寄存器,最慢。
1、立即寻址方式:
操作数就包含在指令中。作为指令的一部分,跟在操作码后存放在代码段。
这种操作数成为立即数。立即数可以是8位的,也可以是16位的。
例如:
指令: MOV AX,1234H
则: AX = 1234H
2、直接寻址方式:
操作数在寄存器中,指令直接包含有操作数的有效地址(偏移地址)
注:操作数一般存放在数据段
所以操作数的地址由DS加上指令中直接给出的16位偏移得到。如果采用
段超越前缀,则操作数也可含在数据段外的其他段中。
例如:
MOV AX,[8054]
如(DS) = 2000H,
则执行结果为(AX) = 3050H
(物理地址=20000+8054=28054H)
28054H里的内容为3050H
由此我大概明确了二者的区别。
代码调试中的问题和解决过程
- 问题1:在声明类变量的时候,
def speak(self,sound):
print("{}在叫,'{}'!".format(self.name,sound))
其中,括号里第二个{}外面我用了双引号,与最外面的双引号难以区分,出现问题。
- 问题1解决方案:将任意一对引号改成单引号即可,这里我改了第二个的{}的引号
- 问题2:c语言中,用char确定的字符我输入了中文字符,最后输出不出来,报错了,不知为何
- 问题2解决方案:求教了学长,学长告诉我,中文是两位的,char默认只是一位的,所以报错,帮我修改了一下,如图:
- 问题3:在pep/9中使用汇编语言的循环时,忘记在第一行输入BR(转到位置001A)和main,使得循环运行不出结果
- 问题3解决方案:补上后,成功运行
[代码托管]
上周考试错题总结
- 错题1: The category of numbers called integers includes negative numbers.
本题应该是正确,本题题意为整数包含负数,我当时并没有理解到位就做了答。 - 错题2: The value of each position in number system is determined by subtracting the base from the position number.
本题应该是错误,本题题意为“数字系统中每个位置的值是通过从位置编号中减去基数来确定的。”,并非是减去基数,而是乘以基数的多少次决定的,如十进制数字23中,基数为10,左边的值是2*10^1决定。 - 错题3: Grace Murray Hopper participated in the design of the COBOL programming language.
本题应该是正确,Grace Murray Hopper参与了COBOL的设计。 - 错题4: Which of the following is data about data , such as the resolution of an image being stored with the image?
A.Scientific notation
B.Keyword encoding
C.Metadata
D.Digital
E.Analog data
本题应该选C元数据,元数据的概念是元数据(Metadata),又称中介数据、中继数据,为描述数据的数据(data about data),主要是描述数据属性(property)的信息,用来支持如指示存储位置、历史数据、资源查找、文件记录等功能。 - 错题5: Huffman encoding uses variable length binary strings to represent particular characters.
本题应该是正确,霍夫曼编码,是一种编码方式,霍夫曼编码是可变字长编码(VLC)的一种
其他
程序这一块感觉有点难度,不止是代码本身,还要理解代码如何运行,现在脑子里运行一遍,再用终端验证自己的想法。
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 200/200 | 2/2 | 20/20 | |
第二周 | 300/500 | 2/4 | 18/38 | |
第三周 | 500/1000 | 3/7 | 22/60 | |
第四周 | 300/1300 | 2/9 | 30/90 | |
第五周 | 300/1600 | 3/11 | 30/120 |
-
计划学习时间:25小时
-
实际学习时间:30小时
-
改进情况:思考时间比以往明显增加,查阅资料的次数也多了许多。
参考资料
- 《计算机科学概论》
- ...