首页>总结报告>找基址总结(必备4篇)

找基址总结(必备4篇)

时间:2024-03-16 11:08:18 总结报告

找基址总结 第1篇

所以它的可用性不强。我们需要的是一个稳定的访问方式,这个东西就是基址。

让我们从写游戏的程序员角度来思考,程序里面需要一个地方放金钱。

假设这个游戏是C/C++写的。(一般来说都是这样的,就算不是,一般来说其他语言的底层细节和C是类似的) 最简单的情况: 比如说一个非常简单的小游戏,可能它的金钱直接就是个全局变量。因为这是一个C/C++写的游戏,全局变量的位置应该是固定的。当一个程序被加载后,其映像地址被确定,比如说现在的windows,可执行文件的加载地址一般是 (囧,忘了)。 然后该全局变量就在相对于这个映像地址的某个偏移处,这个偏移是固定的。这种情况,我们在CE搜到的直接就是不变的地址了。

如果是另一种情况:

假设这个游戏有一堆全局变量,写游戏的程序员看着这一堆全局变量很发愁。他决定把代码重构一下。把所有的全局变量整合到一个结构体里面,比如说原来是 血,蓝,金钱 都直接裸体放在全局。现在搞了一个xxxuct,把血,蓝,金钱,都弄到结构体里面,当成员。然后全局放一个这个xxxuct的实例。这样的话,因为这个实例是全局的,它的地址不变,然后金钱在xxxuct内的偏移不变,所以目标地址还是可以直接当基址用。

但是如果更进一步:

假如这个xxxuct太大了,程序员决定把它动态分配,也就是说现在全局放了一个指针指针指向了一片动态分配出来的内存,放着这个xxxuct。现在我们可以知道,指针是全局的,它的地址不变,但是它的内容是变化的(因为是动态分配的),所以我们搜到的目标地址就是变化的了。但是如果我们每次都先找到指针(指针是全局的,它的地址固定),再找指针指向的位置,得到xxxuct,然后金钱在相对于这个xxxuct的固定偏移处,这样一个迂回的方式,就可以保证每次都取到正确金钱地址了。

基本上其他的都是上面这种指针式的扩展了:

比如说某游戏采用了 一关一关的 数据结构。每关都会重新搞一块儿内存,但是金钱在这块内存的固定偏移处。这样的话,我们需要找到一个东西指向 关卡 ,然后再加一个固定的偏移。

再组合一下,可能金钱不在这个关卡结构的固定偏移处,可能关卡内部一个指针,指向一个角色,然后金钱在这个角色的固定偏移处。这就是两重指针。

当然也可能更复杂。但是总是可以找到一个方式来寻找到目标地址。

可以这样想,游戏本身肯定需要一个方式来访问金钱。这个方式就是  指针 和 固定地址、固定偏移 的组合。

并且这个方式是固定的。既然如此,我们就可以用同样的方式来访问金钱。

(一个相关的问题。以前想过,如果游戏本身加入了随机因素,那么访问方式就不是固定的了。会不会导致我们找不到基址。想了想应该不会。所谓随机,如何随机呢。举个例子,某游戏,在开启时产生一个随机数,然后在一个数组的该随机数偏移处存放金钱。这样我们可以找到存放这个随机数的基址,然后找到存放数组位置的基址,组合起来其实还是 指针和固定地址、固定偏移的组合。只不过这个固定地址(也就是这个随机数)的获得,也需要搞一遍基址。)

原理就是这样。

找基址总结 第2篇

一、计算机中得数制

在计算机内部,一切信息得存取、处理与传送都就是以二进制编码形式进行得

微机组成原理

8086微处理器

1、8086CPU使用16根地址线访问I/O端口,最多可访问216=64K个字节端口,使用20根地址线访问存储单元,最多可访问220=1M个字节单元。类似这种类型得反过来得题目也应该会做:已知可寻址得内存空间最大为16MB,CPU得地址总线至少应有24条

2、8086CPU由哪几个部分组成?各个部分完成得什么工作?如何协调工作?

3、8086与8088得主要区别就是什么?

4、寄存器结构

8086微处理器包含有14个16位得寄存器与8个8位寄存器。

4个通用寄存器(AX,BX,CX,DX)

4个段寄存器(CS,DS,SS,ES)

4个指针与变址寄存器(SP,BP,SI,DI)

4)、指令指针(IP)

16位指令指针寄存器,其内容为下一条要执行得指令得偏移地址。

5)、8086得标志寄存器FLAG按其作用可分为哪两大类。

(1)状态标志位

(2)控制标志位

在8086得16位标志寄存器中,并不就是每一位都有一定得含义,只有9位有含义,其余7位未用。

标志寄存器中得中断标志位IF就是控制可屏蔽中断得标志。

