精华内容
下载资源
问答
  • 下列指令用于控制(即修改)标志寄存器EFLAGS中的标志位。 指令 描述 STC 设置CF标志为1 CLC 清除CF标志为0 CMC 求补CF标志位(若...

    Flag Control (EFLAGS) Instructions

    下列指令用于控制(即修改)标志寄存器EFLAGS中的标志位。

    指令

    描述

    STC

    设置CF标志为1

    CLC

    清除CF标志为0

    CMC

    求补CF标志位(若原先为1,则修改为0;若为0,则修改为1)

    STD

    设置DF标志为1

    CLD

    清除CF标志为0

    STI

    设置IF标志为1

    CLI

    清除IF标志为0

    LAHF

    将标志寄存器的低8位加载到AH

    SAHF

    将AH中的值存储到标志寄存器的低8位

    PUSHF/PUSHFD

    将标志寄存器压入栈中

    POPF/POPFD

    将标志寄存器从栈中弹出

     

    Segment Register Instructions

    段寄存器指令将远指针(即段地址)加载到段寄存器中。注意,并不存在LCS指令(应用程序不允许也没有必要直接修改CS寄存器,可以使用控制转移指令间接修噶)。

    指令

    描述

    LDS

    将远指针加载到DS

    LES

    将远指针加载到ES

    LFS

    将远指针加载到FS

    LGS

    将远指针加载到GS

    LSS

    将远指针加载到SS

    展开全文
  • sub al,al mov al,1 sub al,al 这条汇编指令会将ZF和PF置1 而mov指令不改变标识寄存器,那标识寄存器是保留第一条汇编指令执行时的值呢还是会自动清0
  • 标识寄存器

    2016-12-29 23:09:53
    如果运算结果超过当前运算位数所能表示的范围,则称为溢出,OF的值被置为1,否则,OF的值被0. DF: 方向标志DF位用来决定在串操作指令执行时有关指针寄存器发生调整的方向。 IF: 中断允许标志IF位用来决定CPU...
    比如: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。)
    展开全文
  • 代码优化-寄存器.pdf

    2009-05-31 21:03:11
    1.寄存器清0 我绝对不想再看到下面的写法: 1) mov eax, 00000000h ;5 bytes 看起来上面的写法很符合逻辑,但你应当意识到还有更加优化的写法: 2) sub eax, eax ;2 bytes 3) xor eax, eax ;2 bytes 从...
  • 80386标志寄存器

    2008-12-08 22:46:00
    如果运算结果的最高位(字操作时的第15位或字节操作时的第7位)产生一个进位或借位,则CF被置1,否则CF被清0。在进行多字节数的加减运算时,要使用到该标志;在比较无符号数的大小时,要使用到该标志。移位指令也把...

    80386标志寄存器
     
    1.运算结果标志
    (1) 进位标志CF(Carry Flag)
    进位标志主要用于反映运算是否产生进位或错位。如果运算结果的最高位(字操作时的第15位或字节操作时的第7位)产生一个进位或借位,则CF被置1,否则CF被清0。在进行多字节数的加减运算时,要使用到该标志;在比较无符号数的大小时,要使用到该标志。
    移位指令也把操作数的最高位或最低位移入CF。移位指令和CF的配合,可实现操作数之间的位传送。
    (2)零标志ZF(Zero Flag)
            零标志ZF用于反映运算结果是否为0。如果运算结果为0,则ZF被置1,否则ZF被清0。
        在判断运算结果是否为0时,要使用到该标志。
    (3)符号标志SF(Sign Flag)
           符号标志SF用于反映运算结果的符号位。SF与运算结果的最高位相同,如果运算的最
       为1,则SF被置1,否则SF被清0。由于在8086/8088系统中,有符号数采用补码的形式表示,所以SF反映了运算结果的符号。如果运算结果为正,则SF被清0,否则SF被置1。
    (4)溢出标志OF(Overflow Flag)
           溢出标志OF用于反映有符号加减运算是否引起溢出。如运算结果超出了8位或16位有符号数的表示范围,即在字节运算时大于127或小于-128,在字运算时大于32767或小于-32768,称为溢出。如果溢出,则OF被置1,否则OF被清0。
       要特别注意,溢出标志与进位标志是两个不同性质的标志,不能混淆。
    (5)奇偶标志PF(Parity Flag)
           奇偶标志用于反映运算结果中1的个数。如果1的个数为偶数,则OF被置1,否则OF被清0。利用PF可进行奇偶校验检查,可产生奇偶效验位。在串行通信中,为了提高传送的可靠性,常采用奇偶校验。
    (6)辅助进位标志位AF(Auxiliary Carry Flag)
           在字节操作时,如发生低半字节向高半字节进位或借位;在字操作时,如发生低字节向高字节进位或借位,则辅助进位标志AF被置1,否则AF被清0.十进制算术运算调整指令自动根据该标志产生相应的调整动作。
    2.状态控制标志
      状态控制标志控制处理器的操作,要通过专门的指令才能使状态控制标志发生变化。
    (1)方向标志DF(Direction Flag)
    方向标志决定着串操作指令执行时有关指针寄存器调整方向。当DF为1时,串操作指令按减方式改变有关的存储器指针值;当DF为0时,串操作指令按加方式改变有关的存储器指针值。8086/8088提供的专门用于设置方向标志DF的指令是STD,专门用于清DF的指令是CLD。
    (2)中断允许标志IF(Interrupt-enable Flag)
    中断允许标志决定着CPU是否响应外部可屏蔽中断请求。当IF为1时,CPU能够响应外部的可屏蔽中断请求;当IF为0时,则不响应外部的可屏蔽中断请求。但此标志的状态对于外部的非屏蔽中断请求,或内部产生的中断不起作用。8086/8088提供的专门用于设置中断允许IF的指令为STI,专门用于清IF的指令是CLI。
    (3)追踪标志TF(Trap Flag)
    当追踪标志TF被置1后,CPU进入单步方式。所谓单步方式是指在一条指令执行后产生一个单步中断。这主要用于程序的调试。8086/8088没有专门设置和清除TF标志的指令,要通过其他方法设置或清除TF。


    EFLAGS,和8086的16位标志寄存器相比,增加了4个控制位,不过这4个控制位它们在实模下不起作,这四个控制位分别是:
        a.IOPL(I/O Privilege Level),I/O特权级字段,它的宽度为2bit,它指定了I/O指令的特权级。如果当前的特权级别在数值上小于或等于IOPL,那么I/O指令可执行。否则,将发生一个保护性异常。
        b.NT(Nested Task):控制中断返回指令IRET,它宽度为1位。NT=0,用堆栈中保存的值恢复EFLAGS,CS和EIP从而实现中断返回;NT=1,则通过任务切换实现中断返回。
        c.RF(Restart Flag):重启标志,它的宽度是1位。它主要控制是否接受调试故障。RF=0接受,RF=1忽略。如果你的程序每一条指令都被成功执行,那么RF会被清0。而当接受到一个非调试故障时,处理器置RF=1。
        d.VM(Virtual Machine):虚拟8086模式(用软件来模拟8086的模式,所以也称虚拟机)。VM=0,处理器工作在一般的保护模式下;VM=1,工作在V8086模式下。

     

    展开全文
  • bic指令将Rn 的值与操作数operand2 的反码按位逻辑”与”,结果存放到目的寄存器Rd 中。 指令示例: bic R0,R0,#0x1F ; //将R0最低5位清零,其余位不变。   2.orr 位或指令 orr指令的格式为:orr{条件....

    1. bic  (Bit Clear)位清除指令
    bic指令的格式为:
    bic{条件}{S}  Rd,Rn,operand 

    bic指令将Rn 的值与操作数operand2 的反码按位逻辑”与”,结果存放到目的寄存器Rd 中。

    指令示例:

    bic R0,R0,#0x1F ;    //将R0最低5位清零,其余位不变。
    

      

    2.orr 位或指令

    orr指令的格式为:
    orr{条件}{S}  Rd,Rn,operand 

    orr指令将Rn 的值与操作数operand2按位逻辑”或”,结果存放到目的寄存器Rd 中。

    指令示例:

    orr R0,R0,#0xd3 ;将R0的第[7:0]位与b'1101 0011按位或,并保存在R0中
    

     

    3.eor异或指令(exclusive or)

    eor指令的格式为:
    eor{条件}{S}  Rd,Rn,operand 

    eor指令将Rn 的值与操作数operand2按位逻辑”异或”,相同为0,不同为1,结果存放到目的寄存器Rd 中。

     

    4.设置2440位管理模式,实例:

    mrs    r0,cpsr                         // 读状态寄存器cpsr的数据到r0中
    bic    r0,r0,#0x1f                     // 对r0低5位进行清0,清除模式位
    orr	r0,r0,#0xd3                    // 低8位或(110 10011), 设为管理(svc32)模式,禁止IRQ和FIQ中断
    msr	cpsr,r0                        // 写入状态寄存器cpsr,更新。
    

      

    转载于:https://www.cnblogs.com/lifexy/p/7168701.html

    展开全文
  • PRIMASK 和FAULTMASK寄存器 在很多应用中需要暂时屏蔽所有的中断进行一些对时序要求较高的任务,不然容易发生bug,例如I2C通讯。此时可以使用PRIMASK寄存器。PRIMASK可以屏蔽除NMI和HardFalut外的所有异常和...MOVS R0.
  • MMX指令

    2013-04-26 15:30:04
    将FP特征字置空(全1),使后续浮点指令可以使用浮点寄存器,其他MMX指令自动置FP为全0.本指令应在所有MMX例程结束和调用可含有FP指令的例程时使用,以清除MMX状态. MOVD mm,r/m32 MOVD r/m32,mm 转移32位数据: ...
  • 1、使用C函数实现拷贝和bss段清除——汇编寄存器传入参数 打开start.S把原来的汇编代码删除改为调用C函数 /* 重定位text, rodata, data段整个程序 */ mov r1, #0 ldr r2, =_start /* 第1条指令运行...
  • ARM 汇编指令

    2020-03-31 12:08:29
    逻辑处理指令,用于把一个寄存器的内容和另一个寄存器的内容或立即数进行按位的与运算,并根据运算结果更新CPSR中条件标志位的值。当前运算结果为1,则Z=0;当前运算结果为0,则Z=1。 TST R0 , #0...
  • 关于“为何AVR使用写1作为清0中断标志位的手段”这个问题我看过很多的相关资料。在AVR的手册中并没有给出为什么的解释,只是强调了“写1清0中断标志位”。同时我也看到很多新的芯片,如DSP等,也是采用写1清零标志位...
  • MRS,状态寄存器传送至通用寄存器指令功能:将状态寄存器的内容传送至通用寄存器。格式:MRS{}Rd,CPSR}SPSR其中:Rd 目标寄存器,Rd不允许R15。R=0 将CPSR中的内容传送目的寄存器。R=1 将SPSR中的内容传送至目的...
  • MRS,状态寄存器传送至通用寄存器指令功能:将状态寄存器的内容传送至通用寄存器。格式:MRS{}Rd,CPSR}SPSR其中:Rd 目标寄存器,Rd不允许R15。R=0 将CPSR中的内容传送目的寄存器。R=1 将SPSR中的内容传送至目的...
  • Intel体系MMX指令&指令说明

    千次阅读 2009-02-16 13:51:00
    EMMSMMX状态置空:将FP特征字置空(全1),使后续浮点指令可以使用浮点寄存器,其他MMX指令自动置FP为全0.本指令应在所有MMX例程结束和调用可含有FP指令的例程时使用,以清除MMX状态.MOVD mm,r/m32MOVD r/m32,mm转移32位...
  • 逻辑指令BIC的用法

    千次阅读 2018-03-16 15:16:44
    BIC―――――位清除指令 指令格式: BIC{cond}{S} Rd,Rn,...BIC指令将Rn 的值与操作数operand2 的反码按位逻辑”与”,结果存放到目的寄存器Rd 中。指令示例:BIC R0,R0,#0x0F ;将R0最低4位清零,其余位不变。...
  • 汇编指令BIC、OOR

    千次阅读 2017-04-02 15:56:46
    1、BIC BIC―――――位清除指令 指令格式: ...BIC指令将Rn 的值与操作数operand2 的反码按位逻辑”与”,结果存放到目的寄存器Rd 中。指令示例:BIC R0,R0,#0x0F ;将R0最低4位清零,其余位不变。
  • arm v8汇编指令

    千次阅读 2016-07-20 09:34:56
    A64指令 提供同A32和T32指令类似的功能, 也提供如下新功能 ...2) 更多通用寄存器(r0-r30), 每个寄存器长度扩展为64位。 通用寄存器 编码在 5个位域 寄存器r31是一个特殊的寄存器: Zero Register:
  • 3.Loop指令

    2019-05-22 18:43:38
    assume cs:code code segment mov ax,0ffffh(0是区分作用,不为值) mov ds,ax mov bx,6 ;以上,设置ds:bx指向ffff:6 mov al,[bx] mov ah,0 ;...累加寄存器清0 mov cx,3 ;循环3次 s:add dx...
  • MSR和MRS指令

    2014-04-14 15:55:13
    1 状态寄存器传送至通用寄存器指令 功能:将状态寄存器的内容传送至通用寄存器。 格式: MRS{}Rd,CPSR}SPSR 其中: Rd 目标寄存器,Rd不允许R15。 R=0 将CPSR中的内容传送目的寄存器。 R=1 将SPSR中的内容...
  • 汇编指令

    2011-09-14 22:09:02
    1. BIC:位清除指令  指令格式:BIC {cond} {S} Rd,Rn,operand2  ... BIC指令将Rn 的值与操作数operand2 的反码按位逻辑”与”,结果存放到目的寄存器Rd 中。指令示例:BIC R0,R0,#0x0F ;将R0最低4位清零
  • ____x86 xor 指令

    千次阅读 2013-03-16 22:37:09
    xor 指令: 1>语法: XOR DST, SRC 0 ⊕0 = 0 0 ⊕1 = 1 1 ⊕0 = 1 1 ⊕1 = 0 3>说明: 1.  xor 用于DST特定位取反 ...3. xor 指令用于将通用寄存器清0 4. 对psw有影响, CF, PF, SF, ZF,
  • 一、常用ARM指令1:数据处理指令 (1)数据传输指令 mov mvn(源目标按位取反后赋给...bic(位清除指令)bic r0,r1,#0x1f @将r1中的数的bit0~bit4清零后,赋给r0。 (4)比较指令(用来比较两个寄存器中的数,不加S后
  • Intel体系MMX指令

    2009-10-23 14:26:00
    <br />Intel体系MMX指令&指令说明EMMSMMX状态置空: 将FP特征字置空(全1),使后续浮点指令可以使用浮点寄存器,其他MMX指令自动置FP为全0.本指令应在所有MMX例程结束和调用可含有FP指令的例程时使用,以清除...
  • 位操作指令详述 BCF 数据寄存器指定位清0 语法形式:BCF f,b 操作数:f为数据寄存器的低7位地址(0x00~0x7F) B为数据位编号(0~7) 执行时间:一个指令周期 执行过程:使数据寄存器f的的b位清0 状态标志影响:无 ...
  • 常用ARM汇编指令积累

    2012-03-29 00:03:00
    MOV,LDR: ldr r0, 0x12345678 就是把0x12345678这个地址中的值存放到r0中。...x86中没有ldr这种指令,因为x86的mov指令可以将数据从内存中移动到寄存器中。 BIC―――――位清除指令 指令格式: BIC{con
  • MMX指令

    千次阅读 2007-10-23 14:16:00
    EMMS MMX状态置空:将FP特征字置空(全1),使后续浮点指令可以使用浮点寄存器,其他MMX指令自动置FP为全0.本指令应在所有MMX例程结束和调用可含有FP指令的例程时使用,以清除MMX状态. MOVD mm,r/m32MOVD r/m3

空空如也

空空如也

1 2 3 4 5 ... 8
收藏数 155
精华内容 62
关键字:

寄存器清0指令