社区
汇编语言
帖子详情
cmp的问题
APIer
2001-04-18 07:36:00
小弟刚刚学习汇编,在vc6中内钱汇编写了一个图片alpha 混合,但是我需要用到cmp指令比较是否透明色,由于寄存器我用光了,cmp一个内存单元,我跟踪发现,每次这个内存单元的值都在变化,我用push和pop保存这个值,发现loop的时候居然跳到了另外的一段汇编代码中间了,谁能save me!
...全文
87
4
打赏
收藏
cmp的问题
小弟刚刚学习汇编,在vc6中内钱汇编写了一个图片alpha 混合,但是我需要用到cmp指令比较是否透明色,由于寄存器我用光了,cmp一个内存单元,我跟踪发现,每次这个内存单元的值都在变化,我用push和pop保存这个值,发现loop的时候居然跳到了另外的一段汇编代码中间了,谁能save me!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
4 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
APIer
2001-04-30
打赏
举报
回复
duz(肚子) :非常谢谢了,你说得很对:)
duz
2001-04-30
打赏
举报
回复
问题在于你修改了bp的值,对于c编译器来说,由于所有的局部变量都是在堆栈上,所以访问时都会用[ebp+偏移量]的形式访问,如果你改变了ebp的值,c编译器并不知道这些,它还是用[ebp+偏移量]的形式访问变量tt,实际访问到的就不知道是什么了。
你如果能够不去修改ebp(当然包括bp),那么就可以使用代码中的局部变量
或者可以试者将
mov bp,[ebx];
cmp bp,tt;//就是这个cmp我跟踪的时候发现tt在变化,当我push 和 pop tt 的时候,下面的loop好像跳到了另外的一个_asm代码段里面了
改为
push tt
mov bp,[ebx]
cmp bp,[esp]
pop ebp //千万不要用pop tt哦,想一想为什么
mov bp,[ebx]
Areslee
2001-04-20
打赏
举报
回复
把源程序代码发来看看!
APIer
2001-04-20
打赏
举报
回复
int TT 123456;
__asm
{
//push edi;
//push ebp;
//push esi;
//pushf;
pusha;
mov eax,wdDest;
mov ebx,wdRes;
mov cx,nUseW;
NEXTPOINT1:
mov dx,[eax];
mov bp,[ebx];
cmp bp,tt;//就是这个cmp我跟踪的时候发现tt在变化,当我push 和 pop tt 的时候,下面的loop好像跳到了另外的一个_asm代码段里面了
je NOTEQ;
shr dx,10;//红色分量
and dx,0x1f;
shr bp,10;
and bp,0x1f;
add dx,bp;
shr dx,1;
mov di,dx;
mov dx,[eax];
mov bp,[ebx];
shr dx,5;
and dx,0x1f;
shr bp,5;
and bp,0x1f;
add dx,bp;
shr dx,1;
mov si,dx;
mov dx,[eax];
mov bp,[ebx];
shr dx,5;
and dx,0x1f;
shr bp,5;
and bp,0x1f;
and dx,bp;
shr dx,1;
shl di,10;
shl si,5;
or dx,di;
or dx,si;
mov [eax],dx;
NOTEQ:
add eax,2;
add ebx,2;
loop NEXTPOINT1;
popa;
//popf;
//pop esi;
//pop ebp;
//pop edi;
}
汇编语言
CMP
指令
CMP
(比较)指令执行从目的操作数中减去源操作数的隐含减法操作,并且不修改任何操作数。 指令格式:
CMP
目的操作数, 源操作数 标志位 当实际的减法发生时,
CMP
指令按照计算结果修改溢出、符号、零、进位、辅助进位和奇偶标志位。如果比较的是两个无符号数,则零标志位和进位标志位表示的两个操作数之间的关系如下表所示:
CMP
结果 ZF CF 目的操作数 < 源操作数 0 1 目的操作数 > 源操作数 0 0 目的操作数 = 源操作数 1 0 如果比较的是两个有符号数,则符号标志位
python
cmp
方法_python
cmp
函数详解
cmp
( x, y):比较2个对象,前者小于后者返回-1,相等则返回0,大于后者返回1.Python的
cmp
比较函数比较原理Python的
cmp
函数可以比较同类型之间,或者不同数据类型之间。然后根据Python的
cmp
比较函数的返回值来判定比较大小。>>> list1, list2=[123,'xyz'], [456,'abc']>>>
cmp
(list1, li...
汇编
cmp
比较指令详解
刚刚看到了
cmp
指令,一开始有点晕。后来上网找了些资料,终于看明白了,为了方便初学者,我就简单写下我的思路吧。高手绕过,谢谢!
cmp
(compare)指令进行比较两个操作数的大小 例:
cmp
oprd1,oprd2 为第一个操作减去第二个操作数,但不影响第两个操作数的值,它影响flag的CF,ZF,OF,AF,PF. ...
汇编语言
cmp
的
问题
汇编语言
cmp
今天,期末复习写了一个简单的比较大小程序,然后我发现在进行了一次
cmp
指令之后,出现了,
cmp
比较出错的
问题
。代码如下 DATA SEGMENT DATA0 DB 9,3,5,7 MAX DB 0 DATA ENDS CODE SEGMENT ASSUME CS:CODE ,DS:DATA START:MOV AX,DATA MOV DS,AX MOV AL,DATA0[0] MOV BL,AL MOV AL,DAT
linux汇编语言
cmp
,汇编语言中
cmp
指令用法笔记与总结
这篇文章主要介绍了汇编语言中
cmp
指令用法,结合实例形式总结分析了汇编语言
cmp
指令基本功能、使用方法及操作注意事项,需要的朋友可以参考下本文实例讲述了汇编语言中
cmp
指令用法。分享给大家供大家参考,具体如下:
cmp
是比较指令,
cmp
的功能是相当于减法指令,只是不保存结果.
cmp
指令执行后,将对标志寄存器产生影响.其他相关指令通过识别这些被影响的标志寄存器来得知比较结果.
cmp
指令格式:
cmp
...
汇编语言
21,459
社区成员
41,601
社区内容
发帖
与我相关
我的任务
汇编语言
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
复制链接
扫一扫
分享
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章