鱼C论坛

 找回密码
 立即注册
查看: 1788|回复: 10

关于汇编的加减程序

[复制链接]
发表于 2014-3-27 22:44:24 | 显示全部楼层 |阅读模式

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

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

x
请教下大神   为什么程序结束后是显示0 ??   请大神好好给小弟我 讲解下  我觉得好像跟cx 有关是   调一下cx的值就不是0了
#include<stdio.h>
#include<windows.h>
int main()
{
int a=1;
_asm{
MOV EAX,a
MOV ECX,1024
s0:
ADD EAX,EAX
loop s0
MOV [a],EAX
}
printf("%d",a);
return 0;}

点评

应该不是ECX的关系,请转自6楼  发表于 2014-3-28 20:31
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-3-28 19:23:24 | 显示全部楼层
第一次 1+1=2
第二次 2+2=4
第三次 4+4=8
。。。。。
第N次  2的N次方
溢出是肯定的了(2的32次方就已经溢出了)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-3-28 19:25:48 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-3-28 19:52:42 | 显示全部楼层
本帖最后由 oggplay 于 2014-3-28 19:58 编辑
wiliam 发表于 2014-3-28 19:25
那请问下 如果要算1024次方该如何去改??  大神???
//结果保存到文件里1.txt。
//m表示底数 t输入几次方
#include <stdio.h>

#define M 10000



int  main()

{

unsigned a[M];  

unsigned long k;  

int i,j,m,t,n=1,r; 

FILE *fp;

a[0]=1;

printf("\n输入m and t(空格隔开: m^t = ?):");

scanf("%d %d",&m,&t);



for(j=0; j<t; j++)

{

       r=0;

       for(i=0; i<n; i++)

       {

         k=a[i]*m+r;

         a[i]=k%10000;

         r=k/10000;

       }



   while(r>0)

       {

         a[n++]=r%10000;

         r/=10000;

       }

}

fp=fopen("1.txt","w");

printf("\n %d^%d =",m,t);

  

for(i=n-1; i>=0; i--)

{ if(a[i]<1000&&a[i]>=100&&i!=n-1) fprintf(fp,"%c",'0');    

else if(a[i]<100&&a[i]>=10&&i!=n-1) fprintf(fp,"%s","00");

else if(a[i]<10&&i!=n-1) fprintf(fp,"%s","000");

       fprintf(fp,"%d",a[i]);

}

 close(fp);
 printf("\n");
return 0;

} 
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-3-28 20:20:43 | 显示全部楼层
多谢楼主分享
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-3-28 20:29:44 | 显示全部楼层
不是算法问题。
MOV [a],EAX 这是关键 [a] 表示用a中的内容做寻址的地址
如果a是1,那么EAX就被存到1号地址单元了
MOV a,eax 这样就可以了
如果楼主实在需要用“[]” 的话可以这样改:
lea edx,a  ;取变量A指针
mov [edx],a
或者用一个指针保存a的地址:
int *p = &a;
__asm{mov [p],eax}  //P里面已经保存了P的地址,所以这样就可以
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-3-28 20:32:26 | 显示全部楼层
还有一个整数最大可以存到 2的32次方,ECX应该小于或等于32
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-3-28 21:25:39 | 显示全部楼层
多谢 楼上的大神为我解答了    其实我只是想用那个程序来测下是汇编的run速度快还是c  run的速度快....
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-4-6 15:35:07 | 显示全部楼层

能教教我怎么把结果全部显示在.txt中吗  ?     可以留下个联系方式吗??
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-4-6 22:08:31 | 显示全部楼层
wiliam 发表于 2014-4-6 15:35
能教教我怎么把结果全部显示在.txt中吗  ?     可以留下个联系方式吗??

看4楼的程序啊,直接编译然后运行就可以了,
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-4-7 11:32:58 | 显示全部楼层
oggplay 发表于 2014-4-6 22:08
看4楼的程序啊,直接编译然后运行就可以了,

我知道  但我看不懂你那个步骤的说    想指教下    我做了个 除法器想把他的结果和余数全部显示到.txt文件中 但我却不会......
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-9-30 21:22

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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