ja

https://www.felixcloutier.com/x86/comisd

 

ja,无符号数大于时,cf=0 zf=0

jae,无符号数大于等于时,cf=0

jb,无符号数小于时,cf=1

jbe,无符号数小于等于时,cf=1 zf=1

jc,有进位时,cf=1

jcxz,ecx为0时,ecx=0

je,相等时,zf=1

jg,有符号数大于时,zf=0 sf=of

jge,有符号数大于等于时,sf=of

jl,有符号数小于时,sf!=of

jle,有符号数小于等于时,zf=1或者sf!=of

jna,无符号数不大于时,cf=1或者zf=1

jnae,无符号数不小于等于时,cf=1

jnb,无符号数不小于时,cf=0

jnbe,无符号数不小于等于时,cf=0 zf=0

jnc,无进位时,cf=0

jne,不等时,zf=0

jng,有符号数不大于时,zf=1或者sf!=of

jnge,有符号数不大于等于时,sf!=of

jnl,有符号数不小于时,sf=of

jnle,有符号数不小于等于时,zf=0sf=of

jno,有符号数无溢出时,of=0

jnp,奇偶位不为1,pf=0

jns,有符号数不为负时,sf=0

jnz,不为0时,zf=0

jo,有符号数溢出时,of=1

jp,奇偶位为1时,pf=1

js,有符号数为负时,sf=1

jz,为0时,zf=1

 

 

 

 

 

被除数

除数

余数

AX

reg/mem8

AL

AH

DX:AX

reg/mem16

AX

DX

EDX:EAX

reg/mem32

EAX

EDX

64 位模式下,DIV 指令用 RDX:RAX 作被除数,用 64 位寄存器和内存操作数作除数, 商存放到 RAX,余数存放在 RDX 中

 

 

 

 

被乘数

乘数

乘积

AL

reg/mem8

AX

AX

reg/mem16

DX:AX

EAX

reg/mem32

EDX:EAX

如果乘积的高半部分不为零,则 MUL 会把进位标志位和溢出标志位置 1。因为进位标志位常常用于无符号数的算术运算,在此我们也主要说明这种情况。例如,当 AX 乘以一个 16 位操作数时,乘积存放在 DX 和 AX 寄存器对中。其中,乘积的高 16 位存放在 DX,低 16 位存放在 AX。如果 DX 不等于零,则进位标志位置 1,这就意味着隐含的目的操作数的低半部分容纳不了整个乘积

 

 

有个很好的理由要求在执行 MUL 后检查进位标志位,即,确认忽略乘积的高半部分是否安全

posted @   zJanly  阅读(344)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
点击右上角即可分享
微信分享提示