鱼C论坛

 找回密码
 立即注册
查看: 1702|回复: 0

[技术交流] 汇编;运算体变形 检测下 堆栈知识!

[复制链接]
发表于 2013-4-26 03:48:35 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
机器重装了系统, 因为最近在学C语言 ,所以没装汇编的编译系统, 用 VC内联汇编形式 试的代码 .

以下两段 代码执行的 结果是一样的。

shl eax, 1  //shl 功能: 对给定的目的操作数左移COUNT次,每次移位时最高位移入标志位CF中,最低位补零
二进制形式向左进1位  十进制数8的二进制形式是 1000, 十进制数16的二进制形式是 10000
类似C语言的,左移运算符“<<”
eax  ebx  暂时可以理解为8080的  ax  bx

#include <stdio.h>
void main()
{
int a ,b,c;
a=55;
b=15;
__asm
{
   mov eax,a
   mov ebx,b


   sub eax,ebx


   mov c,eax
}
printf("%d\n",c);
}
》》》》》》邪》》》》》》》》》》》》恶》》》》》》》》》》》》分》》》》》》》》》》》》割》》》》》》
#include <stdio.h>
void main()
{
int a ,b,c;
a=55;
b=15;
__asm
{
  mov eax,a
  mov ebx,b
   push    ebx
   push    eax
   xor     eax, ebx      //eax ==56
   pop     ecx           //ecx=55
   push    eax
   push    ecx            
   pop     eax          //eax ==55
   push    eax         //eax ==55
   or      eax, ebx    //eax ==63
   pop     ebx        //ebx==55
   xor     eax, ebx //eax ==8
   shl     eax, 1      //eax ==16            
   push    eax
   pop     ebx    //ebx==16
   pop     eax    //eax ==56
   sub     eax, ebx
   pop     ebx    //ebx==15
  mov c,eax
  
   
}
printf("%d\n",c);
}


想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-17 16:24

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表