这些书上都没有现成的答案,需要自己总结,感谢BEYOND0769,做出这么出色的总结。以下是会改变标志位的指令。
(1)
加法指令:ADD、ADC、INC、XADD除了INC不影响CF标志位外,都影响条件标志位。
CF、ZF、SF、OF
CF最高位是否有进位
DF若两个操作数符号相同而结果符号与之相反OF=1,否则OF=0.
减法指令:SUB、SBB、DEC、NEG、CMP、CMPXCHG、CMPXCHG8B
前六种除了DEC不影响CF标志外都影响标志位。CMPXHG8B只影响ZF。
CF说明无符号数相减的溢出,同时又确实是被减数最高有效位向高位的借位。
OF位则说明带符号数的溢出
无符号运算时,若减数>被减数,有借位CF=1,否则CF=0.
OF若两个数符号相反,而结果的符号与减数相同则OF=1.否则OF=0.
乘法指令:MUL、IMUL
MUL:如果乘积高一半为0,则CF和OF位均为0,否则CF和OF均为1.
IMUL:如果高一半是低一半符号的扩展,则CF位和OF位均为0,否则就均为1.
除法指令:DIV、IDIV 对所有条件位均无定义。
逻辑指令:AND、OR、NOT、XOR、TEST
NOT不允许使用立即数,其它4条指令除非源操作数是立即数,至少要有一个操作数必须存放在寄存器中。另一个操作数则可以使用任意寻址方式。
NOT不影响标志位,其余4种CF、OF、置0,AF无定义,SF、ZF、PF位看情况而定。
定位扫描指令:BSF正向位扫描、BSR反向位扫描
源操作数可以是除立即数以外的任一种寻址方式,目的操作数必须是寄存器,影响ZF位。
以上转自:http://zhidao.baidu.com/question/130863024.html
(2)再附上个跳转条件的总结:
Topic: Jump Conditions
Opcode Mnemonic Flags Checked Description
----------------------------------------------------------------------------
size 0010 JB/JNAE CF=1 Jump if below/not above or
equal (unsigned comparisons)
size 0011 JAE/JNB CF=0 Jump if above or equal/not
below (unsigned comparisons)
size 0110 JBE/JNA CF=1 or ZF=1 Jump if below or equal/not
above (unsigned comparisons)
size 0111 JA/JNBE CF=0 and ZF=0 Jump if above/not below or
equal (unsigned comparisons)
size 0100 JE/JZ ZF=1 Jump if equal (zero)
size 0101 JNE/JNZ ZF=0 Jump if not equal (not zero)
size 1100 JL/JNGE SF <> OF Jump if less/not greater or
equal (signed comparisons)
size 1101 JGE/JNL SF=OF Jump if greater or equal/not
less (signed comparisons)
size 1110 JLE/JNG ZF=1 or SF <> OF Jump if less or equal/not
greater (signed comparisons)
size 1111 JG/JNLE ZF=0 and SF=OF Jump if greater/not less or
equal (signed comparisons)
size 1000 JS SF=1 Jump if sign
size 1001 JNS SF=0 Jump if not sign
size 0010 JC CF=1 Jump if carry
size 0011 JNC CF=0 Jump if not carry
size 0000 JO OF=1 Jump if overflow
size 0001 JNO OF=0 Jump if not overflow
size 1010 JP/JPE PF=1 Jump if parity/parity even
size 1011 JNP/JPO PF=0 Jump if no parity/parity odd
----------------------------------------------------------------------------
NOTE: The size bits are 0111 for short jumps or 1000 for 80386/486
near jumps.
分享到:
相关推荐
例如,JMP指令可使程序执行跳转到另一个地址,而JZ则会在特定条件满足(即零标志被设置)时执行跳转。 5. **输入输出指令**:如IN(输入)、OUT(输出)等,用于与外部设备交换数据。IN指令可以将数据从I/O端口读入...
在学习STM8S汇编指令时,可以参考"STM8 指令合集2_个人整理.pdf"和"STM8 指令合集.pdf"这两个文档,它们提供了详细的指令列表,包括指令的格式、操作数、影响的标志位以及执行时间。通过这些文档,开发者可以迅速...
通过结合使用标志位和条件跳转指令,程序员可以在汇编程序中实现复杂的控制流逻辑。 ### 结论 汇编语言虽然相对复杂,但它为程序员提供了对硬件的直接控制能力,使其成为系统级编程和性能优化不可或缺的工具。掌握...
《汇编指令大全+很全的汇编指令.pdf》是一份详尽的汇编语言学习资料,旨在帮助读者深入理解并快速掌握汇编语言的基本概念和指令系统。汇编语言,作为计算机科学的基础,是直接对应机器语言的一种编程语言,每一个...
**影响标志位:** `PUSH` 和 `POP` 指令不改变任何标志位。 **注意:** - `PUSH` 和 `POP` 指令只能操作寄存器或内存单元,不能直接作用于段寄存器。 - `PUSH` 指令会使得堆栈指针`SP`递减,而`POP` 指令则使得`SP`...
状态寄存器中的标志位可以记录指令执行后的结果,如零标志(Z)、负标志(N)、进位标志(C)和溢出标志(V)。这些状态可以被后续的条件分支指令所使用。 指令周期数(CPI)是指执行一条指令所需的时钟周期数。...
"assembly 汇编 王爽 jmp 转移指令总结 思维导图"这个主题,是关于王爽老师的经典教材《汇编语言》中的一个重要部分,主要聚焦于汇编中的转移指令——jmp。在这里,我们将深入探讨jmp指令及其在程序控制流中的作用。...
为了方便广大汇编爱好者学习与应用,本文档汇编指令大全,对汇编语言的核心内容进行分类总结,详尽阐述了各类指令的格式、功能和应用场景。 首先,数据传输指令作为基础中的基础,负责在存储器和寄存器、寄存器和...
注意:逻辑指令可以改变标志位。 例如:AND AX, BX将寄存器AX和寄存器BX的值进行逻辑AND运算。 汇编语言中的六类常见指令都有其特点和注意事项,需要根据实际情况选择合适的指令来实现程序的功能。
位运算指令AND、OR、XOR、NOT和TEST执行按位逻辑运算,其中NOT指令不改变任何标志位。移位指令如SHR、SHL、SAR和SAL用于改变操作数的二进制位位置,循环移位指令ROR、ROL、RCR和RCL则是循环版本的位移。 程序流程...
汇编语言由一系列指令组成,每个指令对应一个或多个机器周期的操作,如数据加载、存储、算术运算、逻辑运算和控制流程等。 一、指令分类: 1. 数据处理指令:包括加法、减法、乘法、除法、位操作等,如ADD、SUB、...
9. **比较和设置标志**:如CMP(比较)会设置标志寄存器中的状态标志,供后续的条件跳转指令使用。 10. **同步与互斥指令**:在多处理器或多线程环境中,汇编语言提供了诸如LOCK(锁定)这样的指令来保证数据的正确...
在计算机科学领域,汇编语言是一种低级编程语言,它与机器语言紧密相关,每条汇编指令通常对应一个特定的机器码。汇编语言的使用虽然不如高级语言那么直观和便捷,但在某些特定场景下,如系统级编程、硬件控制、性能...
5. **TEST**:测试指令,用于对两个操作数进行按位与运算,并更新标志位。 - 示例:`TEST AX, BX` 对AX与BX进行按位与运算,并更新标志位。 6. **SHL**:左移指令,用于将操作数向左移动指定位数。 - 示例:`SHL ...
8086处理器是Intel公司设计的一种16位微处理器,它的指令集是汇编语言编程的基础。本文将详细讲解8086汇编指令大全,帮助读者深入理解这些基本操作。 1. 数据传送指令: - MOV:用于在寄存器和内存、寄存器和...
**数据传送指令** 是汇编语言中最基本的指令之一,它们负责在寄存器、存储单元和I/O端口之间传递数据和地址,并且不会改变标志位状态。 1. **通用数据传送指令**:最常用的指令是`MOV`,它的格式是 `MOV OPD, OPS`...
XCHG指令用于交换两个寄存器或一个寄存器与内存中的数据,不改变任何标志位。常见的形式有: - `XCHG r1, r2`:交换寄存器r1和r2的数据。 - `XCHG m, r`:交换内存m和寄存器r的数据。 #### PUSH & POP - 压栈与出栈...
这些指令执行后会根据计算结果影响标志寄存器的标志位,如符号位(sf)、零标志位(zf)、溢出标志位(of)、进位标志位(cf)、奇偶标志位(pf)和辅助进位标志位(af)。 逻辑指令包括`and`(按位与)、`or`(按...
80x86汇编指令大全是对Intel 80x86系列处理器汇编语言编程的基础,涵盖了数据传输、算术运算、逻辑运算等多个方面的指令。以下是对这些指令的详细解释: 1. 数据传输指令: - `MOV`:基本的数据移动指令,用于将...