社区
汇编语言
帖子详情
-->30分,CMP指令对标志位的影响问题
浩曦
2003-10-20 12:39:30
你好:
书上论述CMP对标志位的影响时也太敷衍了.根本没怎么详细说,所以我向大家来请教了.比如CMP A,B 指令,如果分别为 A>B ,A=B,A<B 三种情况时,CMP A,B 指令执行后标志位都分别是怎么样的呢?谢谢
...全文
685
5
打赏
收藏
-->30分,CMP指令对标志位的影响问题
你好: 书上论述CMP对标志位的影响时也太敷衍了.根本没怎么详细说,所以我向大家来请教了.比如CMP A,B 指令,如果分别为 A>B ,A=B,A<B 三种情况时,CMP A,B 指令执行后标志位都分别是怎么样的呢?谢谢
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
5 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
lihaiyang626
2003-10-20
打赏
举报
回复
其实CMP与SUB执行操作一样,只是结果不送入目的操作数.
浩曦
2003-10-20
打赏
举报
回复
Areslee(易水):
我不想和你争辩什么,有时你总是在一些看上去简单的问题帖写点诸如:难道不会自己怎么怎么吗?难道自己不会自己怎么怎么再问吗?之类的论调.有些帖确实就是自己不想,就依赖别人,当然不好,但是所有的都是吗?你把自己当谁啦?你能确定我没自己想吗?还有,对于初学者DEBUG命令学了吗?哦,都是初者的错,该先把高手们会的招都学会再学,不然就是自己没想过办法的.
只想告诉你:不要用一种老手的角度看待问题!
CSDN的用户绝大部分是希望得到别人帮助的人,而不是所谓的高手,专家要一起讨论怎么写个操作系统抵垮微软!只是希望自己简单的问题能得到解答帮助.
想想你小时候向父母或者朋友问的问题吧,如果那时候他们用很责备的语句回答你,不知道是什么样.
还有,既然你知道可以用DEBUG,那你就说:"自己用DEBUG试试吧",不就可以了吗?干嘛加后面的话呢?以为这样很拽啊?作为版主该引导人们去学习,而不是在这里耀武扬威.U KNOW?
Areslee
2003-10-20
打赏
举报
回复
用DEBUG试试不就很明白了吗?难道不能自己动动手再问吗?
TimesNewRoman
2003-10-20
打赏
举报
回复
JO OF=1 溢出
JNO OF=0 无溢出
JB/JC/JNAE CF=1 低于/进位/不高于等于
JAE/JNB/JNC CF=0 高于等于/不低于/无进位
JE/JZ ZF=1 相等/等于零
JNE/JNZ ZF=0 不相等/不等于零
JBE/JNA CF=1 或ZF=1 低于等于/不高于
JA/JNBE CF=0 且ZF=0 高于/不低于等于
JS SF=1 符号为负
JNS SF=0 符号为正
JP/JPE PF=1 “1”的个数为偶
JNP/JPO PF=0 “1”的个数为奇
JL/JNGE SF≠OF 小于/不大于等于
JGE/JNL SF=OF 大于等于/不小于
JLE/JNG ZF≠OF 或ZF=1 小于等于/不大于
JG/JNLE SF=OF 且ZF=0 大于/不小于等于
csdsjkk
2003-10-20
打赏
举报
回复
1、比较无符号数
a > b ja xxxx
a = b je xxxx
a < b jb xxxx
2、比较有符号数
a > b jg xxxx
a = b je xxxx
a < b jl xxxx
CMP
指令
、
标志位
、JCC
指令
总结
CMP
指令
、
标志位
、JCC
指令
总结 之前看到了
cmp
指令
,总是记混。现在准备对
CMP
指令
和汇编条件的判断做一个简单的总结。
CMP
指令
cmp
(compare)
指令
进行比较两个操作数的大小 例:
cmp
oprd1,oprd2 当执行到
CMP
指令
的时候会读取这两个寄存器的内容,并加以减法运算,结果本身不保留,并按照结果设置符号位(属算术运算)。 如何判断大小 若执行
指令
后:ZF=1,则说明两个数相等,因为zero为1说...
CMP
指令
和
标志位
汇编中的
CMP
指令
是一条比较
指令
,对比两个操作数的大小,但是计算机并不理解大小,它只是对两个操作数进行了一次减法操作,然后对一些
标志位
进行了一些逻辑运算来判断哪个数大,涉及的
标志位
有如下一些: CF:是否有进位或者借位 ZF:0
标志位
,就是结果是否为0 OF:溢出
标志位
,是否计算机结果溢出了 SF:符号位,0为正,1为负
汇编test、
cmp
对
标志位
的
影响
CMP
{cond} Rn,operand2
CMP
比较
指令
使用寄存器Rn的值减去operand2的值,根据操作的结果
影响
新CPSR中相应的条件
标志位
,以便后面的
指令
根据相应的条件标志来判断是否执行。
CMP
指令
与SUBS
指令
的区别在于
CMP
指令
不保存运算结果。在进行两个数据大小判断时,常用
CMP
指令
及相应的条件码来操作。以下转自CSDN:
CMP
指令
的格式为
CMP
op1 op2 用到的
标志位
有CF,ZF,OF,SF四个,对于两个无符号数的情况,两数相减不可能溢出了,看CF和ZF
标志位
就可以,如果ZF为
汇编语言--
cmp
指令
cmp
是比较
指令
,
cmp
的功能相当于减法
指令
,只是不保存结果。
cmp
指令
执行后,将对标志寄存器产生
影响
。 其他相关
指令
通过识别这些被
影响
的标志寄存器位来得知比较结果。
cmp
指令
格式:
cmp
操作对象1,操作对象2 例如:
指令
cmp
ax, ax,做(ax)-(ax)的运算,结果为0,但并不在ax中保存,仅
影响
flag的相关各位。
指令
执行后:zf=1,pf=1,sf=0,cf=0,of=0。 CPU在执行
cmp
指令
的时候,也包含两种含义:进行无符号数运算和进行有符号数运算。 ...
常用汇编
指令
对
标志位
的
影响
加法
指令
ADD (addition)
指令
对
标志位
的
影响
: CF=1 最高有效位向高位有进位 CF=0 最高有效位向高位无进位 OF=1 两个同符号数相加(正数+正数 或 负数+负数),结果符号与其相反。 OF=0 两个不同符号数相加,或同符号数相加,结果符号与其相同。 带进位加法
指令
ADC (add with ca.
汇编语言
21,459
社区成员
41,601
社区内容
发帖
与我相关
我的任务
汇编语言
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
复制链接
扫一扫
分享
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章