IF=1时,CPU响应中断请求;

IF=0时,CPU屏蔽中断请求,不予响应

1、8086有14个16位寄存器与8个8位寄存器,其中哪两个寄存器保存了下一条要执行5、8086得引脚及其功能

若8086 CPU引脚状态就是M/IO#=0,RD#=1,WR#=0,则此时执行得操作就是写I/O

6、CPU执行指令时涉及三种周期:

时钟周期、总线周期、指令周期

三者关系:一个基本得总线周期至少由4个时钟周期组成(T1、T2、T3、T4)。指令周期就是由1个或多个总线周期组合而成。

8086CPU在读/写总线周期得T3状态结束对READY线采样,如果READY为低电平,则在T3与T4状态之间插入等待状态TW。

找基址总结 第3篇

纠错编码的基本原理

简单实用的纠错编码

1、信道分类:从差错控制角度看

随机信道:错码的出现是随机的突发信道:错码是成串集中出现的

混合信道:既存在随机错码又存在突发错码

差错控制技术的种类:检错重发、前向纠错、反馈校验、检错删除差错控制编码----常称为纠错编码

监督码元:上述4种技术中除第3种外,都是在接收端识别有无错码。所以在发送端需要在信息码元序列中增加一些差错控制码元,它们称为监督码元。不同的编码方法,有不同的检错或纠错能力。

多余度:就是指增加的监督码元多少。例如,若编码序列中平均每两个信息码元就添加一个监督码元,则这种编码的多余度为1/3。

编码效率(简称码率):设编码序列中信息码元数量为k,总码元数量为n,则比值k/n就是码率。

冗余度:监督码元数(n-k)和信息码元数k之比。

理论上,差错控制以降低信息传输速率为代价换取提高传输可靠性。

4、自动要求重发(ARQ)系统采用检错重发的通信系统一般称为自动要求重发系统。共3种ARQ系统:

1、停止等待ARQ系统;

2、拉后ARQ系统;

3、选择重发ARQ系统

ARQ的主要优点:和前向纠错方法相比监督码元较少即能使误码率降到很低,即码率较高;检错的计算复杂度较低;

检错用的编码方法和加性干扰的统计特性基本无关,能适应不同特性的信道。

ARQ的主要缺点:需要双向信道来重发,不能用于单向信道,也不能用于一点到多点的通信系统。因为重发而使ARQ系统的传输效率降低。

在信道干扰严重时,可能发生因不断反复重发而造成事实上的通信中断。在要求实时通信的场合,例如电话通信,往往不允许使用ARQ法。

在发送端,输入的信息码元在编码器中被分组编码(加入监督码元)后,除了立即发送外,还暂存于缓冲存储器中。若接收端解码器检出错码,则由解码器控制产生一个重发指令。此指令经过反向信道送到发送端。由发送端重发控制器控制缓冲存储器重发一次。

接收端仅当解码器认为接收信息码元正确时,才将信息码元送给收信者,否则在输出缓冲存储器中删除接收码元。

当解码器未发现错码时,经过反向信道发出不需重发指令。发送端收到此指令后,即继续发送后一码组,发送端的缓冲存储器中的内容也随之更新。

纠错编码的基本原理

1、概念:禁用码组、许用码组将信息码分组,为每组信息码附加若干监督码的编码称为分组码。在分组码中,监督码元仅监督本码组中的信息码元。

2、分组码的码重和码距码重:把码组中“1”的个数目称为码组的重量,简称码重。码距:把两个码组中对应位上数字不同的位数称为码组的距离,简称码距。最小码距:把某种编码中各个码组之间距离的最小值称为最小码距(d0)。

3、码距和检纠错能力的关系

一种编码的最小码距d0的大小直接关系着这种编码的检错和纠错能力:

1、为检测e个错码,要求最小码距d0e+1

2、为了纠正t个错码,要求最小码距d02t+1

3、为纠正t个错码,同时检测e个错码,要求最小码距

这种纠错和检错结合的工作方式简称纠检结合。

简单实用的纠错编码

奇偶监督码

二维奇偶监督码

恒比码

正反码

奇偶监督码

奇偶监督码分为奇数监督码和偶数监督码两种,两者的原理相同。

在偶数监督码中,无论信息位多少,监督位只有1位,它使码组中“1”的数目为偶数,即满足下式条件:

式中a0为监督位,其他位为信息位。

这种编码能够xxx数个错码。在接收端,按照上式求“模2和”,若计算结果为“1”就说明存在错码,结果为“0”就认为无错码。

恒比码

在恒比码中,每个码组均含有相同数目的“1”(和“0”)。由于“1”的数目与“0”的数目之比保持恒定,故得此名。

这种码在检测时,只要计算接收码组中“1”的数目是否对,就知道有无错码。

