精华内容
下载资源
问答
  • 8086标志寄存器

    2019-10-27 21:06:11
    标志寄存器分为两大类:状态标志位和控制标志位。每一个标志位都用1个比特表示,也就是说,每个标志位只有0和1两个值。 1.状态标志位 CF CF在DEBUG中的表示 标志位 0 1 CF NC CY 表示 ...

    8086标志寄存器

    标志寄存器分为两大类:状态标志位和控制标志位。每一个标志位都用1个比特表示,也就是说,每个标志位只有0和1两个值。

    1.状态标志位

    CF

    CF在DEBUG中的表示

    标志位 0 1
    CF NC CY
    表示 Not Carry(无借/进位) CarrY(有借/进位)

    PF

    PF在DEBUG中的表示

    标志位 0 1
    PF PO PE
    表示 Parity Odd 奇数个1 Partiy Even 偶数个1

    AF

    AF在DEBUG中的表示

    标志位 0 1
    AF NA AC
    表示 Not Auxiliary carry(无辅助借/进位) Auxiliary Carry(有辅助借/进位)

    CF在DEBUG中的表示ZF

    标志位 0 1
    ZF NZ ZR
    表示 ZeRo 零 Not Zero 非零

    OF

    OF在DEBUG中的表示

    标志位 0 1
    OF NV OV
    表示 Not oVer 没有溢出 OVer 溢出

    SF

    SF在DEBUG中的表示

    标志位 0 1
    SF PL NG
    表示 PLus 正数,符号位为0 NeGative 负数,符号位为1

    2.控制标志位

    TF

    在DEBUG中没有TF标志位

    标志位 0 1
    TF -- --
    表示 非单步运行 单步运行

    IF

    IF在DEBUG中的表示

    标志位 0 1
    IF DI EI
    表示 Disable Interrupt 不可中断 Enable Interrupt 可中断

    DF

    DF在DEBUG中的表示

    标志位 0 1
    DF UP DOWN
    表示 UP 加地址 DowN 减地址
    展开全文
  • 寄存器可以分为两大类,一类为通用寄存器,一类为指针寄存器和变址寄存器。 通用寄存器 通用寄存器主要包括:EAX、EBX、ECX、EDX EAX Accumulator 累加器,其中EAX(32位)、AH(16位)、AX,AL(8位) 累加...

     

    寄存器可以分为两大类,一类为通用寄存器,一类为指针寄存器和变址寄存器。

     

    通用寄存器

    通用寄存器主要包括:EAX、EBX、ECX、EDX

    EAX

    Accumulator 累加器,其中EAX(32位)、AH(16位)、AX,AL(8位)

    累加器用作乘除法时由特殊用途,但通常情况下视为通用寄存器

    EBX

    Base 基址寄存器,其中EBX(32位)、BH(16位)、BX,BL(8位)

    基址寄存器用作存放访问存储单元的偏移地址

    ECX

    Count 计数器,其中ECX(32位)、CH(16位)、CX,CL(8位)

     

    CL用于移位和循环移位计数,CX用作重复的串操作指令计数,CX或ECX用作LOOP/LOOPD计数

    EDX

    Data 数据寄存器,其中EDX(32位)、DH(16位)、DX,DL(8位)

    数据寄存器是一个用用寄存器,在乘除法运算时也可用于记录部分积和部分被除数

     

    指针寄存器和变址寄存器

    指针寄存器和变址寄存器包括:ESP、EBP、ESI、EDI

    ESP

    Stack Pointer 堆栈指针寄存器,该指针用于存储堆栈存储器数据

    EBP

    Base Pointer 基址指针寄存器,该指针用于存放堆栈段的数据区的“基地址”

    ESI

    Source Index 源变址指针寄存器,用于寻址串操作指令的源数据串

    EDI

    Destination Index 目的变址指针寄存器,该指针用于寻址串操作指令的目的数据串

    EPI

    Instruction Pointer 指令指针寄存器,一种专用寄存器,用于寻址当前需要取出的指令字节

    Tip:需要注意的是,程序员不能对EIP/IP进行存取操作,程序中的转移指令、返回指令和中断处理能够对EIP/IP进行存取

     

    标志寄存器

    9个标志位中,6个状态标志位(CF、PF、AF、ZF、SF、OF),3个控制标志位(TF、IF、DF)

    状态标志位

    CF:进位标志(Carry flag)。执行算数运算时,结果的最高位有进位或者借位,则CF=1;否则CF=0。

    PF:奇偶标志(ParityFlag)。结果的低8位,有奇数个“1”,则PF=0;有偶数个“1”,则PF=1。

    AF:半进位标志(Auxiliary carry Flag,也称为半进位标志)。本次运算第四位有进位,则AF=1;否则AF=0。

    ZF:零标志位(Zero Flag)。结果为0,则ZF=1;否则ZF=0。

    SF:符号标志(Sign Flag)。结果为正,则SF=0;否则SF=1。

    OF:溢出标志(OverFlow Flag)。结果溢出,则OF=1;否则OF=0。

     

    溢出不一定有进位,有进位也不一定溢出。

    例如:

    CF=0  PF=0  AF=0  ZF=0  SF=1  OF=1

    溢出判断:两个有符号数,符号位相同,运算结果的符号位与他们不同,则溢出,OF=1

     

    方向标志位

    方向标志DF(Direction Flag)

    DF用于控制串操作指令的执行。

    DF=0,则串操作指令地址自动增量修改。传输的传送过程从低地址向高地址的方向进行;

    DF=0,则串操作指令地址自动减量修改,传数据的传送过程从高地址向低地址的方向进行。

     

     

     

    设置DF的方法:STD(DF置一),CLD(DF置零)

    中断标志IF(Interrupt Flag)

    IF用来控制对可屏蔽中断的响应。

    IF=1,则允许CPU响应可屏蔽中断请求;

    IF=0,则禁止CPU响应可屏蔽中断请求。

    STI(IF置一),CLI(IF置零)。

    IF只能控制CPU是否能够响应可屏蔽中断请求,而对不可屏蔽中断及内部中断无法控制.

    陷阱标志TF(Trap Flag)

    TF=1,微处理器单步工作;

    TF=0,微处理器正常工作。

     

     

     

     

    转载于:https://www.cnblogs.com/Rebel3/p/11508867.html

    展开全文
  • 说起寄存器可能你暂时没有印象,但是提到CPU,即使是没有计算机基础的人也知道一些,而寄存器(Cache)是中央处理器(CPU)的重要...按照功能的不同,可将寄存器分为基本寄存器和移位寄存器两大类。基本寄存器只能并行送

    说起寄存器可能你暂时没有印象,但是提到CPU,即使是没有计算机基础的人也知道一些,而寄存器(Cache)是中央处理器(CPU)的重要组成部分,对数据的处理起到了至关重要的作用。那么寄存器到底起到了什么作用,寄存器的种类及其功能又是怎么样的,我们拭目以待。
    寄存器是由具有存储功能的触发器组合起来构成的,是CPU内部用来存放数据的一些小型存储区域,用来暂时存放参与运算的数据和运算结果。寄存器的功能也由于寄存器的种类不同而有所差异。
    按照功能的不同,可将寄存器分为基本寄存器和移位寄存器两大类。基本寄存器只能并行送入数据,也只能并行输出。移位寄存器中的数据可以在移位脉冲作用下依次逐位右移或左移,数据既可以并行输入、并行输出,也可以串行输入、串行输出,还可以并行输入、串行输出,或串行输入、并行输出,十分灵活,用途也很广。
    下面是寄存器的基本的四种功能。
    1.清除数据:将寄存器里的原有数据清除。
    2.接收数据:在接收脉冲作用下,将外输入数据存入寄存器中。
    3.存储数据:在没有新的写入脉冲来之前,寄存器能保存原有数据不变。
    4.输出数据:在输出脉冲作用下,才通过电路输出数据。
    仅具有以上功能的寄存器称为数码寄存器;除此之外,还有许多具有其他功能的寄存器。
    寄存器有串行和并行两种数码存取方式。将n位二进制数一次存入寄存器或从寄存器中读出的方式称为并行方式。将n位二进制数以每次1位,分成n次存入寄存器并从寄存器读出,这种方式称为串行方式。并行方式只需一个时钟脉冲就可以完成数据操作,工作速度快,但需要n根输入和输出数据线。串行方式要使用几个时钟脉冲完成输入或输出操作,工作速度慢,但只需要一根输入或输出数据线,传输线少,适用于远距离传输。
    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 段之目的变址指针。
    尽管上面介绍的许多寄存器已经逐渐淡出在我们的实际开发中,但多了解一下寄存器的种类和功能还是没有坏处的,对于我们对数据的处理有着很大的帮助。当然。欢迎大家观看本站的专业课程,了解更多计算机的专业知识,学习更多专业知识,助力你的求学求职之路。

    展开全文
  • 寄存器和ioremap的使用

    2020-12-21 17:14:33
    按照功能的不同,可将寄存器分为基本寄存器和移位寄存器两大类。基本寄存器只能并行送入数据,也只能并行输出。移位寄存器中的数据可以在移位脉冲作用下依次逐位右移或左移,数据既可以并行输入、并行输出,也可以...

    一、寄存器

    1.寄存器概述
    寄存器的功能是存储二进制代码,它是由具有存储功能的触发器组合起来构成的。一个触发器可以存储1位二进制代码,故存放n位二进制代码的寄存器,需用n个触发器来构成。

    按照功能的不同,可将寄存器分为基本寄存器和移位寄存器两大类。基本寄存器只能并行送入数据,也只能并行输出。移位寄存器中的数据可以在移位脉冲作用下依次逐位右移或左移,数据既可以并行输入、并行输出,也可以串行输入、串行输出,还可以并行输入、串行输出,或串行输入、并行输出,十分灵活,用途也很广。

    2.寄存器的大小:
    8位的单片机,一个寄存器占8bit,一个字节。16位的单片机,1个寄存器,占16bit,2个字节。高级一点的,arm的芯片,一个寄存器占32bit,即是4个字节。

    二、ioremap学习

    原型:

    void *ioremap(unsigned long phys_addr, unsigned long size)  
    void * __ioremap(unsigned long phys_addr, unsigned long size, unsigned long flags)  
    
     phys_addr:要映射的起始的IO地址;
    
     size: 要映射的空间的大小(多少个字节);
    
     ioremap 依靠 __ioremap实现,它只是在__ioremap中以第三个参数为0调用来实现.
    
     flags:要映射的IO空间的和权限有关的标志;
    
     phys_addr:是要映射的物理地址,
    
     size:是要映射的长度,
    

    功能:将一个IO地址空间映射到内核的虚拟地址空间上去,便于访问;函数专门用来为I/O内存区域分配虚拟地址。经过ioremap之后,设备驱动即可访问任意的I/O内存地址。有了ioremap (和iounmap),设备就可以访问任何I/O内存空间,不论它是否直接映射到虚拟地址空间。但是,这些地址永远不能直接使用(指物理地址),而要用readb这种函数。

    ioremap是内核提供的用来映射外设寄存器到主存的函数,我们要映射的地址来源于CPU的用户开发手册。硬件的跳线或者是物理连接方式决定了硬件上的内存映射到的cpu物理地址。映射完了有什么效果呢,举个例子,比如某个网卡有100个寄存器,他们都是连在一块的,位置是固定的,加入每个寄存器占4个字节,那么一共400个字节的空间被映射到内存成功后,ioaddr就是这段地址的开头(ioaddr = ioremap (mmio_start, mmio_len);注意ioaddr是虚拟地址,而mmio_start是物理地址,它是开发手册中提供的,肯定是物理地址,而保护模式下CPU不认物理地址,只认虚拟地址),ioaddr+0就是第一个寄存器的地址,ioaddr+4就是第二个寄存器地址(每个寄存器占4个字节),以此类推,我们就能够在内存中访问到所有的寄存器进而操控他们了。

    访问I/O内存的正确方式是通过一系列专用于此目的的函数(在<asm/io.h>中定义的):

    I/O内存读函数

    unsigned int ioread8(void*addr);     
    unsigned int ioread16(void*addr); 
    unsigned int ioread32(void*addr); 
    

    addr是从ioremap获得的地址(可能包含一个整型偏移量),返回值是从给定I/O内存读取的值

    对应的I/O内存写函数

    void iowrite8(u8value,void*addr); 
    void iowrite16(u16value,void*addr);
    void iowrite32(u32value,void*addr); 
    

    读和写一系列值到一个给定的I/O内存地址,从给定的buf读或写count个值到给定的addr

    void ioread8_rep(void *addr, void *buf, unsigned long count); 
    void ioread16_rep(void *addr, void *buf, unsigned long count); 
    void ioread32_rep(void *addr, void *buf, unsigned long count); 
    void iowrite8_rep(void *addr, const void *buf, unsigned long count); 
    void iowrite16_rep(void *addr, const void *buf, unsigned long count); 
    void iowrite32_rep(void *addr, const void *buf,unsigned long count); 
    

    需要操作一块I/O地址,使用一下函数

    void memset_io(void *addr, u8 value, unsigned int count); 
    void memcpy_fromio(void *dest,void *source, unsigned int count); 
    void memcpy_toio(void *dest, void *source, unsigned int count) 
    

    旧函数接口,仍可工作,但不推荐。

    unsigned readb(address); 
    unsigned readw(address); 
    unsigned readl(address); 
    void writeb(unsigned value,address); 
    void writew(unsigned value,address); 
    void writel(unsigned value,address); 
    
    展开全文
  • GPIO的寄存器分为两大类: 控制寄存器: 功能选择控制寄存器 GPxMUX 方向控制寄存器 GPxDIR 输入限定控制寄存器 GPxQUAL 数据寄存器: 数据寄存器 GPxDAT 置位寄存器 GPxSET 清除寄存器 GPxClear 取反寄存器 ...
  • 8086通用指令及寄存器

    千次阅读 2018-10-16 22:15:49
    8086 有14个16位寄存器,这14个寄存器按其用途可分为 (1)通用寄存器 (2)指令指针 (3)标志寄存器 (4)段寄存器等4。 有8个, 又可以分成2组,一组是数据寄存器(4个),另一组是指针寄存器及变址寄存器(4个)。 ...
  • 寄存器是用来暂时存放二进制数码的,是由触发器构成的。...根据移位 情况不同,移位寄存器分为单向移位寄存器(左移寄存器或右移寄存器)和双向移位寄存器两大类。寄存 器的种类繁多,下面介绍集成双向移位寄存
  • 寄存器可以分为程序可见的寄存器和程序不可见的寄存器两大类。 程序可见的寄存器可以分为以下三类: 通用寄存器 专用寄存器寄存器 数据寄存器 AX、BX、CX、DX可称为数据寄存器,用来暂时存放计算过程中所用到的...
  • 按照功能的不同,可将寄存器分为基本寄存器和移位寄存器两大类。基本寄存器只能并行送入数据,也只能并行输出。移位寄存器中的数据可以在移位脉冲作用下依次逐位右移或左移,数据既可以并行输入、并行输出,...
  • 寄存器可以分为程序可见寄存器和程序不可见寄存器两大类。所谓程序可见的寄存器是指在汇编语言程序设计中用到的寄存器,它们可以由指令来指定 1、通用寄存器 EAX:(16位,AX:(AH:(8位),AL:(8位))) EBX:...
  • 8086的寻址方式(两大类

    千次阅读 多人点赞 2019-05-13 15:29:10
    所谓寻址方式,通俗的讲就是指令中给出的操作数(包括数据操作数和地址操作数)的方法:8086指令系统的寻址方式根据操作数的种类分为两大类,即数据寻址方式和地址寻址方式。如下所示: 1、数据寻址方式: (1)...
  • 按其功能可以分为大类:通用寄存器(8个)、段寄存器(4个)、控制寄存器(2个) 通用寄存器 通用寄存器包括数据寄存器、地址指针寄存器和变址寄存器。 数据寄存器 AZ、BX、CX、DX 一般用于存放参与运算的数据...
  • 8086CPU内部有14个16位寄存器,按功能分可分为大类: 通用寄存器(8个),段寄存器(4个),和控制寄存器(2个) 1>数据寄存器AX,BX,CX,DX 每个数据寄存器都是十六位的,但又可将高,低8位分别作为个独立的8位寄存器来用...
  • Intel 8086/8088CPU设置了一个16位的标志寄存器,用来反映微处理器的当前状态和某些控制,标志寄存器中有9个标志位,分为两大类:状态标志(CF, PF, AF, ZF,SF, OF)和控制标志(TF, IF, DF),状态标志由CPU根据运算...
  • 我个人认为,在回答这个问题之前,你得先问清楚自己,我学习stm32、...这些所有的问题的答案都可以把学习单片机的人分为两大类:第一类:学习单片机是为了把这个技术当做一技之长安身立命;第二类:仅仅只是玩玩。那...
  • MIPS32中使用了大量的寄存器。因为寄存器的存取可以在一个时钟周期内完成,同时也简化了寻址方式。...MIPS32的寄存器分为两类: 1,、通用寄存器 寄存器名字 约定命名 用途 $0 zero 总是为0 $1 at ...
  • JZ2440的中断控制器

    2017-07-19 10:41:57
    [点此回顾上课学习内容] S3C2440的中断分为两大类: 外部中断 和 内部中断. 一 外部中断EXTINT[x]: 用来配置各个引脚的中断触发方式 (高电平触发、低电平触发、下降沿触发、上升沿触发), 注意该寄存器与中断源的对应...
  • 在前文介绍RISC的特点时提到一点:大量使用寄存器。这是因为寄存器的存取可以在一个时钟周期内完成,同时也简化了寻址方式。...MIPS32中的寄存器分为两类:通用寄存器(GPR:General Purpose Register)、特殊寄存器。
  • * 管道内主要分为两部分:1,定时循环发送指令。2,一次性发送指令。 * 定时循环发送指令:周期性间隔时间发送指令,一般针对“输入寄存器”或“输入线圈”等实时更新的变量。 * 这两部分的长度由用户所添加指令个数...
  • Linux内存管理

    2010-11-11 13:27:00
    寄存器大概分为两大类,一类是基本结构寄存器,有通用寄存器、段寄存器、指令寄存器和标志寄存器,另一类是系统级寄存器,有控制寄存器、系统地址寄存器、调试和测试寄存器。我们所能用到的基本上是第一类寄存器,这...
  • 计算机组成原理:中央处理器

    万次阅读 2019-04-29 19:01:55
    CPU中的主要寄存器:CPU中的寄存器用来暂时保存运算和控制过程中的中间结果,最终结果以及控制,状态信息的,它可以分为通用寄存器和专用寄存器两大类。 通用寄存器:通用寄存器可用来存放原始数据和运算结果,有...
  • PCI9052桥接芯片

    千次阅读 2011-07-22 17:15:39
    PCI9052的内部寄存器为总线接口的设计与实现提供了最大的灵活性,这些寄存器可以分为两类:PCI配置寄存器和局部配置寄存器。PCI配置寄存器有6个基地址寄存器,这些基地址是在系统中的物理地址。其中,基地址0和基...
  • 汇编初识

    2019-10-06 19:37:37
     32位x86架构下的寄存器可以被简单分为通用寄存器和特殊寄存器两类,通用寄存器部分汇编指令下是可以任意使用的(虽然有些指令规定了某些寄存器的特定用途),而特殊寄存器只能被特定的汇编指令使用,不能用来...
  • CPU中的主要寄存器:CPU中的寄存器用来暂时保存运算和控制过程中的中间结果,最终结果以及控制,状态信息的,它可以分为通用寄存器和专用寄存器两大类。 通用寄存器:通用寄存器可用来存放原始数据和运算结果,有...
  • 中对象的内存图 之前在[ 图形化理解Java中的形参和实参]一文中我们知道了如下个知识点: JVM的内存空间主要划分为栈...Java中的参数传递根据形参是八基本数据类型还是引用类型可以分为值传递和引用传递,...
  •  LED驱动芯片可分为通用芯片和专用芯片种。所谓的通用芯片,其芯片本身并非专门为LED而设计,而是一些具有LED显示屏部分逻辑功能的逻辑芯片(如串-并移位寄存器)。而专用芯片是指按照LED发光特性而设计专
  • 在静态和动态两大类存储类型中,c语言将变量的存储类型分为四种, auto 自动变量 static 静态局部变量 extern 外部变量 register 寄存器变量 书写形式 存储类型符 数据类型符 变量名表 局部变量的存储定义 若存储...
  • RTL8019AS

    千次阅读 2017-02-19 10:22:05
    RTL8091AS内部的寄存器根据其功能和地址可以大概分为两大类,一类是NE2000适配器兼容的寄存器,一类是ono功能实现密切相关的寄存器。对于数据的收发主要涉及的是NE2000适配器兼容的寄存器。 RTL809AS与主控制器间...

空空如也

空空如也

1 2 3 4 5 ... 9
收藏数 180
精华内容 72
关键字:

寄存器分为两大类