2019-2020-1学期 20192415 《网络空间安全专业导论》第一周学习总结 第六章

2019-2020-1学期 20192415

《网络空间安全专业导论》第三周学习总结

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

6.1 计算机操作

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

(数据的操作数据的指令是相同的,储存在内存中。————冯·诺依曼体系)

可编程的:指令和数据一起储存在计算机中。要改变计算机对数据的处理,只需要改变指令即可。

控制单元→把数据储存到机器的内存中,在机器内存中检索数据。

算术逻辑单元→以某种方式处理数据(处理:在数据值上执行算数和逻辑操作)

6.2 机器语言

  • 机器语言(machine language):由计算机直接使用的二进制编码指令构成的语言

    计算机真正执行的指令是由机器语言编写的,固定在硬件中。

    每条机器指令只能执行一个非常低级的任务,每一个微小的步骤都必须被明确地编码。

    这样编写程序太费时间。

  • Pep/8:一台虚拟器(具有寄存器A和两部分指令:说明要执行的动作;说明要使用的数据的位置)

    1. 虚拟机(virtual computer):为了模拟真实机器的重要特性而设计的假想机器。

      机器代码因机器的不同而不同,每一种机器也同样有一个特定的能够被执行的操作集合。

    2. 重要特性

      七个寄存器,重点研究:

      可以表示的十六进制数的范围:-7FFF到+777

    3. 指令格式

      指令说明符:要执行什么操作、如何解释操作数的位置

      操作数说明符(有些指令没有):操作数本身、操作数地址

      寻址模式:

      000——操作数——立即寻址:指令当中自带数据,直接读取,最快

      001——操作数所在地址——直接寻址:指令中存放的是地址,直接解析这个地址

      一元指令:没有操作数说明符,长度为1个字节

    4. 示例指令

      操作码

      ①0000停止执行

        停止指令是一元指令,只占用一个字节,最右三位被忽略。

      ②1100将操作数载入寄存器A中

        载入指令→立即寻址——要被载入寄存器A的值在操作数说明符中,寄存器A中原来的内容会丢失。
               →直接寻址——储存单元中储存的内容被载入到寄存器A中

      ③1110将寄存器A的内容存储到操作数中

        将寄存器A的内容储存到操作数本身/操作数中的指定位置
        在存储操作码中使用立即寻址是非法的,我们不能尝试将寄存器的内容存储到操作数说明符中。

      ④&⑤0111将操作数加到寄存器中 与 1000减去操作数

       相加/减去:数据或操作数的位置的内容被加/减到寄存器中

      ⑥01001把字符输入操作数

         ####** 只能使用直接寻址** ####
         从输入设备中读取ASCII码形式的字符,储存在操作数单元符中显示的地址中。

      ⑦01010从操作数输出字符

        可能是立即寻址也可能是直接寻址

6.3 一个程序实例

使用双引号来指一组字符,使用单引号指单个字符

6.3.1 手工模拟

一旦指令已被访问,程序计数器就会递增(每次指令有几个字节,PC就加几)

6.3.2 Pep/8模拟程序

逐字节地输入十六进制的代码,每个字节之间用空格隔开,以zz结束程序。

装入程序(loader):软件用于读取机器语言并把它载入内存的部分

6.4 汇编语言

汇编语言给每条机器语言指令分配了一个助记指令码,可用这些指令码代替二进制数字。

汇编语言(assenbly language):一种低级语言,用助记码表示特定计算机的机器语言指令

汇编器(assembler):把汇编语言程序翻译成机器代码的程序

6.4.1 汇编语言

每个寄存器有一个操作码,操作数是十六进制,由Ox说明,寻址模式为i立即寻址、d直接寻址。

6.4.2 汇编器指令

汇编器指令(assenbler directive):翻译程序使用的指令,又叫伪操作。

6.4.3 汇编语言版本

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

汇编过程:

6.4.4 一个新的程序
6.4.5 具有分支的程序

助记忆码:

自己的执行过程:

6.4.6 具有循环的程序

创建计数循环代码,可以重复指定次数。

6.5 表达算法

  • 算法(algorithm):解决方案的计划或概要,或解决问题的逻辑步骤顺序

  • 伪代码(psedocode):一种表达算法的语言

    伪代码语句:

    伪代码最终必须被翻译成可在计算机上运行的程序。

    一个伪代码语句可以被翻译成多种汇编语言语句,但是只能被翻译成一种高级语言语句。

  • 桌面检查(desk checking):在纸上走查整个设计

6.6 测试

测试程序→执行程序

问题

  1. 如何判断存储单元?如何看出相邻位置?(001F 0030 000A)

  2. Pep/8中没有Trace Progam? 如何以相反的顺序输出两个数据?

  3. 执行后的Assembler Listing与课本相同,为什么说“无效的DECI输入”?既然是负数,不是应该输出E吗?

猜你喜欢

转载自www.cnblogs.com/lanvin/p/11716138.html