2021-2022-1 20211420《信息安全专业导论》第五周学习总结
作业信息
|作业属于|2021-2022-1信息安全专业导论
|作业要求|2021-2022-1信息安全专业导论第五周作业
- 学习目标
- Pep/9虚拟机
- 机器语言与汇编语言
- 算法与伪代码
- 测试:黑盒,白盒
|班课作业链接|
无穷的技艺
寻找你的黑客偶像
用或非门实现其他门
教材学习内容总结
通过学习第6章内容,我知道了以下内容:
- 机器语言和汇编语言的区别
- 机器语言是由计算机直接使用二进制编码指令构成的语言
- 汇编语言是一种低级语言,用助记码表示特定计算机的机器语言指令
- Pep/9的基本特性
- Pep/9的内存单元由65536字节的存储空间构成
- Pep/9有七个寄存器(以下为其中三个)
- 程序计数器(PC),其中包含下一条即将被执行的指令的地址
- 指令寄存器(IR),其中包含正在被执行的指令的一个副本
- 累加器(A),用来存储数据和运算的结果
- 指令格式:一条指令由两部分构成,即8位的指令说明符和(可选的)16位的操作数说明符。Pep/9的指令长度为1字节或3字节。
- 指令说明符的格式是操作代码(即操作码),长度为4位到8位不等,教材中均是4位,因此第五位是寄存器。教材中均是0,因为例子中使用的都是A寄存器(累加器)。后面3位是寻址模式说明符,其中000是立即寻址,001是直接寻址。没有操作数(要处理的数据)的指令称为一元指令,长度为1字节
- 立即寻址和直接寻址的区别
参考链接
立即寻址方式:
操作数就包含在指令中。作为指令的一部分,跟在操作码后存放在代码段。
这种操作数成为立即数。立即数可以是8位的,也可以是16位的。
例如:
指令: MOV AX,1234H
则: AX = 1234H
直接寻址方式:
操作数在寄存器中,指令直接包含有操作数的有效地址(偏移地址)
注:操作数一般存放在数据段
所以操作数的地址由DS加上指令中直接给出的16位偏移得到。如果采用
段超越前缀,则操作数也可含在数据段外的其他段中。
例如:
MOV AX,[8054]
如(DS) = 2000H,
则执行结果为(AX) = 3050H
(物理地址=20000+8054=28054H)
28054H里的内容为3050H
根据参考资料,我对这两种模式的理解就是:
立即寻址直接就能得到将要执行的数据,而直接寻址要先获得这个数据的地址,然后再得到这个数据。
- 编写一个简单的机器语言程序(如图)
- 创建和运行汇编语言程序的步骤
1.画程序框图
2.编写代码
3.编译代码(若编译无法进行就需要检查代码是否有误)
4.运行代码/程序 - 编写一个简单的汇编语言程序(如图)
- 给汇编器的指令和要翻译的指令的区别
- 给汇编器的指令:汇编语言程序被翻译成机器代码
- 要翻译的指令:伪代码被翻译成Pep/9语句
- 执行一个算法和开发一种算法的区别
- 执行一个算法:执行已经写好的某一个算法(算法是现成的,只需要运行就行)
- 开发一种算法:从0开始编写一种算法,从无到有,并且还要对写好的算法进行走查和测试,看算法是否有问题
- 表达算法时使用的伪代码结构
# 变量:引用内存中存储值的位置
# 赋值:给变量一个储存值
Set sum to 0
# 把一个值存放到变量sum中
sum <- 1
# 输入/输出:从外界输入数据值,再输出到屏幕上
Write "Enter the number of values to read and sum"
Read sum
# 选择:选择执行与否
# if-then
//Read and sum three numbers
IF (sum<0)
Print error message
ELSE
Print sum
//Whatever comes next
# 或者if-then-else
//Read and sum three numbers
IF (sum<0)
Print error message
ELSE
Print sum
//Whatever comes next
# 重复:重复执行指令
Set limit to number of values to sum
WHILE (counter < limit)
Read num
Set sum to sum + num
Set counter to counter + 1
//Rest of program
- 使用伪代码描述算法
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
# 该伪代码表示输入两个值求和,若和为负值,则输出错误
- 两种测试方式
- 代码覆盖测试法(明箱测试法):该测试用例会确保程序中的每条语句都能被执行到,且测试者能看到代码
- 数据覆盖测试法(暗箱测试法):该测试用例会确保包括允许使用的数据的边界值,该方法基于输入的数据
- 如何为简单的汇编语言程序设计和实现测试方案
使用明箱测试法和暗箱测试法结合,运行测试计划中列出的所有测试用例,并记录运行结果,若结果与预期不符,必须重新审查设计,找出并纠正其中的错误(测试计划实现)。
教材学习中的问题和解决过程
问题1:不明白何为立即寻址和直接寻址
解决过程:尽管书上说的概念比较清楚,但是我仍然不明白Pep/9中是如何进行的,因此我上云班课看了一下有没有其他同学也有这个问题,然后王其同学就问了这个问题,学长给了他一个链接,我点进去一看,发现里面的解释还是很模糊,于是自己重新上网查找资料,当然就找到一篇解释比较清楚一点的文章
问题2:在学习python中的类时,不清楚构造方法和实例方法的区别
解决过程:在网上找到一篇文章,这篇文章就比较清楚的说明了两种方法的区别并有代码实例,当然我还找到了另一篇文章,里面不仅仅讲了这两种方法,还有类方法和静态方法的一些内容,我更是对方法有了深入的了解
代码调试中的问题和解决过程
问题1:学习九九乘法表如何运用python实现时,发现自己运行的结果为一行一个算式
解决过程:
代码如下
for i in range(1, 10):
for j in range(1, i):
print(str(j) + "×" + str(i) + "=" + str(i * j))
print(str(i) + "×" + str(i) + "=" + str(i * i))
运行结果如图
然后我通过搜寻资料得知,在第三行的print中还应当输入一个换行符,所以修改的代码如下
for i in range(1, 10):
for j in range(1, i):
print(str(j) + "×" + str(i) + "=" + str(i * j), end=' ')
print(str(i) + "×" + str(i) + "=" + str(i * i))
运行结果如图
当然,不只是这一种方法能实现,还有下面一种方法实现九九乘法表
for i in range(1, 10):
for j in range(1, i + 1):
print(str(j) + "×" + str(i) + "=" + str(i * j) + "\t", end='')
print('')
运行结果如图
问题2:在Pep/9写两数求和的程序时,运行的时候输入的两数没法得到和,如图
解决过程:
重新回到教材中,发现我所写的代码缺少第一行的BR和main,才导致输入的两数无法求和,只需要把BR和main加在第一行就可以解决问题了
代码托管
上周考试错题总结
1.Which of the following is a unit in an abstract mathematical system subject to the laws of arithmetic?
以下哪一项是受算术法则约束的抽象数学系统中的一个单元?
A.Number
B.Natural number
C.Integer
D.Negative number
E.Rotional number
答案应当选A,只要是数都会受到算术法则的约束
2.What is the largest digit in the decimal number system?
A.0
B.9
C.10
D.15
E.16
本题应选B,因为十进制数每个位上只能是0到9,因此最大的数为9
3.Which number represents the value of the base in every number system?
哪个数字代表每个数字系统中的基数值?
A.0
B.1
C.10
D.11
E.100
答案应为C,因为10代表1*R(基数)+ 0=基数
4.The value of each position in a number system is determined by subtracting the base from the position number.
数字系统中每个位置的值是通过从位置编号中减去基数来确定的。
本题错误,并不是通过减去基数确定
5.How many things can be represented using three bits?
有多少东西可以用三位来表示?
A.3
B.4
C.6
D.8
E.12
本题选D,相关资料
6.Which of the following characters are not represented in the ASCll character set?
以下哪些字符不在ASCL字符集中表示?
A. Uppercase letters(A-Z)A.大写字母(A-Z)
B. Lowercase (a-z)B.小写字母(a-z)
C. Punctuation such as a period or commaC.标点符号,如句号或逗号
D. Cyrillic charactersD.西里尔文字
E. Nonprintable characters such as ESC (escape) and DEL(delete)E.不可打印字符,如ESC(转义)和DEL(删除)
应当选择D
7.Recording the voltage level of an audio signal at regular intervals is called what?
定期记录音频信号的电压水平称为什么?
A.SamplingA.抽样
B. Peak analysisB.峰值分析
C. Pulse-code modulationC.脉冲编码调制
D. MP3 analysisD.MP3分析
E. CD simulationE.CD模拟
本题应选择A
8.It is possible to represent four things with two bits.
可以用两个位表示四个事物。
本题正确
9.Negative numbers cannot be represented using the fixed-sized number representation technique
负数不能使用固定大小的数字表示技术表示
本题错误
10.Audio data is often represented on a computer by sampling the continuous signal that represents a
音频数据通常通过对表示音频的连续信号进行采样来在计算机上表示
本题正确
学习感受
通过本周的学习,我认为我在理解知识上还是有一些问题,所以如果我有不懂的问题一定得多问,多问多思考,再在网上找资料理解。总体来说,本周学习的知识还是有一定难度的,所以自己得加油了
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 50/50 | 4/4 | 20/20 | |
第二周 | 100/150 | 2/6 | 15/35 | |
第三周 | 150/300 | 2/8 | 12/47 | |
第四周 | 1000/1300 | 5/13 | 36/83 | |
第五周 | 300/1600 | 4/17 | 30/113 |
计划学习时间:24小时
实际学习时间:30小时
改进情况:本周我的阅读速度仍然有所提升,但是知识理解还是有点问题,应当加强这一方面
参考资料
《计算机科学概论》
[《看漫画学Python》]