回 帖 发 新 帖 刷新版面

主题:[原创]有关VC++与汇编嵌入式编程出现的问题

最近我用VC++和汇编混合编程,在此过程中未出现预定的结果而是一个“-858993459”的一个数值,编译时也没有出现错误和警告。经过几天反复查看每有发现错误,特向大家请教。望大家不吝赐教。

代码如下:

#include <iostream.h>

int imin(int SIZE,int array[SIZE]);

void main(void)
{
    const int SIZE=2;
    int array[SIZE];
    int temp;
    cout<<"请输入"<<SIZE<<"个整数(-214748364~214748364之间)"<<endl;
    for(temp=1;temp<=SIZE;temp++)
        cin>>array[temp];
    cout<<"其中最小值为:\t"<<imin(SIZE,array)<<endl;
    
}

int imin(int itmp,int iarray[])
{
    int m;
    __asm
    {
       push eax
           push ecx
       push esi

       mov ecx,itmp
           xor eax,eax
           mov esi,iarray
           mov eax,[esi]
           dec ecx
 minlp:    add esi,4
           add eax,[esi]
           loop minlp
           mov m,eax
         
         
       pop esi
       pop ecx
       pop eax
    }
    return m;
}

完毕。

回复列表 (共7个回复)

沙发

int imin(int itmp,int iarray[])
{
    int m;
    __asm
    {
       push eax
           push ecx
       push esi

       mov ecx,itmp
           xor eax,eax
           mov esi,iarray
           mov eax,[esi]
           dec ecx
 minlp:    add esi,4
           add eax,[esi]    <----你这里写得对么?
           loop minlp
           mov m,eax
         
         
       pop esi
       pop ecx
       pop eax
    }
    return m;
}

板凳

高手

3 楼

调试下,就知道错在哪里了吧!~

4 楼

可能不知道ASM那东西能调试吧。。。。

5 楼

应该没问题,那些汇编代码都是在debug中反复调试过的。之后才该成32位的。我想但从算法上将应该没问题。

6 楼

是啊,但是你是在求最小值么?

7 楼

第一:
for(temp=1;temp<=SIZE;temp++)
应该改为:
for(temp=0;temp<SIZE;temp++)
第二:
你这个是个求和函数,不是求最小值的!原因同楼上!

我来回复

您尚未登录,请登录后再回复。点此登录或注册