无知 发表于 2013-4-26 03:48:35

汇编;运算体变形 检测下 堆栈知识!

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

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

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

#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);
}


页: [1]
查看完整版本: 汇编;运算体变形 检测下 堆栈知识!