恒比码的主要优点是简单和适于用来传输电传机或其他键盘设备产生的字母和符号。对于信源来的二进制随机数字序列,这种码就不适合使用了。

正反码------正反码的编码:它是一种简单的能够纠正错码的编码。其中的监督位数目与信息位数目相同,监督码元与信息码元相同或者相反则由信息码中“1”的个数而定。

找基址总结 第4篇

第一节8086寻址方式

一、数据寻址方式

指令得格式:操作码目得操作数,源操作数 例:MOVAL,19H

其中AL为目得操作数,19H为源操作数 1、立即寻址

操作数(为一常数)直接由指令给出

(此操作数称为立即数)

立即寻址只能用于源操作数

MOVAX,1800H立即寻址指令执行速度最快 2、寄存器寻址

(1)操作数放在某个寄存器中

(2)源操作数与目得操作数字长要相同 例:MOVAX,BX

3、直接寻址

(1)指令中直接给出操作数得16位偏移地址 偏移地址也称为有效地址(EA,EffectiveAddress)

(2)默认得段寄存器为DS,但也可以显式地指定其她段寄存器——称为段超越

MOVAX,[2A00H]

4、间接寻址

●操作数得偏移地址(有效地址EA)放在寄存器中

●只有SI、DI、BX与BP可作间址寄存器,可以提供偏移地址EA ●例:MOVAX,[BP]源操作数物理地址为16×(SS)+(BP)。 MOVCL,CS:[DI]

错误例:×MOVAX,[DX];只有SI、DI、BX与BP可作间址寄存器 ×MOVCL,[AX];只有SI、DI、BX与BP可作间址寄存器 5、寄存器相对寻址

●EA=间址寄存器得内容加上一个8/16位得位移量

●例:MOVAX,[BX+8]

MOVAX,8[BP];默认段寄存器为SS

6、基址变址寻址

●若操作数得偏移地址:

由基址寄存器(BX或BP)给出——基址寻址方式

由变址寄存器(SI或DI)给出——变址寻址方式

由一个基址寄存器得内容与一个变址寄存器得内容相加而形成操作数得偏移地址,称为基址-变址寻址。

EA=(BX)+(SI)或(DI);

EA=(BP)+(SI)或(DI)

同一组内得寄存器不能同时出现。

注意:除了有段跨越前缀得情况外,当基址寄存器为BX时,操作数应该存放在数据段DS中,当基址寄存器为BP时,操作数应放在堆栈段SS中。

7、相对基址变址寻址

●在基址-变址寻址得基础上再加上一个相对位移量

EA=(BX)+(SI)或(DI)+8位或16位位移量; EA=(BP)+(SI)或(DI)+8位或16位位移量

指令操作例:MOV1283H[BX][SI],AX

寄存器间接、寄存器相对、基址变址、相对基址变址四种寻址方式得比较:

寻址方式指令操作数形式

寄存器间接只有一个寄存器(BX/BP/SI/DI之一)

寄存器相对一个寄存器加上位移量

基址—变址两个不同类别得寄存器

相对基址-变址两个不同类别得寄存器加上位移量

例:1、以下指令中,没有错误得就是()。

2、以下几种不同数据寻址方式得指令中,()得指令执行速度最快。

第二节8086指令系统

一、数据传送指令

1、通用传送指令

(1)MOVdest,src;dest←src

(2)、堆栈指令

按“后进先出”方式工作得存储区域。

1压栈指令PUSH

2弹出指令POP

例:假设(SS)=20xxH,(SP)=0012H,(AX)=1234H,执行PUSHAX后,(SP)=0010H

2、输入输出指令

(1)输入指令IN

(2)输出指令OUT

二、算术运算指令

1、加法指令

(1)不带进位得加法指令ADD

实例:

ADDAL,30H

ADD指令对6个状态标志均产生影响。 (1)带进位得加法ADC

ADC指令在形式上与功能上与ADD类似,只就是相加时还要包括进位标志CF得内容,例如:

ADCAL,68H;AL←(AL)+68H+(CF)

ADCAX,CX;AX←(AX)+(CX)+(CF)

(3)加1指令INC

功能:类似于C语言中得++操作:对指定得操作数加1

例:INCAL

例:执行如下程序:

MOVAX,0 MOVBX,1

MOV CX,100 A:ADD AX,BX INCBX LOOPA HLT

执行后(BX)=101

2、减法指令

(1)不考虑借位得减法指令SUB 格式:SUBdest,src

操作:dest←(dest)-(src) 指令例子:

SUBAL,60H

(2)考虑借位得减法指令SBB SBB指令主要用于多字节得减法。 格式:SBBdest,src

操作:dest←(dest)-(src)-(CF)