精华内容
下载资源
问答
  • 运算器设计部分实验快速加法器, 八位可控加法器,十六位快速加法器设计. 四位快速加法器设计,四位先行进位等实验一设计
  • 设计采用凌阳十六位单片机SPCE061A作为直流恒流源的控制、显示和输出电流检测核心,实现了-2A到2A数控可调直流恒流源。系统的显示部分采用128×64点阵式液晶显示屏实时显示设定电流值和实测电流值;输出电流控制...
  • 4递增计数器的设计

    2020-12-11 00:54:43
    设计一个4二进制(十六进制)同步递增计数器,要求具有同步置数、异步清零功能。 相关知识 计数是一种最简单的基本运算。计数器就是实现这种运算的逻辑电路,计数器在数字系统中主要是对脉冲的个数进行计数,以...

    设计一个4位二进制(十六进制)同步递增计数器,要求具有同步置数、异步清零功能。

    相关知识
    计数是一种最简单的基本运算。计数器就是实现这种运算的逻辑电路,计数器在数字系统中主要是对脉冲的个数进行计数,以实现测量、计数和控制的功能,同时兼有分频功能。计数器在数字系统中应用广泛,如在电子计算机的控制器中对指令地址进行计数,以便顺序取出下一条指令,等等。具有并行加载功能的计数器原理如下图所示。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    展开全文
  • 根据平时操作的习惯,设计出具有加减乘除运算的电子计算器,输入为4,输出为8,分为二次输出,利用等于键分别显示高4及低4设计要求: 1.参加运算的数据由按键输入; 2.要求能进行四十进制数的加减...
  • 软件设计师考试

    千次阅读 2020-11-02 16:55:01
    软件设计师考试 计算机组成原理 上午6分 考纲 数据的表示 十进制转任意进制 二进制转八进制和十六进制 ...原码:不足八位补0,正数最高是0,负数是1,原码不能直接用来做运算 ...运算器: ALU:算数逻辑单元

    软件设计师考试

    计算机组成原理

    上午6分
    考纲
    
    image-20201029192506075

    数据的表示

    image-20201029193529885

    十进制转任意进制

    image-20201029193731841

    二进制转八进制和十六进制

    image-20201029194022253

    原码,补码,反码,移码

    元数据用二进制表示
    原码:不足八位补0,正数最高位是0,负数是1,原码不能直接用来做运算
    反码:如果是正数,则和原码相同,如果是负数,符号位不动,其他位按位取反
    补码:如果是正数,则和原码相同,如果是负数,在反码的基础上加1,补码相加得到0
    移码:(在浮点运算中做接码),在补码的基础上,将首位取反
    
    image-20201029195211515

    取值范围

    image-20201029195311556

    浮点数的表示

    image-20201029201507114

    计算机结构

    运算器:
    ALU:算数逻辑单元
    AC:是一个通用寄存器。其功能是,当运算器的算术逻辑单元(ALU)执行算术或逻辑运算时,为 ALU 提供一个工作区。累加寄存器暂时存放 ALU 运算的结果信息。
    DR:对内存储器进行读写操作时候用来暂存数据的寄存器
    PSW:存储运算过程中相关标志位,进位,溢出等,状态的信息需要保存
    控制器:
    PC:是用于存放下一条指令所在单元的地址的地方。
    IR:指令寄存器,用于存放当前从主存储器读出的正在执行的一条指令。
    地址寄存器(AR)用来保存当前 CPU 所访问的内存单元的地址。由于在内存和 CPU 之间存在着
    操作速度上的差别,所以必须使用地址寄存器来保持地址信息,直到内存的读/写操作完成为止。
    
    image-20201029202058303

    Flynn分类法

    image-20201029203015814

    SISC和RISC(慢和快)

    image-20201029203138312

    流水线

    基本概念

    取值,分析,执行依次执行(浪费时间)
    由不同的部件执行
    
    image-20201101091959374

    计算问题

    流水线周期:各个步骤中,时间最长的那个
    周期计算:max(a1,a2,a2...)
    总时长:(t1+t2+t3+...)+(n-1)*周期
    
    image-20201101092643457

    吞吐率

    image-20201101092959306

    加速比

    不使用流水线的时间/使用流水线的时间
    
    image-20201101093109244

    效率问题

    每一段的周期相等的情况下,效率往往最高
    E = 阴影区域/总面积
    
    image-20201101093450048

    计算机层次化存储结构

    Cache:高速缓存区,按照不同的内容进行存取,之间和CPU进行频繁的交互,依靠局部性原理
    
    image-20201101094258825

    Cache

    Cache中储存的内容是主存部分内容的复本,是按程序的局部性原理选取出来的最常使用或不久将
    来仍将使用的内容。
    
    image-20201101094640050

    时间局部性,空间局部性

    时间局部性:刚刚访问完的数据再次访问
    空间局部性:对于数组,刚访问过的地址,接着访问他的临接地址
    工作集理论:是进程运行时被频繁访问的页面集合
    

    主存-随机 只读存储器

    内存:RAM,一断电就没了
    
    image-20201101095332832

    编址

    image-20201101100156194

    磁盘工作原理

    image-20201101102457307

    试题

    image-20201101103228706 image-20201101103050776

    总线

    数据总线:32位计算机,一个字就是32个bit位,总线的宽度就是32个bit位,一个周期能够传输的数据量就是32bit位
    地址总线:2的32次方(4G)
    控制总线:
    
    image-20201101103344632

    串联系统和并联系统的可靠度计算

    image-20201101103929055

    模冗余模型(几乎不考)与混合模型(常考)

    image-20201101104205415 image-20201101104305248

    校验码的概念

    链路层基本上错一位
    
    image-20201101104651405

    循环校验码CRC

    原始报文后面补位数-1个0
    
    image-20201101105506464

    海明校验码

    image-20201101110244947

    操作系统

    概述

    image-20201101110704570 image-20201101135314914

    进程状态转换图

    image-20201101135420049

    前驱图

    image-20201101140059500

    进程的同步和互斥

    image-20201101140522093 image-20201101141104013

    PV操作

    解决并发问题(加锁解锁问题)
    
    image-20201101141353464 image-20201101141845229

    练习题

    模拟约束条件,先去掉约束,再推出问题
    有约束前加一个p操作,执行操作后给别人一个信号量,给一个v操作
    
    image-20201101143040030

    PV操作和前驱图

    从左到右,从上到下
    
    image-20201101143337191 image-20201101143755136

    死锁问题

    image-20201101144140357

    死锁的预防和避免

    有序资源分配法:利用率低
    
    image-20201101144354754

    银行家算法

    image-20201101144445915 image-20201101144626402

    分区存储组织

    空白区域:上次在这里的程序运行完毕后留下的
    最佳适应法:容易产生碎块
    循环首次适应算法:25->19->10	第一次从25里面找适应的,第二次从19里面找,第三次从10里面找,依次再继续循环
    
    image-20201101145101824

    段,页式存储

    页式存储

    逻辑地址和物理地址之间的转化
    内存中划定一个用户区域,供用户程序使用,往往是将用户程序整体的调入内存中,意味着如果用户程序大于内存时,将不适用,而且内存可能没有连续的空间供程序调入
    页式存储:将用户程序分成等分的页
    优点:利用率高,碎片小,分配及管理简单
    缺点:增加了系统开销(查表),	可能产生抖动现象
    
    image-20201101150421011

    页式练习题

    后三位是页内地址,第一位是页号,直接找到物理块号,组成物理地址
    只淘汰状态位为1的,并且访问位为0的页面
    
    image-20201101150758386

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RoVkHKsH-1604307209612)(E:\md笔记文件\images\image-20201102150648621.png)]

    image-20201102150611853

    段式存储

    段的大小不要求一致,按照逻辑分段,便于共享
    缺点:内存利用率低,内存碎片较大
    
    image-20201101151514627

    段页式存储

    image-20201101151547251

    块表

    image-20201101151617380

    页面淘汰算法

    最优算法(OPT):理论层次的算法
    先进先出(FIFO):抖动,加了页面缺页率反而增加了
    最近最少使用(LRU):
    
    image-20201101152224485

    FIFO抖动现象

    image-20201101152543193

    练习题

    image-20201101153049481

    索引文件结构

    image-20201101153243697

    练习题

    image-20201101153844373

    树形目录结构

    image-20201101154052249

    空闲空间管理

    位示图

    第多少字:从1开始算
    第多少位:从0开始算
    
    image-20201101154254407

    数据传输控制方式

    程序控制方式:反复询问
    程序中断方式:
    DMA(直接存储器访问方式):DMA 将数据从, 一个地址空间复制到另外一个地址空间时,CPU 初始化这个传输动作,传输动作本身是由 DMA 控制器来执行和完成。
    
    image-20201101154711824

    虚设备和Spooling技术(缓冲区,排队机制)

    image-20201101155109716

    微内核操作系统

    最为核心的放在内核里面,出问题小的可能变小,外部不干涉内核
    用户态,核心态
    
    image-20201101155322876

    数据库

    概要

    数据库模式
    ER模型
    关系代数和元组演算
    并发控制
    数据库完整性约束
    ---------------下午案例分析和论文中------------------
    分布式数据库
    数据仓库于数据挖掘
    

    三级模式两级映射

    image-20201020200632500
    内模式:管理我们如何去管理数据,按什么格式,如何优化							 物理级数据库
    概念模式:平常我们用数据库时表这个级别,数据分成若干张表				       概念级数据库
    外模式:数据库中的视图,更加方便,更加安全									用户级数据库
    

    数据库的设计

    image-20201020201513188
    需求分析:数据流图,数据字典,需求说明书
    ER模型转成关系模式(文字表达,一个一个表的形式) 规范化理论(重要)
    

    ER模型

    image-20201020201951578
    多对多关系:N - M
    实体:多个属性  □表示
    联系:尖括号
    ---------------------
    逐步集成:简单不容易出错,但是耗时
    属性:两个表都有老师这个属性,但一个是用的男女表示,一个是用t f表示
    命名冲突:同名异义,异名同义
    结构冲突:老师这个词即是一个表名,又是另一个表的一个字段
    
    image-20201020202415524
    image-20201020203247859
    1 - 1 时:可以建立两种,练习可以在左边也可以在右边
    1 - N 时:将练习建立在N那边,例如(员工和部门的关系)
    N - M 时:至少转成三个关系模式(实体转为一个,联系转为一个)
    
    image-20201020203957254

    关系代数(选择题)

    笛卡尔积:所有的字段全部列出来,前一个表中每一条记录都得和后面表中每一条记录拼接
    投影:π
    选择:
    联接:
    
    image-20201020210541390

    联接操作:

    ​ 等值连接:不相等去掉(自然连接)

    规范化理论-函数依赖

    函数关系:一个x确定一个y,y不能确定x
    学号-->姓名,这是一种函数依赖
    1:部分函数依赖	A+B-->C&&A-->C
    2:传递函数依赖	A-->B&&B-->C-->A-->C&&A!=B
    
    image-20201021082231243

    规范化理论-价值和用途

    非规范的关系模式,可能存在:数据冗余,更新异常,插入异常,删除异常
    数据冗余:DNO可以唯一确定系名,DNO也可以知道位置,没必要存储多遍
    更新异常:改DNAME必须将三个字段的全部数据进行更改
    
    image-20201021083124690

    规范化理论-键

    超键:唯一标识元组,存在数据冗余
    候选键:不存在数据冗余
    主键:从候选键中选一个,唯一的
    外键:其他关系的主键(关联查询)
    
    image-20201021083924790

    规范化理论-求候选键

    image-20201021084823882
    解题方法:
    找入度为零的节点,如果能遍历整个图,就是候选键
    题一:A1
    题二:ABCD
    题三:如果没有入度为零的节点,则找既有入度又有出度的中间节点
    	 A和B
    
    image-20201021084704666
    image-20201021085143996
    image-20201021085538535

    规范化理论-范式

    原子值:一个属性不能拆分成多个属性
    主属性:属于候选键的一部分
    非主属性:
    
    image-20201021090031095

    第一范式:

    image-20201021090326308

    第二范式:(消除部分函数依赖)

    候选键为SNO和CNO的组合键
    而CNO可以唯一确定CREDIT,存在数据冗余
    解决方法:
    将CNO和CREDIT组成一个表,消除冗余
    插入异常:新来的一个课程,还没人选,CNO=C08 CREDIT=6,无法插入,没有课程号这个主键
    
    image-20201021090631856

    第三范式:

    存在冗余数据
    解决方法:
    		将DNO DNAME LOCATION 独立出来成为一个关系模式
    
    image-20201021091327739

    BC范式

    查看所有的函数依赖,看左边是不是候选键
    SJ->T
    T->J 而T不是候选键,所以该式子不是BC范式
    
    image-20201021091947924
    image-20201021101749551

    规范化理论-模式分解

    1:拆分时候继续保持函数依赖
    2:无损分解,通过一系列操作之后又能还原到原来的关系模式
    
    image-20201021102446248

    模式分解案例:

    image-20201021104528783

    并发控制

    image-20201021105611540

    事务

    原子性:要么不做,要么全做
    一致性:事务执行之前,数据是一致的,转账完成前后,数据总和是一致的
    隔离性:事务之间各不影响
    持续性:结果影响是持续的
    

    并发控制-存在的问题

    image-20201021111321950

    封锁协议

    image-20201021112610183

    数据库完整性约束

    作用:提高数据可靠性
    实体完整性约束:主键不能为空,不能重复
    参照完整性约束:外键约束(外键必须是对应表中正确的部门号,也允许为空)
    用户自定义完整性约束:自己定义的约束条件(x>=0)等等
    --------------------------------------------
    触发器:写脚本来约束数据库的要求,编写更加复杂的要求
    

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bIAJhENW-1604307209615)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20201021203239338.png)]

    数据库安全

    用户标识和鉴定:密码输入和校验
    存取控制:对用户授权
    密码存储和传输:对远程终端信息用密码传输
    视图的保护:对用户进行视图的授权
    审计:用日志记录下来用户的操作,分析记录
    
    image-20201021204301679

    数据备份

    分类方法一

    冷备份:也称为静态备份,是将数据库正常关闭,在停止状态下,将数据的文件全部备份下来
            优点:速度快,安全,低度维护,容易恢复,
            缺点:必须停下来,无法工作
                 不能按表或用户恢复
    热备份:也称动态备份,是利用备份软件,在数据库正常运行的状态下,将数据库中的文件备份下来
    		优点:灵活度高,可以精确恢复或者备份某个表,备份时间短,无需停止数据库
            缺点:复杂度高
            	 不允许出错
    
    image-20201021204853613

    分类方法二


    完全备份:
    差量备份:针对完全备份的数据
    增量备份:针对上一次备份的数据
    
    image-20201021205449052
    简单备份方案:
    完全备份->增量备份->增量->增量->差量备份->增量->增量
    
    image-20201021210015853

    分类方法三

    image-20201021210455437

    日志文件

    日志文件:针对数据库改变所做的记录,记录sql语句,当发生错误时,可以快速执行相同操作还原现场
    

    故障和恢复问题

    image-20201021211023424

    数据仓库和数据挖掘

    数据库:将用户数据存在数据库中,当数据库中的数据越来越多时,数据库整体性能下降,此时可以删除一些数据来优化性能(删除历史数据)
    数据仓库:将数据库中的数据进行抽取,清洗(去除冗余,格式统一等),装载,刷新   将一些历史数据提取出来,单独在一个库中,形成数据仓库(主要是用来分析的数据,不需要进行更新和插入),组织特定的数据
    数据集市:将数据仓库一步步进行加入,形成数据集市(降低风险)
    OLAP服务器:做分析处理工作
    数据前端工具:........
    特点:面向主题
    	 集成的
    	 相对稳定性
    	 反映历史变化
    
    image-20201021212051948
    数据挖掘:挖到人类未知的数据,应用于商业领域
    		对各类的行情数据进行挖掘分析,找出合适的方案,利用不同的算法解决这类问题
    
    image-20201021212932531

    反规范化

    空间换时间的思想,提高查询速度,降低规范化
    
    image-20201021213926078

    大数据

    Volume 数据量
    Velocity 速度
    Variety 多样性
    Value 值
    大数据分析:对你日常生活进行分析,对你推送你喜欢的内容
    315事件:售卖cookies个人信息
    
    image-20201021214832247

    计算机网络

    七层模型

    物理层:传输二进制数据,低电平和高电平 主要设备是中继器(信号过远中转站)和集线器(多端口的中继器)
    数据链路层:传送以帧为单位的信息	网桥(连接两个同类型的设备)	交换机(多端口的网桥,连接多个设备) 网卡
    网络层:分组传输和路由选择	三层交换机,路由器(路径选择)
    传输层:端到端的连接	TCP/UDP协议
    会话层:建立、	管理、和终止对话
    表示层:数据的格式与表达、加密、压缩
    应用层:实现具体的应用功能
    ---------------------------------------------------------------------------------------
    局域网:工作在下面两层,典型设备是交换机,通过广播进行交换数据
    
    image-20201022090817770

    网络技术标准与协议

    TCP/IP协议:Internet,可扩展,可靠,应用最广,牺牲速率和效率
    IPX/SPX协议:NOVELL,路由,大型企业网
    NETBUI协议:IBM,非路由,快速
    
    ----------------网络层-----------------
    ICMP:Internet网的控制协议(比如ping命令)
    ARP(地址解析,ip转mac地址)
    RARP(反向地址解析,mac转ip)
    -----------------传输层----------------
    TCP:可靠,有验证机制,有反馈信息,三次握手活动
    UDP:只把数据发到目的地址
    ----------------应用层_基于TCP-----------------
    Http:超文本传输协议
    FTP:文件传输协议
    Telnet:远程登录协议
    POP3和SMTP:邮件传输协议
    ----------------应用层_基于UDP-----------------
    DHCP:局域网内动态分配ip地址
    TFTP:小文件传输协议
    SNMP:简单网络管理协议
    DNS:域名解析
    ----------------应用层_基于UDP或TCP-----------------
    文件共享协议
    Samba:可以跨平台
    CIFS:
    NFS:
    HTTPS(Hyper Text Transfer Protocol over Secure Socket Layer),是以安全为目标的 HTTP 通道,是 HTTP
    的安全版。HTTPS 协议是由 SSL+HTTP 协议构建的可进行加密传输、身份认证的网络协议。
    
    image-20201022091549972 image-20201022091747201

    DHCP协议

    静态分配ip地址是不方便,麻烦的
    客户机/服务器模型
    默认租约为8天,8天不使用就会更改或者收回
    租约过半,客户机需要重新向DHCP服务器申请租约
    当租约超过87.5%时,如何还没联系上当初提供ip地址的DHCP服务器,就开始联系其他DHCP服务器
    ---------------------------------------------------------------------------
    windows:169.254.x.x
    linux:0.0.0.0
    说明客户机没有和DHCP服务器联系上,对应地址是假地址
    
    image-20201022093025846

    DNS协议

    DNS:域名和IP地址之间的转换
    递归查询:按照数字之间的顺序进行递归查询
    		主机向本地域名服务器
    迭代查询:本地域名服务器向根域名服务器的查询
    递归和迭代配合使用
    ---------------------------------------------
    如果单纯使用递归查询,会使得根域名服务器负担重,效率低
    域名查询记录:先HOSTS表,再本地DNS缓存,然后再查找本地DNS服务器,再根域名服务器,顶
    级域名服务器、权限域名服务器。
    
    image-20201022094051617
    解题分析:递归查询不会直接返回结果
    		迭代查询是直接返回结果的
    
    image-20201022103038765

    计算机网络的分类-拓扑排序

    按分布范围分:局域网(LAN),城域网(MAN),广域网(WAN),因特网
    按拓扑结构分:
    总线型:一条总线控制信息
    星型:一个中心点控制信息(存在单点故障的问题)
    环型:单点故障,可以从另一边绕过去
    ----------------------------------------------------
    办公室网络:星型网络,中心点(交换机)
    
    image-20201022104008936

    网络规划和设计

    image-20201022155308828

    物理网络设计

    image-20201022155514242

    逻辑网络设计

    image-20201022155552577

    分层设计

    接入层:向本地网段提供用户接入
    汇聚层:网络访问策略控制、数据包处理、过滤、寻址
    核心层:数据交换(多台设备做同样的事情,防止奔溃)
    
    image-20201022160049090

    ip地址和子网划分

    A类:2^24-2,第一段是网络号,后面24个bit位都是主机号,减掉主机号是全0(网络地址,而不是某台主机的地址)和全1(网络当中的广播地址)的地址,可容纳的主机数非常多,但A类网络资源非常有限,只有前面8位是用来表达网络地址,而且首位必须为0
    B类:前两段是网络号,后两段是主机地址,可容纳的主机数是2^16-2
    C类:前三段是网络号,后一段是主机地址,可容纳的主机数是2^8-2
    问题:
    	假如某个公司有500台主机,给分配一个c类地址,不够用,分配一个b类又太多了
    --------------------------------------------------------------------
    172.18.129.0/24	表示前24位为网络地址,后32-24位为主机地址
    超网:把多个网络合成一个大的网络
    子网:把一个大的网络分成多个子网
    
    image-20201022160631754

    子网划分

    image-20201022162554891
    子网掩码
    从子网个数开始算:2^k >= N 算出k,前面网络号都为1,主机前k为也为1,后面为0
    
    从主机数开始算:2^k-2 >= n , n为主机数,后k位为0,前面为1
    
    image-20201022162823175
    问两个ip地址属不属于同一个子网:把两个ip地址化成10进制,然后分析网络号和子网号分别是多少位,看前面的这么多位是否相同,如果相同则在同一个子网内
    

    无分类编址

    IP地址:: = {<网络前缀>,<主机号>}
    
    image-20201022163642781
    c类子网,前24位为网络地址,公司网络的地址块是20位,故还有24-20位来制作子网地址
    
    image-20201022164211485

    特殊含义的ip地址

    image-20201022165745295

    路由算法

    静态路由算法:
    a:泛射路由算法(扩散法)
    b:固定路由算法
    c:随机走动法(Random Walk)
    d:最短路径法(Shortest Path ,SP)
    动态路由算法(自适应路由选择算法):
    a:分布式路由选择
    b:集中式路由选择
    c:混合式动态路由选择
    d:链路状态路由算法
    

    HTML

    image-20201022170514758

    无线网

    无线局域网(WLAN,802.11,WI-FI)
    优势:
    移动性 灵活性 成本低 容易扩
    接入方式:
    有接入点模式 无接入点模式
    无线城域网(WMAN,802.16,WiMax)
    无线广域网(WWAN,3G/4G)
    无线个人网(WPAN,802.15,Bluetooth)
    

    image-20201022172006100#

    网络接入技术

    PSTN:传真、刷卡机
    ADSL采用电话线进行通信,有的老小区还在使用
    -------------------------------------
    WCDMA:最为成熟的,使用范围最广的
    TD-SCDMA 名义上的国产通信,代理商是中国移动
    ------------------------------------
    4G
    LTE-Advanced
    			TDD(TD-SCDMA) FDD(WCDMA)
    
    image-20201026101242015

    ipv6

    image-20201026101938904

    信息系统安全属性

    image-20201026102626517

    对称加密

    用同一个秘钥进行加密和解密,适用于大文件,速度快
    优点:速度快
    缺点:加密强度不高(文件发过去,可能会被截获,密码发过去,也可能被截获)
    	 秘钥分发困难
    
    image-20201026103425704

    非对称加密

    用对方的公钥给文件加密,发送给对方
    有点:安全度高,适合于短文加密
    缺点:加密速度慢
    
    image-20201026150658026

    信息摘要

    甲将明文发送给乙,再将摘要发送给乙。乙接到明文后生成摘要,再和发过来的摘要对比。如果一致,则说明信息没有被篡改
    算法:采用单向的散列函数(单向hash函数),只能将明天通过算法生成摘要,不能将摘要通过算法还原成明文
    信息摘要算法:MD5和SHA算法,将信息截断,形成摘要,具有破坏性,不能够还原,不能用来加密解密
    
    image-20201026154632519

    数字签名(无保密的功能,身份识别)

    将文件从A发送给B,附带上A的签名
    数字签名:用A的私钥给文件加密(客观理解),对摘要进行加密(效率高)
    数字签名验证过程:用A的公钥给文件解密,从而得到文件是A发过来的	
    
    image-20201026155705172

    数字证书与PGP

    对称秘钥传输明文,将对称秘钥用接收方公钥加密发送给接收方,接收方收到电子信封,用自己的私钥解密信封,去除对称秘钥解密得到原文
    用来标识身份,防止中途公钥被截获更改
    要有持有者的公钥信息
    
    9、假定用户 A、B 分别在 I1 和 I2 两个 CA 处取得了各自的证书,下面( )是 A、B 互信的必
    要条件。
    A. A、B 互换私钥 B. A、B 互换公钥 C. I1、I2 互换私钥 D. I1、I2 互换公钥
    	首先,在公钥体系中,交换私钥是无论什么情况下都绝对不允许发生的情况,所以A与C选项必然错误。余下的B与D,B选项的做法没意义,要AB互信,其信任基础是建立在CA之上的,如果仅交换AB的公钥并不能解决信任的问题。而I1与I2的公钥交换倒是可以做到互信,因为I1与I2的公钥正是验证CA签名的依据。所以本题应选D。
    
    image-20201027101001965

    设计邮件加密系统(重要)

    image-20201027102403944

    各个网络层次的安全保障

    隔离:军方网络和普通网络隔离开来							    物理层
    链路加密  PPIP、L2TP:链路层通道,安全不会被截取				   数据链路层
    防火墙,IPSec(对IP包加密传输)									 网络层
    TLS,SET(通信过程,电子商务等),SSL跨越多个层次					传输层
    PGP,HTTPS													应用层
    
    image-20201027102926577

    网络威胁与攻击

    
    
    image-20201027104115007 image-20201027104155058

    防火墙

    网络层:将指定ip段的地址阻断(初步阻断,可以被人将ip地址进行包装伪造)
    应用级:将ip的具体信息进行检查
    	   屏蔽子网---将内网中的子网进行屏蔽检查(防止内部攻击)
    	   DMZ中间放一些对外的服务器
    
    image-20201027104549674

    c/s和b/s模式

    c/s模式特点:
    1:允许合理地划分三层的功能,使之在逻辑上保持相对独立性
    2:允许各层灵活的选用平台和软件
    3:各层可以选择不同的开发语言进行并行开发
    b/s模式特点:
    1:系统安装、修改和维护只在服务器端开发
    

    程序语言基本知识

    image-20201027110150205

    编译过程

    解释型:写一行,编译一行
    编译型:全部写完后进行编译
    词法分析阶段:输入源程序,对构成源程序的字符串进行扫描和分解,识别出一个个的单词,删掉无用的信息,报告分析时的错误
    语法分析阶段:语法分析器以单词符号作为输入,分析单词符号串是否形成符号语法规则的语法单位,如表达式、赋值、循环等,按语法规则分析检查每条语句是否有正确的逻辑结构
    语义分析阶段:主要是检查源程序是否存在语义错误,并收集类型信息供后面的代码生成阶段使用,如:赋值语句的右端和左端的类型不匹配。表达式的除数是否为零等。
    
    image-20201027110306246

    文法的定义以及语法推导树

    文法定义:
    
    image-20201027110740780
    文法:
    
    image-20201027110830654
    语法推导式:
    
    image-20201027111141420

    有限自动机和正规式

    有限自动机:从起点到终点,是否存在路径为指定01串
    
    image-20201027111512195 image-20201027112719731
    文法推导与正规式例题:
    正规式解题方法:代入法,正规式是否可以将可识别的串全部表示出来(范围要相等),如果可以,则是正规式
    
    image-20201027112109862

    各种程序语言特点

    image-20201027105936978

    表达式

    先构造树,根节点都是符号
    再进行遍历
    
    image-20201027113155378

    函数调用(传值和传参)

    image-20201027113512672

    标识符

    在编程语言中,表示符是用户编程时使用的名字,对于变量、常量、函数、语句块也有名字;我们统统称为表示符,关键词作为用户标识符
    

    法律法规知识

    知识产权

    image-20201027155309886###

    保护期限

    image-20201027155812729

    知识产权人确定

    image-20201027160415844 image-20201027161111403

    侵权判定

    开发过程的处理过程想保护起来,可以申请专利
    
    image-20201027161701598 image-20201027161738475

    标准的分类

    image-20201027162357239
    行业标准,通过排除法进行选择
    
    image-20201027162604766

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-j0ECHRIQ-1604307209618)(E:\md笔记文件\images\image-20201102124057536.png)]

    多媒体基础

    image-20201027163102698

    音频相关概念

    数字语音的采样频率定义为8kHz,这是因为;
    
    image-20201102124450542

    image-20201027170917875\

    图像相关概念

    image-20201027171115744
    RGB(彩色显示器)
    YUV(电视,兼容 叠加的原理)
    CMY(CMYK 印刷三原色 相减的原理)
    HSV(HSB) 艺术家空间
    DPI为像素/英寸 3*4英寸像素为900*1200
    
    image-20201027171804901

    媒体的种类

    image-20201027174005619

    多媒体的计算问题

    image-20201027174450589
    k -------1000为单位
    K -------1024为单位
    
    image-20201027180224789

    常见多媒体标准

    JPEG:对应图片jpg的格式(压缩比高)	
    
    image-20201027203506758

    数据压缩技术基础

    有冗余是压缩的基础
    空间冗余
    时间冗余:这一帧和下一帧相同,可只记录上一次的状态
    视觉冗余
    信息熵冗余
    结构冗余:和空间冗余类似,结构强调部分,空间强调整体
    知识冗余
    
    image-20201027204247755

    有损压缩和无损压缩

    无损压缩:冗余压缩法或熵编码法
    有损压缩:熵压缩法
    
    image-20201027204810405

    软件工程

    软件开发模型

    image-20201027205226956

    瀑布模型(SDLC)

        结构化模型
    缺点:延期,成本超支,
    需求阶段难以把握,无法对需求变化灵活应对
    适用于:需求明确或是二次开发
    
    image-20201027205715824

    原型模型、演化模型、增量模型

    原型:先开发界面模型供用户参考也可是是初步的系统(也应用于需求分析阶段)
    演化模型:演化原型成为最终产品
    增量模型:一步步将模型扩展,起初开设一个模块供用户使用,发现问题解决问题,再继续设计新的模块(核心模块比较早的和用户进行接触,风险小)
    
    image-20201027215807694

    螺旋模型

    增有风险分析的功能
    特点:
    1:风险驱动的,要求开发人员必须具有丰富的风险评估 知识和经验
    2:可以降低多测试或测试不足带来的风险
    3:不适用于大型软件开发
    

    image-20201027220100830##

    CBSD构建化开发模型

    极大的提高了软件的复用性,先构建各类模块,最后将模块组装起来,形成应用软件,极大的减小了开发时长,可靠性增加,节省成本
    
    image-20201028081916296

    V模型

    强调测试的模型,测试贯穿于开发的始终,步步对应	
    
    image-20201027220516889
    面向对象模型
    RAD(SDLC瀑布模型 CBSD构建化开发模型) 	建模更快速
    

    敏捷开发

    适合小型项目
    极限编程:
    	结对编程描述:1 承担了非正式的代码审查过程
    				2 代码质量更高
    				3 编码速度更快
    	代码集体所有权(代码共享):支持共同代码拥有和共同对系统负责
    
    image-20201028085305021

    信息系统开发方法

    结构化开发,系统和现实有着比较大的差距,结构固定,难以修改
    
    image-20201028090104571

    需求的分类

    系统需求:
    					功能需求:实现基本功能
    					性能需求:要求运行的时间,安全性等
    					设计约束:用户要求使用的语言和数据库等
    QFD:				
    					基本需求:用户提出的基本功能
    					期望需求:用户没有明确提出,但是默认要做的需求
    					兴奋需求:程序员扩展给用户的功能
    
    image-20201028090650743

    需求分析

    采用面向对象方法进行软件开发,在分析阶段,架构师主要关注系统的 行为
    

    结构化设计

    结构化方法中的软件设计问题 
    概要设计
    详细设计
    多扇入,少扇出:指向自己的多一点,出去的少一点
    改进设计质量的方法:
    尽量减少高扇出结构  模块的大小适中  将具有相似功能的模块合并
    完善模块功能不能改进设计质量
    
    image-20201028091616060

    内聚和耦合

    image-20201028091655356

    系统结构/模块结构

    image-20201028091841810

    测试原则和类型

    image-20201028092756412

    测试用例设计

    黑盒测试:只知道模块的输入输出
    	等价类划分:将所有的路径编写测试案例输入
    	边界值分析:端点值和略小于端点,略大于端点
    	错误推测:经验决定
    	因果图: 由结果反推得到原因
    白盒测试:能看到模块内部的结构(更加全面,例如,if语句做一个测试,else做一个测试)
    	基本路径测试:
    	循环覆盖测试:
    	逻辑覆盖测试:
    
    image-20201028093124634

    测试阶段

    单元测试:模块测试
    集成测试:模块衔接测试
    确认测试:
    	内部确认测试
    	Alpha测试:实验环境,开发环境去测试
    	Bete测试:用户自身测试
    	验收测试:用户参与进来,看是否愿意接收这个产品
    系统测试:
    冒烟测试:可认为是回归测试(基本的确认测试)
    
    image-20201028101122489

    语句覆盖和路径覆盖

    对下图进行语句覆盖和路径覆盖,分别需要多少个测试案例?
    
    image-20201102153637390

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Aur6KMDx-1604307209621)(E:\md笔记文件\images\image-20201102153706793.png)]

    McCabe复杂度计算

    V(G) = m - n + 2
    将公共点抽象为节点,语句也抽象为节点,再进行计算
    
    image-20201028102253220

    系统运行和维护

    可维护性:
    		易分析性:代码容易理解和分析
    		易改变性:修改代码的难易程度,耦合性问题
    		稳定性:
    		易测试性:
    维护类型:
    		改正性维护:和客户沟通,对代码进行修改
    		适应性维护:对不同平台之间的适应,兼容性
    		完善性维护:扩充功能,增加性能
    		预防性维护:现在不维护,可能不会出问题,可是将来可能出现问题(空闲时,对代码模块和文档进行更新) 	千年虫问题
    
    image-20201028141909595

    软件能力成熟度模型集成(CMMI)

    阶段式
    	 一:混乱
    	 二:已管理级(项目级)
    	 三:已定义级(企业级)
    	 四:定量管理级
    	 五:优化级
    连续式(更适合国内,弥补不足)
    	一:过程管理
    	二:项目管理
    	三:工程
    	四:支持
    
    image-20201028142851363

    项目管理基础知识

    image-20201028143104924

    时间计算

    Gantt图:不能清晰的表达各任务的依赖关系
    PERT图:先计算各个节点的最早开始时间,然后逆推得到所求节点的最晚开始时间
    
    image-20201028143501400

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mheLIHBU-1604307209624)(E:\md笔记文件\images\image-20201102130250080.png)]

    image-20201102130304376

    风险管理

    项目风险:项目成本评估不准
    技术风险:采用不熟的技术,或者陈旧的等
    商业风险:开展出来的软件市场不需要或不流行
    
    image-20201028182049287

    UML

    用例图:人和系统内的关系
    顺序图:有时间关系
    通信图:和顺序图类似,无时间关系
    
    image-20201028184926747

    面向对象

    面向对象基本概念

    泛化:将多个子类的公共部分抽出来,形成一个一个类
    消息:对象之间进行交互,异步方式
    多重继承:指的是一个类可以同时继承多个父亲的行为和特征功能。比如水上飞机继承了飞机和船的特性。代指可以导致某些令人混淆的情况,所有产生二义性,超类
    
    image-20201028182801916
    多态:
    

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ksbLeOSk-1604307209625)(E:\md笔记文件\images\image-20201102160533467.png)]

    设计原则

    架构定义的任务:定义软件的主要结构元素及其之间的关系
    数据库设计任务:确定软件涉及的文件系统的结构及数据库的表结构
    详细设计任务:确定软件各个模块内部的算法和数据结构
    接口设计任务:描述软件与外部环境之间的交互关系,软件内模块之间的调用关系
    
    image-20201028184247664

    设计模式的概念

    image-20201028185355132

    设计模式的分类

    装饰模式:
    将一个对象加以包装以提供一些额外的行为
    外观模式:
    定义一个高层接口,为子系统的一组接口提供一个一致的界面,从而简化子系统的使用
    

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CplDhV4M-1604307209627)(E:\md笔记文件\images\image-20201102161316740.png)]

    image-20201028185716324
    创建型模式
    image-20201028190929771
    结构性模式
    image-20201028191536831
    行为型模式
    image-20201028192131550 image-20201028192356290

    具体解题技巧

    image-20201029192022103 image-20201029192044197 image-20201029192100219
    指针的使用
    
    image-20201029192142855
    虚函数
    
    image-20201029192204007
    java
    
    image-20201029192229064 image-20201029192255577

    数据流图(DFD)

    下午设计题的第一个问题 15`
    需求分析阶段,结构化模型之中使用频率很高
    

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vSXGvsLa-1604307209628)(E:\md笔记文件\images\image-20201028192651151.png)]

    数据流图基本概念

    image-20201028193214480

    数据流图的分层

    image-20201028193419902

    数据字典

    image-20201028193550487

    数据流图平衡原则

    image-20201028194154615
    外部实体和加工之间的联系是否有遗漏
    顶层和0层之间
    加工不可能只有输入或者输出
    
    image-20201028194100766

    答题技巧

    image-20201028194648170

    数据流图案例分析

    案例分析一

    输出,输入可能出现的问题:黑洞,奇迹,输出流和输出流相同,不可能出现的输入流和输出流
    先解决问答题
    仔细分析即可
    
    image-20201028195445539 image-20201028195346233 image-20201028195559953 image-20201028195532833

    案例分析二

    image-20201029123512671 image-20201029123614886 image-20201029123642661

    数据库设计

    image-20201029141245349

    案例分析

    缺少的属性:应该包括和其它表的联系属性
    准确确定对应关系
    规范化理论分析:缺点是数据的冗余,优点是减少了一次连接操作 
    
    image-20201029143317477 image-20201029143348224 image-20201029143238453

    案例分析二

    image-20201029143814265 image-20201029144007891

    UML建模

    用例图

    包含关系:用例必定用到其它用例
    扩展关系:用例可能用到其它用例
    泛化关系:
    
    image-20201029144846458

    类图

    填多重度:
    泛化:对类
    实现:对接口
    
    image-20201029150135611 image-20201029145925618 image-20201029150439051

    顺序图

    填写对象
    填写消息
    
    image-20201029151018372

    活动图

    image-20201029151231823

    状态图

    image-20201029151430772

    通信图

    和顺序图类似,只是时间概念没强调
    
    image-20201029151637984

    建模例题

    image-20201029152855022

    数据结构和算法

    希尔排序

    image-20201101155813409

    字符串

    字符串长度是指字符串所含字符的个数,但不包括最后的'\0'
    

    8224.png" alt=“image-20201029143348224” style=“zoom:50%;” />

    image-20201029143238453

    案例分析二

    image-20201029143814265 image-20201029144007891

    UML建模

    用例图

    包含关系:用例必定用到其它用例
    扩展关系:用例可能用到其它用例
    泛化关系:
    
    image-20201029144846458

    类图

    填多重度:
    泛化:对类
    实现:对接口
    
    image-20201029150135611 image-20201029145925618 image-20201029150439051

    顺序图

    填写对象
    填写消息
    
    image-20201029151018372

    活动图

    image-20201029151231823

    状态图

    image-20201029151430772

    通信图

    和顺序图类似,只是时间概念没强调
    
    image-20201029151637984

    建模例题

    image-20201029152855022

    数据结构和算法

    希尔排序

    image-20201101155813409

    字符串

    字符串长度是指字符串所含字符的个数,但不包括最后的'\0'
    
    展开全文
  • 7.2.1 运算器设计 7.2.2 乘法和除法运算 7.3 控制器设计 7.3.1 硬件逻辑结构总体设计 7.3.2 指令时序的控制方式 7.3.3 指令周期和时标系统 7.3.4 指令周期和时钟周期的确定 7.3.5 确定微操作时间表与微操作命令逻辑...
  • 无符号除法的整体设计思路是,通过被除数移位后的结果与除数做减法运算实现的除法过程,具体设计思路是对于输入八位无符号被除数divisor1,先对八位divisor1进行转换为十六位的divisor1_tmp,高八位补零,第八位是...
  • 本文利用TI十六位定点DSPTMS320F206和五片四通道同步十二位AD转换AD7874构成了实时高速二十通道的同步DSP数据采集系统,充分发挥了DSP强大的数据处理能力,同时将分析结果实时以文本或图形两种方式在LCD上显示出来...
  • (QB中大量存在GOTO,和汇编的JMP一样,呵呵)我学过八位、十六位汇编,以及微机原理、计算机组成原理,做过十六位算术运算器及其微指令(就是汇编下一层)设计。看到32位汇编,感觉特别爽,看E文

     刚进入破解界,是使用OD。糊里糊涂的破了一个软件。后来尝试的几个,都失败了。从那开始,我接触了IDA,喜欢上看汇编来。(老实说,我是程序疯子,比较熟悉VB和汇编)
    汇编看起来就像几年前的QB的低级版本。(QB中大量存在GOTO,和汇编的JMP一样,呵呵)我学过八位、十六位汇编,以及微机原理、计算机组成原理,做过十六位算术运算器及其微指令(就是汇编下一层)设计。看到32位汇编,感觉特别爽,看E文指令总比看实验箱上的那一排排小灯爽吧。因此,我觉得看汇编并不是什么难事,只是某些新增的指令(比如浮点指令)比较难懂点。
    使用IDA反汇编VB做的软件,看到里面的一个个被识别的VB函数,特高兴。在一个函数的图形试图中,鼠标点击选中任意一个call,使得整个函数的 call变成黄色底,然后从头往下看,只看VB函数,一般是__vba或rtc开头的,大概就能明白这个函数都做了哪些操作,想干嘛的了。如果觉得这个函数做了一些可以操作,比如操作注册表、操作文件,或者大量字符串运算,那么,这里可能就是注册相关的位置了。我分析的许多VB程序,就是这么干的。
    许多用VB做的系统,绝大多数都是编译成DLL,也就是COM啦。可以供别的程序调用,或者供ASP调用(这种非常多)。对付这种程序,我一般是用VB的对象浏览器查看这个COM(如何注册如果引入就不用我说了吧,对象浏览器就是F2),看看它都有哪些类,哪些属性和方法。一般来说都可以发现注册相关的地方,然后自己用VB写一点代码调用这个COM,生成EXE,再用OD加载,专门调试这个DLL,呵呵,这回就不用因为别的限制而不方便了。用OD调试到目标函数,记住地址,同时用IDA打开DLL,看对应的位置。记得在IDA中把那个函数改名哦,省得下次再看到就不知道是什么函数了。
    上面的方法,我用了很久,慢慢的,觉得很无趣了--太多了,累!
    很喜欢IDA的一些功能:
    1,标签改名。这应该是我最喜欢的了。看那种数字排序的变量名,还真是天书。因此,每当我能确定某个函数的名字的时候,就及时改名,这样所有调用这个函数的地方,名字就跟着变了。
    2,注释。这一点,一点也不比第一点差。我这里说的注释可不是像OD那样的代码注释,而是IDA里面的变量注释,或者标签注释,或者函数注释。在一个变量、标签、函数后写注释,那么,所有引用的地方,后面会紧跟着这些注释。比如你可以给一个函数写一段注释,那么在别的引用这个函数的地方,不仅能看到这个函数的“真实”名字,还能详细看到这个函数是干嘛的。
    3,双击跳转。这个功能也经常使用。近来才发现,不仅代码的标签可以双击跳转,连注释中的也可以。不要怪我孤陋寡闻,本文中我说的用法,都是我自己琢磨出来的。在图形视图中,双击某一根线,就可以跳转到另一段的代码处。对于双击的跳转,如果想回头看前面的代码,按Esc就可以了。
    对付VB的一些技巧:
    1,VB函数的参数压栈方式是从右到左,同时,因为VB是OO语言(尽管不完全是),所以,一般还有一个默认参数,就是对象自身,如果有返回值,返回值的地址,会作为第一个参数压栈。因此,完整的参数压栈方式是:[返回值地址],从右到左的参数,对象自身。
    2,了解参数压栈方式以后,我喜欢进入函数,修改该函数的本地变量名。原来都是var_XX和arg_XX形式的。首先,arg_8就是第一个参数啦,把它改名为this,当然,你要改为me或者self也行,最后一个参数arg,改为return,当然,如果这个函数没有返回值就不要这样改了。如果能通过VB的对象浏览器确定参数名,也可以在这里改名。
    3,如果知道一个函数是否有返回值?一,看调用处,第一个压栈的参数,在函数调用后,时候马上用到这个变量,如果用到,就是有返回值得;二,看函数内部,在图形视图中看,一般来说,VB的函数在图形视图中会分成三截:主题、返回处理、错误处理,一大两小并排在顶头的,看小的那两个,是否用到了最后一个 arg,如果用到,就是有返回值得。这里是一般方法,不敢肯定全部都是这样。
    4,在函数头部,一般首先是一大堆var_XX,然后是arg_XX,然后处理esp,然后有一个xor eax, eax,这个eax可以是别的,异或清零,往下应该是许多mov [esp+var_XX], eax,这里就是本地变量初始化了。大多数时候,会看到一个call [XXX+4]的,这里是安装SEH用的。老实说,我不懂SEH是什么东西。不过不用管它。往后,才是正文。
    5,往下看对应着哪些参数,一般都会有copy或者move指令把参数复制一份到本地变量var_XX中,这里也改名为var_参数名,表明这是某个参数的副本。
    6,看顶头的返回处理,就是一大两小中的其中一个小,找到return,一般可以看到:
    mov ecx, [esp+return]
    mov eax, [esp+var_XX]
    mov [ecx], eax
    这里把返回值地址复制到ecx中,可以是别的寄存器,然后把一个本地变量复制到eax中,然后再写入ecx对应的位置。这里也说明了为什么一般的函数即使有指定的返回值,也会在eax中有返回值。好,把这个var_XX改为var_return。这回好了,“两头夹攻”,看中间的代码就容易多了
    7,这回得OD出场了。用OD单步跟这个函数,看看中间会不会出现某些ado.XXXXXX或者capicom.XXXXXX之类的,这些就是ADO和 CAPICOM等COM的方法啦。这些方法的地址一般都是固定的,自己平时慢慢积累一些方法地址对应表,就可以在这里时候排上用场啦。
    8,在IDA中定位到这个方法出现的对应位置,往上翻,一般都可以找到一个New2,这里就是ADO对象或者CAPICOM对象的实例化的地方。New2 上面的两三行中会复制一个字符串常量,那个字符串常量,就是对应的对象类名了。比如Set obj=CreateObject("ADODB.Connection"),就要复制ADODB.Connection这个字符串。呵呵,这只是我的猜测而已。这回要干的事情,首先是把这个字符串的标签改名,这样,别的要用到这个类的地方,就明显可以看得出来了。然后,New2以后会把结果复制到某个 var_XX中,改名改var_对象名。
    9,轮到结构体出场了。这个var_XX,一般会这样用
    mov eax, [esp+var_XX]
    mov edx, [eax]
    call [edx+XXh] ;执行位移为XXh的方法
    这种对象定位,会让我们很郁闷,尽管我们知道绝对地址。不过,强大的IDA给我们以极大的帮助。首先建立一个结构体(比如ADOConn),具体建立方法可以看看雪学院的教程,定义一个位移是XXh的成员(比如Open),写好名字。然后在cal [eax+XXh]中的XXh上点鼠标右键,IDA就会把合适的结构成员列出来,你只需要选择就可以了。比如:ADOConn.Open。需要主意的是,如果这个对象有属性,用法会稍微不一样,比如这样:
    mov edx, [esp+var_XX]
    mov eax, [edx+XXh] ;取位移为XXh的属性
    可以看到,似乎可以理解为:方法列表的首地址就是对象的第一个成员。所以,刚才那个结构体,就不适合用了,新建一个吧,专门放属性的。此外,所有常量用右键,都可以选结构成员。当然,结构体的成员,也可以写注释,同样,出现在每个引用的地方。
    10,一个COM,除了公开的类之外,还有一些类是不公开的,对象浏览器中看不到的。但是,在文件头中,可以看到有这么一个类存在,只不过,可能需要熟悉文件格式才行。不过没关系啦,分析的时候,感觉这个类应该是哪方面的,自己起一个名字就好了,反正都是给自己看的。
    11,这些结构体,如果在每个要分析的文件中都分析一次,那多麻烦呀。没关系,IDA已经为我们准备好了。“文件”-》“创建文件”-》“创建IDC文件 ”,就可以导出一个文件。在另一个待分析的文件中,“文件”-》“IDC文件”,就可以导入了。这方法是我自己胡弄得知的,不知道实际上应该怎么样。

    好了,上面是我的一些想法,很高兴能和大家分享。可以看出,我可真是菜鸟一只……
    我也遇到许多问题:
    1,像上面的ADO和CAPICOM等常用COM的类库方法位移,如果有一个全面的IDC就好了。比如我在《一个软件逆向分析》一文中写到的那样,如果我有jvm.dll的IDC就好了。
    2,许多字符串常量,我根本搞不懂,IDA也不能给我正确的限制。我查资料发现,VB的字符串,在变量指向的地方的前两个字节是字符串长度,我按照这种方式建立了一个结构体,但还是看不到完整的VB字符串,我自己用VB写代码试过。
    3,IDA插件或脚本,该怎么用?怎么写?论坛上也有一些文章,但是,资料实在太少了。
    4,我想写一个插件或脚本,给常用的VB函数的参数自动写上注释,这样,我只要看注释,就可以看懂大部分内容了。其实,我很早以前就想做一个VB反编译器了,但时间和难度的问题,始终无法解决,也就作罢。现在我想在IDA的基础上做这件事情,正如前文所说,我是一个程序疯子,就喜欢写代码。
    5,VB程序的文件里面,包含着所有类的成员结构,包括属性和方法。COM中所有类(包括不公开的)的名字都有,而公开的类,有所有成员的名字。因此,我想写插件,给这些类建立对应的结构体,然后给代码中相应的地方,直接把位移值换成结构体,也就不需要一个个取选了,后面这一点可能有点难度。
    6,IDA经常不能识别所有的用户函数,而需要手工去建立,好烦,也想写插件,因为这些都是纯体力劳动。

    展开全文
  • 用C#实现简单计算器(课外作业)

    千次阅读 2017-02-27 16:50:00
    一、打开vs2013,选择新建→项目→Windows窗体应用程序 二、对窗体进行设计,添加...3.“与”和“或”的位运算 4.平方和开方运算 5.ANS能存储上一次的运算结果,CE清除Text内容,AC清除所有数据 四、双击部件进行代...

    一、打开vs2013,选择新建→项目→Windows窗体应用程序

    1098069-20170227163147923-1048685005.png

    二、对窗体进行设计,添加响应的按钮等部件,可修改各部件参数(重新打开文件,可通过视图→设计器,打开窗体的设计器界面)

    1098069-20170227163409016-1817636033.png
    1098069-20170227163507704-1461807015.png

    三、功能说明

    1.加减乘除运算
    2.十进制转二进制,十进制转十六进制
    3.“与”和“或”的位运算
    4.平方和开方运算
    5.ANS能存储上一次的运算结果,CE清除Text内容,AC清除所有数据

    四、双击部件进行代码编辑,以下是计算器的代码

    
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;
    
    namespace Calculator
    {
        public partial class Form1 : Form
        {
            private double num1=0;//第一操作数
            private double num2;//第二操作数
            private string sign;//运算符号
            private double num3;//结果
            private bool check=true;//检测是否为第一操作数
            private double ans = 0;//存储上一次计算的结果
            public Form1()
            {
                InitializeComponent();
               
            }
    
    
            private void button1_Click(object sender, EventArgs e)
            {
                if (check==true)
                {
                    Button b = (Button)sender;
                    textBox1.Text += b.Text;
                    num1 = double.Parse(textBox1.Text);
                }else
                {
                    Button b = (Button)sender;
                    textBox1.Text += b.Text;
                    num2 = double.Parse(textBox1.Text);
                }
               
            }
    
            private void button2_Click(object sender, EventArgs e)
            {
                if (check == true)
                {
                    Button b = (Button)sender;
                    textBox1.Text += b.Text;
                    num1 = double.Parse(textBox1.Text);
                }
                else
                {
                    Button b = (Button)sender;
                    textBox1.Text += b.Text;
                    num2 = double.Parse(textBox1.Text);
                }
            }
    
            private void button3_Click(object sender, EventArgs e)
            {
                if (check == true)
                {
                    Button b = (Button)sender;
                    textBox1.Text += b.Text;
                    num1 = double.Parse(textBox1.Text);
                }
                else
                {
                    Button b = (Button)sender;
                    textBox1.Text += b.Text;
                    num2 = double.Parse(textBox1.Text);
                }
            }
    
            private void button4_Click(object sender, EventArgs e)
            {
                if (check == true)
                {
                    Button b = (Button)sender;
                    textBox1.Text += b.Text;
                    num1 = double.Parse(textBox1.Text);
                }
                else
                {
                    Button b = (Button)sender;
                    textBox1.Text += b.Text;
                    num2 = double.Parse(textBox1.Text);
                }
            }
    
            private void button5_Click(object sender, EventArgs e)
            {
                if (check == true)
                {
                    Button b = (Button)sender;
                    textBox1.Text += b.Text;
                    num1 = double.Parse(textBox1.Text);
                }
                else
                {
                    Button b = (Button)sender;
                    textBox1.Text += b.Text;
                    num2 = double.Parse(textBox1.Text);
                }
            }
    
            private void button6_Click(object sender, EventArgs e)
            {
                if (check == true)
                {
                    Button b = (Button)sender;
                    textBox1.Text += b.Text;
                    num1 = double.Parse(textBox1.Text);
                }
                else
                {
                    Button b = (Button)sender;
                    textBox1.Text += b.Text;
                    num2 = double.Parse(textBox1.Text);
                }
            }
    
            private void button7_Click(object sender, EventArgs e)
            {
                if (check == true)
                {
                    Button b = (Button)sender;
                    textBox1.Text += b.Text;
                    num1 = double.Parse(textBox1.Text);
                }
                else
                {
                    Button b = (Button)sender;
                    textBox1.Text += b.Text;
                    num2 = double.Parse(textBox1.Text);
                }
            }
    
            private void button8_Click(object sender, EventArgs e)
            {
                if (check == true)
                {
                    Button b = (Button)sender;
                    textBox1.Text += b.Text;
                    num1 = double.Parse(textBox1.Text);
                }
                else
                {
                    Button b = (Button)sender;
                    textBox1.Text += b.Text;
                    num2 = double.Parse(textBox1.Text);
                }
            }
    
            private void button9_Click(object sender, EventArgs e)
            {
                if (check == true)
                {
                    Button b = (Button)sender;
                    textBox1.Text += b.Text;
                    num1 = double.Parse(textBox1.Text);
                }
                else
                {
                    Button b = (Button)sender;
                    textBox1.Text += b.Text;
                    num2 = double.Parse(textBox1.Text);
                }
            }
    
            private void button10_Click(object sender, EventArgs e)
            {
                if(textBox1.Text != "")
                { 
                if(check==true)
                {
                    Button b = (Button)sender;
                    textBox1.Text += b.Text;
                    num1 = double.Parse(textBox1.Text);
    
                }
                else if (check == false)
                {
                    Button b = (Button)sender;
                    textBox1.Text += b.Text;
                    num2 = double.Parse(textBox1.Text);
                }
                }
            }
    
            private void button12_Click(object sender, EventArgs e)//加法
            {
                sign = "+";
                textBox1.Text = "";
                check = false;
            }
    
            private void button13_Click(object sender, EventArgs e)//减法
            {
                sign = "-";
                textBox1.Text = "";
                check = false;
            }
    
            private void button14_Click(object sender, EventArgs e)//乘法
            {
                sign = "*";
                textBox1.Text = "";
                check = false;
            }
    
            private void button15_Click(object sender, EventArgs e)//除法
            {
                sign= "/";
                textBox1.Text = "";
                check = false;
            }
    
            private void button23_Click(object sender, EventArgs e)//与运算
            {
                sign = "&";
                textBox1.Text = "";
                check = false;
            }
    
            private void button24_Click(object sender, EventArgs e)//或运算
            {
                sign = "|";
                textBox1.Text = "";
                check = false;
            }
    
            private void button25_Click(object sender, EventArgs e)//平方
            {
                sign = "pow";
                textBox1.Text = "";
                check = false;
            }
    
            private void button26_Click(object sender, EventArgs e)//开方
            {
                sign = "sqrt";
                textBox1.Text = "";
                check = false;
            }
            private void button16_Click(object sender, EventArgs e)//等于号
            {
                check = true;
                switch (sign)
                {
                    case"+":
                        num3 = num1 + num2;
                        break;
                    case"-":
                        num3 = num1 - num2;
                        break;
                    case"*":
                        num3 = num1 * num2;
                        break;
                    case"/":
                        num3=num1/num2;
                        break;
                    case"&":
                        num3 = (int)num1 & (int)num2;
                        break;
                    case"|":
                        num3 = (int)num1 | (int)num2;
                        break;
                    case "pow":
                        num3 = Math.Pow(num1,2);
                        break;
                    case "sqrt":
                        num3 = Math.Sqrt(num1);
                        break;
    
                }
                num1 = num3;
                ans = num1;
                textBox1.Text = num3.ToString();
                
                
    
            }
    
            private void button17_Click(object sender, EventArgs e)//清除所有的数据    
            {
                textBox1.Text = "";
                num1 = 0;
                num2 = 0;
                num3 = 0;
                ans = 0;
            }
    
            private void button22_Click(object sender, EventArgs e)//清除当前的数据
            {
                textBox1.Text = "";
                num1 = 0;
                num2 = 0;
                num3 = 0;
            }
            private void button11_Click(object sender, EventArgs e)//小数点
            {
                if (textBox1.Text != "")
                {
                    if (check == true)
                    {
                        Button b = (Button)sender;
                        textBox1.Text += b.Text;
                        num1 = double.Parse(textBox1.Text);
    
                    }
                    else if (check == false)
                    {
                        Button b = (Button)sender;
                        textBox1.Text += b.Text;
                        num2 = double.Parse(textBox1.Text);
                    }
                }
            }
    
            private void button18_Click(object sender, EventArgs e)
            {
                
                int a = int.Parse(textBox1.Text);
                textBox1.Text = Convert.ToString(a, 2);
            }
    
            private void button19_Click(object sender, EventArgs e)
            {
                int a = int.Parse(textBox1.Text);
                textBox1.Text = Convert.ToString(a, 16);
            }
    
            private void button21_Click(object sender, EventArgs e)
            {
                textBox1.Text = ans.ToString();
                if(check==true)
                {
                    num1 = ans;
                }
                else
                {
                    num2 = ans;
                }
            }
    
            private void button20_Click(object sender, EventArgs e)
            {
                textBox1.Text = "          ㄟ(▔皿▔ㄟ)";
            }
    
    
        }
    }
    

    转载于:https://www.cnblogs.com/leungjj/p/6474911.html

    展开全文
  • 定长cpu周期、三数据总线结构运算器的嵌入式CISC模型机 模型机规定采用定点补码表示法表示数据,且字长为8 模型机设计四大类指令共十六条,其中包括算术逻辑指令、I/O指令、访问及转移指令和停机指令。 本资源...
  • COP2000.zip

    2019-09-16 22:33:43
    COP2000 系统的运算器采用了代表现代科技的 EDA 技术设计,随机出厂时,已提供一套已装载的方案,能进行加、减、与、或、带进位加、带进位减、取反、直通八种运算方式,若用 户不满意该套方案,也可自行重新设计并...
  • 第十一章 位运算 181 位运算符 183 与运算符(&) 183 按位或(\) 186 按位异或(^) 187 非运算符(~) 187 左移与右移运算符(,>>) 188 设置、清除和检测位 190 位图图形 194 答案 200 编程练习 201 ...
  • 会计理论考试题

    2012-03-07 21:04:40
    19.软盘插入软盘驱动后,驱动的读写就通过读写窗口存取信息。( Y ) 20.计算机的常用输入设备有打印机和键盘。( N ) 第二套 选择题 1.PC机中 Intel8088、80286、80386、80486,PemiumPⅡ、PⅢ是指_D_的不同...
  • 2004-2010软考程序员真题

    热门讨论 2012-09-27 12:33:00
     A)运算器和显示器 B)CPU和内存储器  C)CPU和UPS D)UPS和内存储器  45、下面四条常用术语的叙述中,有错误的一条是  A)光标是显示屏上指示位置的标志  B)汇编语言是一种面向机器的低级程序设计语言,用汇编...
  • visual C++_Turbo C串口通信编程实践

    热门讨论 2010-07-30 09:14:24
    7.2.3 逻辑运算与位运算 7.3 数据包校验与常用校验算法 7.3.1 数据校验过程 7.3.2奇偶校验 7.3.3 异或校验 7.3.4 CRC循环冗余码校验 7.4 串口通信数据包处理方法编程实例第8章 单片机串口通信 第8章 ...
  •  本书的目标是使你在C语言程序设计方面由一初学者成为一称职的程序员。 内容简介  本书是编程语言先驱者Ivor Horton的经典之作,是C语言方面最畅销的图书品种之一。本书集综合性、实用性为一体,是学习C语言...
  •  本书的目标是使你在C语言程序设计方面由一初学者成为一称职的程序员。 内容简介  本书是编程语言先驱者Ivor Horton的经典之作,是C语言方面最畅销的图书品种之一。本书集综合性、实用性为一体,是学习C语言...
  • nasm PC汇编语言 教程

    热门讨论 2010-10-02 23:07:39
    3.4.2 在C中使用按位运算. . . . . . . . . . . . . . . . . . . 50 3.5 Big和Little Endian表示法. . . . . . . . . . . . . . . . . . . . 51 3.5.1 什么时候需要在乎Little和Big Endian . . . . . . . . . 52 3.6...
  • 2.7 按逻辑运算 28 2.8 移位操作 30 2.8.1 算术左移与逻辑左移 30 2.8.2 逻辑右移 30 2.8.3 算术右移 31 2.8.4 循环右移 32 2.9 本章小结 32 第3章 C语言编程的环境搭建 /33 3.1 Windows操作系统下搭建...
  • 实例022 加密可以这样简单(位运算) 实例023 用三元运算符判断奇数和偶数 实例024 更精确地使用浮点数 实例025 不用乘法运算符实现2×16 实例026 实现两个变量的互换(不借助第3个变量) 2.3 条件语句 实例...
  • asp.net知识库

    2015-06-18 08:45:45
    运算表达式类的原理及其实现 #实现的18身份证格式验证算法 身份证15To18 的算法(C#) 一组 正则表达式 静态构造函数 忽略大小写Replace效率瓶颈IndexOf 随机排列算法 理解C#中的委托[翻译] 利用委托机制处理.NET中...
  • 黑客记事本源码

    2013-07-27 10:17:55
    ⑨ 10/16进制算术运算 逻辑运算(破解常用) ⑩ 星号密码查看 ⑾ 取硬盘特征 原值 十六进制值 MD5值 =============================================================================================== ...
  • 21天学通C++ (中文第五版)

    热门讨论 2010-06-23 16:57:03
    1.9.2 用链接生成可执行文件 1.10 程序开发周期 1.11 HELLO.cpp:第一个C++程序 1.12 编译器初步 .1.13 编译错误 1.14 小结 1.15 问与答 1.16 作业 1.16.1 测验 1.16.2 练习 第2章 C++程序的组成部分 ...
  • [size=15.5556px] 7.2 、位运算 ----- 第31课 [size=15.5556px] A、&按位与 [size=15.5556px] B、 |按位或 [size=15.5556px] C、^按位异或 [size=15.5556px] D、~取反 [size=15.5556px] E、左移,>>左移 [size=15....
  • [Flash.ActionScript.3.0动画教程],这是一本由Keith Peters编写的一本动画设计教材,此书要求读者对as2.0要有比较深的了解,主要讲解的是动画相关的原理。绝对有价值的一本书。 目录如下: 第一部分ActionScript...
  • 思科网络技术学院教程CCNA1

    热门讨论 2013-05-28 06:37:53
    虽然每一个LAN都是独特的,但很多设计理论是适用于所有网络的,因此本章对各种选择作了比较,包括不同的线缆,不同的网络设备(如集线和交换机)。本章也包含广域网(WAN)布线,包括如何选择串行线缆将路由器连到广域...
  • 实例154 使用递归过程实现阶乘运算 6.2 综合应用 实例155 制作改变窗体颜色的自定义过程 实例156 利用错误号获取错误名称 实例157 将汉字转换为Unicode字符代码 实例158 获取在已打开文件中的读写位置 实例159...
  • 岳维功 ortp-realease.pdf

    2020-12-24 04:00:17
    除了向队列添加消息块外,上述数据结构设计还支持向个消息块添加新的消息块,这样可 以支持一个消息块保存较人块的数据,如下图所示 b cont b rptr dh base do lim reserved db freen d2 do ref ms 1 b datab/ buffer s...

空空如也

空空如也

1 2 3
收藏数 46
精华内容 18
关键字:

十六位运算器设计