2021-2022-1学期 20212323《网络空间安全专业导论》第三周学习总结

收获


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

6.1 计算机操作

可编程的;存储;检索;处理

6.2 机器语言

概念:由计算机直接使用的二进制编码指令构成的语言。
编写机器语言太费时间,一般用高级语言编写大多数程序。

6.2.1 Pep/9:一台虚拟机

虚拟机:为模拟真实机器的重要特征而设计的假想机器。
1.Pep/9的基本特性
其中三个寄存器:程序计数器(PC)、指令寄存器(IR)、累加器(A)
2.指令格式
指令说明符(8位):前四位操作代码,第五位寄存器说明符,最后三位寻址模式
操作数说明符(16位):存放操作数本身或者操作数的位置
寻址模式:立即寻址(i)、直接寻址(d)
一元指令:没有操作数
3.一些示例指令

0000 停止执行 \
1100 将字载入寄存器A中 立即寻址/直接寻址
1101 将字节载入寄存器A中 立即寻址/直接寻址
1110 存储寄存器A中的字 不支持立即寻址
1111 存储寄存器A中的字节 不支持立即寻址
0110 将操作数加到寄存器A中 立即寻址/直接寻址
0111 从寄存器A减操作数 立即寻址/直接寻址

6.2.2 Pep/9的输入/输出

设计原则:内存映射输入/输出
输入(I)设备地址:FC15
输出(O)设备地址:FC16

6.3 一个程序实例

6.3.1 Pep/9模拟器

6.3.2 另一个机器语言实例

6.4 汇编语言

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

6.4.1 Pep/9汇编语言

助记码 操作数,模式 含义
STOP 停止执行
LDWA 0×008B,i 将字008B载入累加器
LDWA 0×008B,d 将位于008B中的字载入累加器
LDBA 0×008B,i 将字节008B载入累加器
LDBA 0×008B,d 将位于008B中的字节载入累加器
STWA 0×008B,i 将累加器中的字存入位置008B
STBA 0×008B,d 将累加器中的字节存入位置008B
ADDA 0×008B,i 将008B加到累加器
ADDA 0×008B,d 将位于008B中的字加到累加器
SUBA 0×008B,i 从累加器减去008B
SUBA 0×008B,d 从累加器减去位于008B中的字

汇编器指令:翻译程序使用的指令。
注释:为程序读者提供的解释性文字。
一些汇编器指令(伪操作)

伪操作 操作数 含义
.END 表示汇编语言程序的终点
.ASCII "banana\x00" 表示一个ASCII字节的字符串
.WORD 0x008B 在内存中保留一个字,并存值进去
.BLOCK 字节数 在内存中保留一些特定的字节

6.4.2 数字数据、分支、标签

助记码 操作数,模式 含义
DECI 0×008B,d 读入十进制数字,并存入008B位置 不支持立即寻址
DECO 0×008B,i 写十进制数字139(十六进制8B) 支持两种寻址模式
DECO 0×008B,d 写内存单元008B上的十进制数字 支持两种寻址模式
STRO 0×008B,d 写内存单元008B上的字符串
BR 0×001A 转到位置001A
BRLT 0×001A 如果累加器小于零,转到位置001A
BREQ 0×001A 如果累加器为零,转到位置001A
CPWA 0×008B 比较内存单元008B和累加器中存储的字

分支:指出执行下一条指令的指令。
标签:对内存位置起的名字,可将其作为操作数。

6.4.3 汇编语言中的循环

6.5 表达算法

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

6.5.1 伪代码的功能

1.变量
2.赋值
3.输入/输出
字符串:双引号之间的字符。
4.选择
符号//用于加注释
5.重复
布尔表达式:评价为真或假的表达式。

6.5.2 执行伪代码算法

6.5.3 写伪代码算法

桌面检查:在纸上走查整个设计。

6.5.4 翻译伪代码算法

6.6测试

1.测试计划:说明如何测试程序的文档。
2.代码覆盖(明箱)测试法:通过执行代码中的所有语句测试程序或子程序的测试方法。
3.数据覆盖(暗箱)测试法:把代码作为一个暗箱,基于所有可能的输入数据测试程序或子程序的测试方法。
4.测试计划实现:用测试计划中规定的测试用例验证程序是否输出了预期的结果。

第七章 问题求解与算法设计

7.1 如何解决问题

7.1.1 提出问题

7.1.2 寻找熟悉的情况

7.1.3 分治法

7.1.4 算法

算法:在有限时间内用有限的数据解决问题或子问题的明确指令集合。

7.1.5 计算机问题求解过程

1.分析和说明阶段
2.算法开发阶段
3.实现阶段
4.维护阶段

7.1.6 方法总结

1.分析问题

2.列出主要任务

3.编写其余的模块

4.根据需要进行重组和改写

7.1.7 测试算法

7.2 有简单变量的算法

7.2.1 带有选择的算法

7.2.2 带有循环的算法

1.计数控制循环

循环控制变量
初始化、测试、增量

2.事件控制循环

初始化、测试、更新
嵌套结构:控制结构嵌入另一个控制结构的结构,又称为嵌套逻辑。

3.平方根

抽象步骤:细节仍未明确的算法步骤。
具体步骤:细节完全明确的算法步骤。

7.3 复杂变量

7.3.1 数组

数组:同构项目的有名集合
与数组有关的算法:搜索、排序、处理

7.3.2 记录

记录:异构项目的有名集合

7.4 搜索算法

7.4.1 顺序搜索

7.4.2 有序数组中的顺序搜索

7.4.3 二分检索

二分检索:在有序列表中查找项目的操作,通过比较操作排除大部分检索范围。

7.5 排序

7.5.1 选择排序

7.5.2 冒泡排序

(像冒泡一样)

7.5.3 插入排序

7.6 递归算法

递归:算法调用它本身的能力。

基本情况:答案已知
一般情况:调用自身来解决问题的更小版本的解决方案

7.6.1 子程序语句

调用单元:命名代码出现的地方。
子程序:1.只执行特定任务的命名代码,在调用单元中作为语句;2.不仅执行任务,还返回给调用单元一个值(值返回子程序),用作表达式,返回的值用来评估表达式。

7.6.2 递归阶乘

7.6.3 递归二分检索

7.6.4 快速排序

基本策略是分治法

7.7 几个重要思想

7.7.1 信息隐蔽

信息隐蔽:隐蔽模块的细节以控制对这些细节的访问的做法。

7.7.2 抽象

抽象:复杂系统的一种模型,只包括对观察者来说必需的细节。
数据抽象:把数据的逻辑视图和它的实现分离开。
过程抽象:把动作的逻辑视图和它的实现分离开。
控制抽象:把控制结构的逻辑视图和它的实现分离开。
控制结构:用于改变正常的顺序控制流的语句。

7.7.3 事物命名

标识符

7.7.4 测试

白盒测试、黑盒测试

遇到的问题及解决过程


内容太多记不住
多看几遍

posted @ 2021-10-16 16:14  20212323  阅读(53)  评论(0编辑  收藏  举报