zoukankan      html  css  js  c++  java
  • 201920201学期 20192415 《网络空间安全专业导论》第三周学习总结 第六章

    2019-2020-1学期 20192415

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

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

    6.1 计算机操作

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

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

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

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

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

    6.2 机器语言

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

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

         指令数量是有限的(Pep/8只有39个机器语言指令)
      

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

      这样编写程序太费时间。

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

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

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

      2. 重要特性

        七个寄存器,重点研究:

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

      3. 指令格式

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

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

        寻址模式(assressing mode):

        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吗?

      (已解决)

    4. 机器语言、汇编语言、高级语言

    汇编语言和高级语言是一一对应的关系。

    而高级语言可能好几句对应一句汇编语言,所以这说明高级语言更利于编写。

    深入了解:https://blog.csdn.net/wangxiaoguaai123/article/details/84322386

  • 相关阅读:
    jQuery火箭图标返回顶部代码
    jQuery火箭图标返回顶部代码
    C#使用BouncyCastle操作国密SM3
    Win10 2004种子
    Excel对比两列数据,找到重复项
    CentOS7 + frp远程访问内网Windows电脑
    Docker on Mac OS
    MySQL5.6中查询多边形包含点情况(ST_Contains、ST_Within)
    SQL查询表的所有字段名
    清除文本中Html的标签
  • 原文地址:https://www.cnblogs.com/lanvin/p/11716138.html
Copyright © 2011-2022 走看看