2020—2021-1学期20202417《网络空间安全》第三周学习总结

学习内容:《计算机科学概论》第6、7章

经过上两周的学习,我现在对计算机的信息层以及硬件层都有了初步的认识,本周的学习内容将围绕程序设计层展开。

第6 章低级程序设计语言与伪代码,主要讲述了计算机中一些基本的低等级编程语言:机器语言与汇编语言。

知识点:

(一)计算机操作:

1.计算机:能够存储、检索和处理数据的可编程电子设备。

(二)机器语言:

1.机器语言:由计算机直接使用的二进制编码指令构成的语言。每一条机器语言指令只能执行一个非常低级的任务。

2.虚拟机:为了模拟真实机器的重要特征而设计的假想机器。

2.Pep/9:一种虚拟计算机,有40条机器语言指令。

(1)基本特性:

  • 内存单元由65536字节的存储空间构成。
  • 字长为2字节,或者16位。
  • 有七个寄存器:(重点研究3个)程序计数器(PC),其中包含正在被执行的指令或地址。指令寄存器(IR),其中包含正在被执行的指令的一个副本。累加器(A),用来存储数据和运算结果。

(2)指令格式:一条指令由两部分构成,8位的指令说明符和(可选的)16位的操作数说明符。Pep/9的指令在长度上是1字节或3字节,取决于是否需要用操作数说明符。

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

3位的寻址模式说明符表示了怎样解析指令中的操作数部分。如果寻址模式是000,那么指令的操作数说明符中存储的就是操作数。这种寻址模式称为立即寻址(i)。如果寻址模式是001,那么操作数说明符中存储的是操作数所在的内存地址名称。这种寻址模式称为直接寻址(d)。

  • 没有操作时的指令称为一元指令,这些指令没有操作数说明符,长度为1字节。

(3)一些示例指令:

  • 0000停止执行:程序终止。是一元指令,指令说明符最右边三位被忽略,这三位将指示寻址模式。
  • 1100将字载入寄存器A中:将一个字(两字节)载入寄存器A中。寻址模式决定了要载入的值要么是操作数说明符中的实际值,要么是在操作数说明符中找到的地址的内存位置。
  • 1101将字节载入寄存器A中:只载入1字节而不是2字节。如果寻址模式是立即寻址,那么操作数说明符的第一个字节将被忽略,只有第二个字节会载入寄存器A中。如果寻址模式是直接寻址,则只会载入内存位置的1字节而不是2字节。
  • 1110存储寄存器A中的字:把寄存器A中的内容存储到操作数中指定的位置。
  • 1111存储寄存器A中的字节:只存储1字节而不是2字节(一个字)。不支持立即寻址模式。只有寄存器A的第二个字节会存储在操作数说明符给出的地址中。
  • 0110将操作数加到寄存器A中:有立即寻址与直接寻址两种方式。
  • 1000从寄存器A减操作数:与加法操作相似。

3.Pep/9的输入和输出:

遵循原则:内存映射输入/输出:将输入和输出设备与主存中特定的、固定的地址联系起来。输入设备在地址FC15,输出设备在地址FC16。

使用ASCII字符集表示字符。

(三)一个程序实例 

1.Pep/9模拟器:

通过选中“构建”>“装入”菜单选项来装入程序。将程序装入内存之后,可以通过选中“构建”>“执行”菜单选项运行程序。

当模拟器执行程序时,它像真实机器一样每次只运行一条程序命令,并且遵循第5章所讲的读取-执行周期:

(1)从由程序计数器确定的存储器位置上获取指令;

(2)解码指令,更新程序计数器;

(3)获得操作数(如果需要);

(4)执行指令。

程序计数器、指令寄存器、累加器(寄存器)都将会显示在模拟器的CPU窗口中,同样还会展示一些其他的寄存器:

2.另一个机器语言实例:

(四)汇编语言

1.汇编语言:一种低级语言,用助记码表示特定计算机的机器语言指令。

2.汇编器:把汇编语言翻译成机器代码的程序。

3.Pep/9汇编语言:

(1)汇编器指令:翻译程序用的指令。

(2)注释:为程序读者提供的解释性文字。

4.数字数据、分支、标签

(1)分支:指出执行下一条指令的指令。

(2)标签:对内存位置起的名字,可以将这个名字当做操作数。

标签和它们对应的地址会在代码清单后以符号表的形式进行展示:

5.汇编语言中的循环

(五)表达算法

1.算法:解决方案的计划或概要,或解决问题的逻辑步骤顺序。

2.伪代码:一种表达算法的语言。

3.伪代码功能

变量、赋值、输入/输出、选择、重复

  • 布尔表达式:评价为真或假的表达式。
  • 伪代码语句:

4.执行伪代码算法

5.写伪代码算法

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

6.翻译伪代码算法

(六)测试

1.测试计划:一个文档,说明了要全面测试程序需要运行的次数以及运行程序使用的数据。

2.代码覆盖(明箱)测试法:通过执行代码中的所有语句测试程序或子程序的测试方法。

3.数据覆盖(暗箱)测试法:把代码作为一个暗箱,基于所有可能的输入数据测试程序或子程序的测试方法。

4.测试计划实现:用测试计划中规定的测试用例验证程序是否输出了预期的结果。

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

知识点:

(一)如何解决问题

1.提出问题

2.寻找熟悉的情况

3.分治法

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

5.计算机问题求解过程

四个阶段:分析和说明阶段、算法开发阶段、实现阶段、维护阶段。

6.方法总结:

分析问题、列出主要任务、编写其余的模块、根据需要进行重组和改写。

7.测试算法

(二)有简单变量的算法

1.带有选择的算法

2.带有循环的算法

  • 计数控制循环
  • 事件控制循环:嵌套结构:控制结构嵌入另一个控制结构的结构,又称为嵌套逻辑。
  • 平方根

抽象步骤:细节仍未明确的算法步骤。

具体步骤:细节完全明确的算法步骤。

(三)复杂变量

1.数组:同构项目的有名集合。

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

(四)搜索算法

1.顺序搜索

2.有序数组中的顺序搜索

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

(五)排序

1,选择排序

2.冒泡排序

3.插入排序

(六)递归算法

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

1.子程序语句

2.递归阶乘

3.递归二分检索

4.快速排序

  • 分裂算法

(七)几个重要思想

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

2.抽象:复杂系统的一种模型,只包括对观察者来说必需的细节。

  • 数据抽象:把数据的逻辑视图和它的实现分离开。
  • 过程抽象:把动作的逻辑视图和它的实现分离开。
  • 控制抽象:把控制结构的逻辑视图和它的实现分离开。
  • 控制结构:用于改变正常的顺序控制流的语句。

3.事物命名:在编写算法时,我们使用速记短语表示要处理的任务和信息,也就是说,给数据和过程一个名字,这些名字叫做标识符。

4.测试——白盒测试:基于代码本身。黑盒测试:基于测试所有可能的输入值。

最后用两张脑图总结一下:

posted @ 2020-10-29 12:46  20202417韩梦馨  阅读(90)  评论(0编辑  收藏  举报