精华内容
下载资源
问答
  • 不同寄存器的作用

    2020-09-08 21:26:09
    指向DS段中数据指针,是用于存储基地址的的程序。 ECX-计数寄存器通常用于保存代表进程次数值。用于循环和字符串操作。 EDX-通用寄存器。也用于I/O操作。帮助将EAX扩展到64位 ESI-源索引寄存器,指向IDS...

    EAX-用于算术计算的主寄存器,也称为累加器,因为它报春结果算术运算和函数返回值。

    EBX-基址寄存器。指向DS段中数据的指针,是用于存储基地址的的程序。

    ECX-计数寄存器通常用于保存代表进程次数的值。用于循环和字符串操作。

    EDX-通用寄存器。也用于I/O操作。帮助将EAX扩展到64位

    ESI-源索引寄存器,指向IDS寄存器指向的段中数据的指针。用作字符串和数组操作中的偏移地址。他保存从中读取数据的地址。

    EDI-目标索引器。指向数据段指向的数据(或目标)的指针ES注册。在字符串和数组操作中用作偏移地址。它隐含着所有字符串操作的写地址。

    KBP-基本指针。指向堆栈上的数据的指针(在SS段中)。它指向底部当前堆栈帧。它用于引用局部变量。

    ESP-堆栈指针(在SS段中),它指向当前堆栈的顶部。用来引用局部变量

    EIP-指令指针(保存下一条要执行的指令的地址)

    展开全文
  • 寄存器的作用

    2013-08-30 11:14:24
    寄存器的用途:1.可将寄存器内的数据执行算术及逻辑运算。2.存于寄存器内的地址可用来指向内存的某个位置,即寻址。3.可以用来读写数据到电脑的周边设备。8086 有8个8位数据寄存器,这些8位寄存器可分别组成16位...

    寄存器是CPU内部的元件,寄存器拥有非常高的读写速度,所以在寄存器之间的数据传送非常快。

    寄存器的用途:

    1.可将寄存器内的数据执行算术及逻辑运算。

    2.存于寄存器内的地址可用来指向内存的某个位置,即寻址。

    3.可以用来读写数据到电脑的周边设备。

    8086 有8个8位数据寄存器,

    这些8位寄存器可分别组成16位寄存器:

    AH&AL=AX:累加寄存器,常用于运算;

    BH&BL=BX:基址寄存器,常用于地址索引;

    CH&CL=CX:计数寄存器,常用于计数;

    DH&DL=DX:数据寄存器,常用于数据传递。

    为了运用所有的内存空间,8086设定了四个段寄存器,专门用来保存段地址:

    CS(Code Segment):代码段寄存器;

    DS(Data Segment):数据段寄存器;

    SS(Stack Segment):堆栈段寄存器;

    ES(Extra Segment):附加段寄存器。

    当一个程序要执行时,就要决定程序代码、数据和堆栈各要用到内存的哪些位置,通过设定段寄存器 CS,DS,SS 来指向这些起始位置。通常是将DS固定,而根据需要修改CS。所以,程序可以在可寻址空间小于64K的情况下被写成任意大小。所以,程序和其数据组合起来的大小,限制在DS 所指的64K内,这就是COM文件不得大于64K的原因。8086以内存做为战场,用寄存器做为军事基地,以加速工作。

    除了前面所提的寄存器外,还有一些特殊功能的寄存器:

    IP(Intruction Pointer):指令指针寄存器,与CS配合使用,可跟踪程序的执行过程;

    SP(Stack Pointer):堆栈指针,与SS配合使用,可指向目前的堆栈位置。

    BP(Base Pointer):基址指针寄存器,可用作SS的一个相对基址位置;

    SI(Source Index):源变址寄存器可用来存放相对于DS段之源变址指针;

    DI(Destination Index):目的变址寄存器,可用来存放相对于 ES 段之目的变址指针。

    还有一个标志寄存器FR(Flag Register),有九个有意义的标志(

    OF: 溢出标志位OF用于反映有符号数加减运算所得结果是否溢出。如果运算结果超过当前运算位数所能表示的范围,则称为溢出,OF的值被置为1,否则,OF的值被清为0.

    DF: 方向标志DF位用来决定在串操作指令执行时有关指针寄存器发生调整的方向。

    IF: 中断允许标志IF位用来决定CPU是否响应CPU外部的可屏蔽中断发出的中断请求。但不管该标志为何值,CPU都必须响应CPU外部的不可屏蔽中断所发出的中断请求,以及CPU内部产生的中断请求。具体规定如下:

    (1)、当IF=1时,CPU可以响应CPU外部的可屏蔽中断发出的中断请求;

    (2)、当IF=0时,CPU不响应CPU外部的可屏蔽中断发出的中断请求。

    TF: 状态控制标志位是用来控制CPU操作的,它们要通过专门的指令才能使之发生改变

    SF: 符号标志SF用来反映运算结果的符号位,它与运算结果的最高位相同。在微机系统中,有符号数采用补码表示法,所以,SF也就反映运算结果的正负号。运算结果为正数时,SF的值为0,否则其值为1。

    ZF: 零标志ZF用来反映运算结果是否为0。如果运算结果为0,则其值为1,否则其值为0。在判断运算结果是否为0时,可使用此标志位。

    AF: 下列情况下,辅助进位标志AF的值被置为1,否则其值为0:

    (1)、在字操作时,发生低字节向高字节进位或借位时;

    (2)、在字节操作时,发生低4位向高4位进位或借位时。

    PF: 奇偶标志PF用于反映运算结果中“1”的个数的奇偶性。如果“1”的个数为偶数,则PF的值为1,否则其值为0。

    CF: 进位标志CF主要用来反映运算是否产生进位或借位。如果运算结果的最高位产生了一个进位或借位,那么,其值为1,否则其值为0。)

    以上是8086寄存器的整体概况, 自80386开始,PC进入

    32bit时代,其寻址方式,寄存器大小, 功能等都发生了变化, 要想学习这方面知识请参考相应资料

    展开全文
  • 汇编语言主要操作的是寄存器 通用寄存器 在CPU中,有八个通用寄存器 AX--(add,代表相加,累加意思)累加器,使用频度最高,用于算术、逻辑运算以及与外设传送信息等; BX--(base,代表基地址,存放地址的寄存器...

    汇编语言主要操作的是寄存器

    通用寄存器

    在CPU中,有八个通用寄存器

    AX--(add,代表相加,累加的意思)累加器,使用频度最高,用于算术、逻辑运算以及与外设传送信息等;

    BX--(base,代表基地址,存放地址的寄存器)基址寄存器,常用做存放存储器地址;

    CX-- (base,代表基地址,存放地址的寄存器) 计数器,作为循环和串操作等指令中的隐含计数器;

    DX--(data,数据) 数据寄存器,常用来存放双字长数据的高16位,或存放外设端口地址。

    8086有4个可以分为8个8位的寄存器也可以作为4个16位数据寄存器:AX:AH,AL     BX:BH,BL     CX:CH,CL         DX:DH,DL 

    变址寄存器

    SI--是源变址寄存器(Source)

    DI--是目的变址寄存器(Destination)

    主要用途:串操作类指令中,SI和DI具有特别的功能

    指针寄存器

    BP (base Point) 基址指针寄存器,表示数据在堆栈段中的基地址

    SP (stack Point)-- 堆栈指针寄存器,指示栈顶的偏移地址,SP不能再用于其他目的,具有专用目的

    主要用途:SP和BP寄存器与SS段寄存器联合使用以确定堆栈段中的存储单元地址

     

    指令指针寄存器

    IP--指令指针寄存器

     主要用途:IP 和段寄存器CS一起使用,用来确定一条指令的物理地址,也就是cs段基址偏移 指明了CPU要执行的那条指令

    计算机通过CS : IP寄存器来控制指令序列的执行流程

     

    4个段寄存器

    百度百科:086CPU有20根地址线,最大可寻址内存空间为1MB。而8086的寄存器只有16位,指令指针(IP)和变址寄存器(SI、DI)也是16位的。用16位的地址寻址1MB空间是不可能的。所以就要把内存分段,也就是把1MB空间分为2^4,即16个段,每段不超过64KB(2^16,16位数据线就可以寻址)。在8086中设置4个16位的段寄存器,用于管理4种段:CS是代码段,DS是数据段,SS是堆栈段,ES是附加段。把内存分段后,每一个段就有一个段基址,段寄存器保存的就是这个段基址的高16位,这个16位的地址左移四位(后面加上4个0)就可构成20位的段基址

    物理地址:存存储器的实际地址,cpu读取存储器是所使用的地址

    逻辑地址:是在程序中使用的地址,由段地址和偏移地址组成,表示形式“段地址:偏移地址”

    段地址:是指在逻辑段在主存中的起始位置

    段内偏移地址:是指在主存单元距离段首地址的偏移量,由于8086cpu是16位寄存器,一段空间地址最大不超过64KB=2^16B,段空间是以16字节对齐的,所以段的空间是16的倍数开辟内存的

    段的概念:内存没有分段,段划分是由于8086cpu用"物理地址=段地址+偏移地址"的方式给出内存单元的物理地址,使我们可以用分段的方式管理内存,所以不同的段是可以重叠的也就是不同的段对应相同的物理地址

           例如:1001:2 地址是10012  1000:12 地址也是10012 不同的段对应的地址是一样的     

           段地址放在段寄存器中,偏移地址放在(IP)指令寄存器中,通过段寄存器和偏移寄存器确定物理地址,访问内存

    注意:任何时刻,cs:IP存放的都是指令也就是说cpu读取cs:ip中的内容都当作指令执行,也就是规定了4个段寄存器有自己的属性

     

    Flag 标志寄存器

    Flag 标志寄存器, 存放各种标志的,标志寄存器都是16位寄存器。

    标志寄存器中的有效位都是以F结尾的,它们是如下几个:

    ①OF(Overflow Flag)溢出标志,溢出时为1,否则置0.标明一个溢出了的计算

    什么是溢出

    • 处理器内部以补码表示有符号数
    • 8位表达的整数范围是:+127~-128
    • 16位表达的范围是:+32767~-32768
    • 如果运算结果超出这个范围,就产生了溢出
    • 有溢出,说明有符号数的运算结果不正确 

    溢出和进位

    • 溢出标志OF和进位标志CF是两个意义不同的标志
    • 进位标志表示无符号数运算结果是否超出范围,运算结果仍然正确;
    • 溢出标志表示有符号数运算结果是否超出范围,运算结果已经不正确。 

    溢出和进位的对比

    例1:3AH + 7CH=B6H

    无符号数运算: 58+124=182

    范围内,无进位

    有符号数运算: 58+124=182

    范围外,有溢出 

    例2:AAH + 7CH=(1)26H

    无符号数运算: 170+124=294

    范围外,有进位

    有符号数运算: -86+124=28

    范围内,无溢出 

    如何运用溢出和进位

    • 处理器对两个操作数进行运算时,按照无符号数求得结果,并相应设置进位标志CF;同时,根据是否超出有符号数的范围设置溢出标志OF。
    • 应该利用哪个标志,则由程序员来决定。也就是说,如果将参加运算的操作数认为是无符号数,就应该关心进位;认为是有符号数,则要注意是否溢出。

    溢出的判断

    • 判断运算结果是否溢出有一个简单的规则:
    • 只有当两个相同符号数相加(包括不同符号数相减),而运算结果的符号与原数据符号相反时,产生溢出;因为,此时的运算结果显然不正确
    • 其他情况下,则不会产生溢出 

    ②SF(Sign Flag)符号标志,结果为负时置1,否则置0.
    ③ZF(Zero Flag)零标志,运算结果为0时置1,否则置0.
    ④CF(Carry Flag)进位标志,进位时置1,否则置0.注意:Carry标志中存放计算后最右的位.
    ⑤AF(Auxiliary carry Flag)辅助进位标志,记录运算时第3位(半个字节)产生的进位置。
        有进位时1,否则置0.
    ⑥PF(Parity Flag)奇偶标志.结果操作数中1的个数为偶数时置1,否则置0.

    控制标志位:
    ⑦DF(Direction Flag)方向标志,在串处理指令中控制信息的方向。
    ⑧IF(Interrupt Flag)中断标志。
    ⑨TF(Trap Flag)陷井标志

    它们在标志寄存器中的分布情况如下所示:

    标志寄存器通常用来存储PSW,即程序状态字,Program Status Word

    标志寄存器中只有0、2、4、6、7、8、9、10、11有特殊意义,其他无用

     

    debug中常见的指令

     a +地址 汇编,代表我们可以从这个地址开始写汇编代码

     u +地址 从这个地址开始查看反汇编

    U+机器码文件

    如果你有一个写到文件的机器码文件,可以当做debug的参数传入,然后u,就可以显示文件中汇编代码了,把机器代码反汇编成了汇编代码了

    T=地址 单步步入(在vs中,相当于F11键)

    P=地址 从哪个地址开始执行代码,(在vs中,相当于F10键)

    r 查看寄存器

    R+寄存器名称 可以修改寄存器的内容,比如 r cx 然后回车,输入值

    G从CS:IP指向的指令开始执行程序,直到程序结束或遇到INT 3。

    G=地址;从指定地址开始执行程序,直到程序结束或遇到INT 3。

    G 断点1[,断点2,…断点10];从CS:IP指向的指令开始执行程序,直到遇到断点。

    G=地址  断点1[,断点2,…断点10]从指定地址开始执行程序,直到遇到断点

    D +地址 从哪个地址开始部分数据显示 (可以显示一段内存中的数据)

    n 文件名 (本地创建一个文件, 例如n hello ,不用加双引号包裹)

    e 指定地址写入,可以指定地址写入一段数据 如 e 100 “helloworld$” 字符串要用双引号用$做结尾 如果是字符就用单引号 而且要空格分隔单个字符 e 100  ‘h’ ‘e’ ‘l’ ‘l’ ‘$’

    w 把汇编代码写入到文件(文件是由n指令创建的),w是根据cx来决定写入的代码的字节数

    还有很多其他命令自己百度

    命令操作例子:

    A命令如下

     

     

    E命令

     

    U命令

     

    D命令

     

    R命令

    n命令

     

    生成文件在当前路径

     

    W命令

    展开全文
  • r0-r15寄存器的作用

    2020-03-26 21:07:06
    r0-r3 用作传入函数参数,传出函数返回值。在子程序调用之间,可以将 r0-r3 用于...如果被调用函数使用了这些寄存器,它在返回之前必须恢复这些寄存器的值。 r12 内部调用暂时寄存器 ip。它在过程链接胶合代码(...

    r0-r3 用作传入函数参数,传出函数返回值。在子程序调用之间,可以将 r0-r3 用于任何用途。

    被调用函数在返回之前不必恢复 r0-r3。如果调用函数需要再次使用 r0-r3 的内容,则它必须保留这些内容。

    r4-r11 被用来存放函数的局部变量。如果被调用函数使用了这些寄存器,它在返回之前必须恢复这些寄存器的值。

    r12 是内部调用暂时寄存器 ip。它在过程链接胶合代码(例如,交互操作胶合代码)中用于此角色。

    在过程调用之间,可以将它用于任何用途。被调用函数在返回之前不必恢复 r12。

    r13 是栈指针 sp。它不能用于任何其它用途。sp 中存放的值在退出被调用函数时必须与进入时的值相同。

    r14 是链接寄存器 lr。如果您保存了返回地址,则可以在调用之间将 r14 用于其它用途,程序返回时要恢复

    r15 是程序计数器 PC。它不能用于任何其它用途。(程序计数器是用于存放下一条指令所在单元的地址的地方

    注意:在中断程序中,所有的寄存器都必须保护,编译器会自动保护R4~R11

    展开全文
  • 根据“ARM-thumb 过程调用标准”: ...如果被调用函数使用了这些寄存器,它在返回之前必须恢复这些寄存器的值。 r12内部调用暂时寄存器 ip。它在过程链接胶合代码(例如,交互操作胶合代码)中用于此角色...
  • 寄存器的用途:1.可将寄存器内的数据执行算术及逻辑运算。2.存于寄存器内的地址可用来指向内存的某个位置,即寻址。3.可以用来读写数据到电脑的周边设备。8086 有8个8位数据寄存器,这些8位寄存器可分别组成16位...
  • 类加载器它是用于加载类文件JVM子系统。在运行Java程序时,它首先由类加载器加载。Java包括三个类加载器如下:a.Bootstrap ClassLoader:它是扩展类加载器超类。它有助于加载包含所有类文件rt.jar文件。b....
  • 8086一共9种标志寄存器 分别 CF进位标志,值为1进位,为0无进位 PF奇偶标志,代表数据奇偶,1为偶,0为奇 OF溢出标志,1代表溢出,0代表未溢出 AF辅助进位标志,1有进位,0无进位 ZF判0标志,1代表值为0,0代表...
  • 寄存器SS指向用于堆栈内存段,SP用来指向该堆栈栈顶,把它们合在一起可访问栈顶单元。另外,当偏移量用到了指针寄存器BP,则其缺省寄存器SS,并且用BP可访问整个堆栈,不仅仅只访问栈顶。 段...
  • 什么DPTR寄存器

    2021-04-26 18:16:30
    其设计初衷是用于跟外部ROM和外部RAM. 寻址方式是间接寻址,一般搭配MOVX使用。 DPTR作用作为数据指针来讲(正常一个经典8051只有一个DPTR) 作用可以跟通用寄存器类比一下, 一般都是用作间接寻址。(看下面例子)...
  • 寄存器的种类和作用:1、代码段寄存器CS,用于存放当前正在运行的程序代码所在段。2、数据段寄存器DS,用于存放数据段。3、堆栈段寄存器SS,存放堆栈段。4、附加段寄存器ES,存放当前程序使用附加数据段。本教程...
  • 状态寄存器

    2020-11-14 18:57:54
    下面我们说明这些引脚的作用。 图 M28010的状态寄存器  1. 位7:DP(Data Polling) 与闪速存储器相同,在完成内部写操作之前的这段时间内,将反相读出最后写入数据的位7。如果看到写人的数据与读取的数据...
  • 作用是用于暂时存放CPU中运算数据。 Register 寄存器是CPU内部组成单元,是CPU运算时取指令和数据地方,速度很快,寄存器可以用来暂存指令、数据和地址。在CPU中,通常有通用寄存器,如指令寄存器IR;特殊...
  • x86寄存器

    千次阅读 2010-11-14 11:01:00
    根据寄存器的性质,把编程可见的寄存器分成9组,并给每个编程可见的寄存器(以后简称寄存器)取一个名称 2.2.1 通用寄存器 <br /> 通用寄存器中,32位寄存器EAX,EBX,ECX,EDX,EB
  • cpu寄存器

    2013-11-01 18:49:20
    EAX 32-bit宽 通用...通常作为内存偏移指针使用(相对于EAX、ECX、EDX),DS默认寄存器或选择器。在保护模式中,同样可以起这个作用。 ECX 32-bit宽 通用寄存器。通常用于特定指令计数。在保护模式中,
  • X86寄存器详解

    千次阅读 2013-08-22 11:13:48
    位于CPU内部不同部件的寄存器有不同的作用,每个寄存器都有自己的功能。根据寄存器的性质,把编程可见的寄存器分成9组,并给每个编程可见的寄存器(以后简称寄存器)取一个名称 1 通用寄存器 通用寄存器中,32位寄
  • 在这些体系结构上,具有远见卓识的寄存器和存储器访问协同作用降低了指令的复杂性:加载或存储寄存器的开发人员只需知道要在存储器上进行操作的指令即可。 不幸的,设计8086的英特尔架构师没有欣赏这些架构的...
  • 内存:内存(Memory)也被称为内存储器,其作用是用于暂时存放CPU中运算数据,以及与硬盘等外部存储器交换数据。如RAM,SDRAM,Flash等。 物理地址:操作系统会给每一个内存单元编上一个绝对号,计算机系统就...
  • CPU寄存器详解 转载

    2020-02-12 14:14:55
    CPU寄存器作用于快速访问数据小型存储区。在x86(32位)架构中,有8个通用寄存器:EAX,EBX,ECX,EDX,EDI,ESI,EBP和ESP。尽管它们最初为执行特定任务而设计,但从技术上讲,它们可以用于存储任何数据,...
  • 它设计的宗旨使用户能快速测试寄存器的设置和模式选择。寄存器十六进制层面或者用户在 GUI 中可选择组合控制中大约有 60 种可编程的控制选择。这款软件也可以轮询 70,外加报警和操作指示符。 该评估套件包括: ISL...
  • PoEdu_反汇编002_寄存器

    2018-07-07 16:36:45
    寄存器: 上次,我们知道了eax、ebx、ecx、edx等,都是寄存器寄存器实际上就是CPU中具有存储作用,存储速度极高一个小内存(可以这么理解)。 硬盘,内存,高速缓存,寄存器,都是用于存储,是计算机中四大...
  • 标志寄存器 32位EFLAGS标志寄存器:标志寄存器又称程序状态字PSW(Program Status Word) ...实际用处,如在OD中的寄存器窗口,这样显示: EFL三个16进制数字换成二进制12个数字就是下图标号为1
  • x86中内存管理寄存器

    千次阅读 2016-03-25 09:47:23
    处理器为这些寄存器的加载和保存提供了特定的指令。有关系统表的作用请参见4.2节"保护模式内存管理"中的详细说明。   (点击查看大图)图4-2 内存管理寄存器 GDTR、LDTR、IDTR和TR都段基址...
  • 2.3.5 选择符与描述符表寄存器在实模式下,段寄存器存储的是真实的段地址,在保护模式下,16位的段寄存器无法放下32位的段地址,因此,它们被称为选择符,即段寄存器的作用是用来选择描述符。选择符的结构如图2.16...
  • STM32入门-区别ORD,BSRR,BRR寄存器

    千次阅读 2020-01-19 11:07:43
    ORD,BSRR,BRR寄存器的作用是对已经初始化后的 IO 口输出高、低电平。 ODR寄存器可读可写,32位,既能控制管脚为高电平,也能控制管脚为低电平。GPIO管脚对于位写1为高电平,写 0 为低电平。(低 16 位用于设置 GPIO ...
  • [Intel汇编-MASM]标志寄存器

    千次阅读 2014-12-19 21:29:39
    1. 标志寄存器的功能:  1) 即SF寄存器(16位),Sign Flag Register,用于存放程序运行时的一些状态信息以及一些运算的临时结果等,该寄存器中的信息称为程序状态字PSW(Program Status Word,因为16位字型的)...
  • MCS-51单片机 特殊功能寄存器(SFR)

    万次阅读 2016-11-06 20:26:57
    在80C51单片机中设置了与片内RAM统一编址21个特殊功能寄存器(SFR)。访问SFR只允许使用直接寻址...ACC80C51单片机中最频繁使用的寄存器用于向ALU供操作数,许多运算结果也存放在累加器(A)或寄存器(B)中。

空空如也

空空如也

1 2 3 4 5 ... 19
收藏数 367
精华内容 146
关键字:

寄存器的作用是用于