Salve a tutti sicuramente avrò sbagliato qualcosa in fase di configurazione
infatti non mi da neanche lo sfizio di vedere se ho scritto bene il codice assembler
che mi dà i seguenti errori:
1>PROVAASM.obj : error LNK2019: riferimento al simbolo esterno _LenStringa@4 non risolto nella funzione _wmain
1>PROVAASM.obj : error LNK2019: riferimento al simbolo esterno _pfixstringa@16 non risolto nella funzione _wmain
1>PROVAASM.obj : error LNK2019: riferimento al simbolo esterno _pleftstringa@12 non risolto nella funzione _wmain
1>PROVAASM.obj : error LNK2019: riferimento al simbolo esterno _prightstringa@12 non risolto nella funzione _wmain
1>PROVAASM.obj : error LNK2019: riferimento al simbolo esterno _pmidstringa@12 non risolto nella funzione _wmain
1>C:\Users\vinny\Documents\Visual Studio 2012\Projects\PROVAASM\Debug\PROVAASM.exe : fatal error LNK1120: 5 esterni non risolti
sotto vi posto il sorgente
// PROVAASM.cpp : definisce il punto di ingresso dell'applicazione console.
//
#include "stdafx.h"
#include "iostream"
using std::cin;
using std::cout;
using std::endl;
extern "C" int __stdcall LenStringa(char*);
extern "C" int __stdcall pfixstringa(char*,char*,int,int);
extern "C" int __stdcall pleftstringa(char *,char *,int);
extern "C" int __stdcall prightstringa(char *,char *,int);
extern "C" int __stdcall pmidstringa(char *,char *,int);
int _tmain(int argc, _TCHAR* argv[])
{
char pippo[71],pluto[68];
int ncar,indy,kindy,err,opz;
ncar=0; err=0; kindy=0; opz=0;
for (indy=0;indy < 71;indy++) { pippo[indy]=' '; }
for (indy=0;indy < 68;indy++) { pluto[indy]=' '; }
cout << "prova funzioni stringa\n";
cout << "inserisci stringa una stringa max 70 caratteri : ";
cin.getline(pippo,71);
cout << "-----menu' funzioni stringa assembler da provare-----\n";
cout << "1) LeftStringa 2) RightStringa \n";
cout << "3) MidStringa 4) FixStringa \n";
for (indy=0;indy<6;indy++) { cout << "\n"; }
cout << " scegli (1-4) ? ";
cin >> opz;
switch (opz) {
case 1: {
cout << "quanti caratteri vuoi prendere ? ";
cin >> ncar;
err = pleftstringa(pippo,pluto,ncar);
switch (err)
{
case 1: {
cout << "stringa sorgente non inserita";
return 1;
break;
}
case 2: {
cout << "numero caratteri da prendere = zero ";
return 2;
break;
}
case 3: {
cout << "caratteri da prendere > della stringa ";
return 3;
break;
}
default: {
err=LenStringa(pippo);
cout << " lunghezza stringa sorgente : " << err << "\n";
cout << "hai preso i seguenti caratteri : " << pluto << "\n";
return 0;
break;
}
}
}
case 2: {
cout << "quanti caratteri vuoi prendere ? ";
cin >> ncar;
err = prightstringa(pippo,pluto,ncar);
switch (err) {
case 1: {
cout << "stringa sorgente non inserita";
return 1;
break;
}
case 2: {
cout << "numero caratteri da prendere = zero ";
return 2;
break;
}
case 3: {
cout << "caratteri da prendere > della stringa ";
return 3;
break;
}
default: {
err=LenStringa(pippo);
cout << " lunghezza stringa sorgente : " << err << "\n";
cout << "hai preso i seguenti caratteri : " << pluto << "\n";
return 0;
break;
}
}
}
case 3: {
cout << "quanti caratteri vuoi prendere ? ";
cin >> ncar;
err = pmidstringa(pippo,pluto,ncar);
switch (err)
{
case 1: {
cout << "stringa sorgente non inserita";
return 1;
break;
}
case 2: {
cout << "numero caratteri da prendere = zero ";
return 2;
break;
}
case 3: {
cout << "caratteri da prendere > della stringa ";
return 3;
break;
}
default: {
err=LenStringa(pippo);
cout << " lunghezza stringa sorgente : " << err << "\n";
cout << "hai preso i seguenti caratteri : " << pluto << "\n";
return 0;
break;
}
}
}
case 4: {
cout << "quanti caratteri vuoi prendere ? ";
cin >> ncar;
cout << "specifica da dove vuoi partire ? ";
cin >> kindy;
err = pfixstringa(pippo,pluto,ncar,kindy);
switch (err)
{
case 1: {
cout << "stringa sorgente non inserita";
return 1;
break;
}
case 2: {
cout << "numero caratteri da prendere = zero ";
return 2;
break;
}
case 3: {
cout << "caratteri da prendere > della stringa ";
return 3;
break;
}
case 4: {
cout << "posizione di partenza non specificata";
return 4;
break;
}
case 5: {
cout << "posizione sbagliata per il numero di caratteri che vuoi prendere";
return 5;
break;
}
default: {
err=LenStringa(pippo);
cout << " lunghezza stringa sorgente : " << err << "\n";
cout << "hai preso i seguenti caratteri : " << pluto << "\n";
return 0;
break;
}
}
}
default: {
cout << "opzione al momento non supportata \n";
cout << "rilancia il programma se vuoi provare di nuovo\n";
return 0;
}
}
}
vi posto anche una routine assembler cosi nel caso vedete come l' ho scritta cosi potete vedere se c'è qualcosa di sbagliato.
.486
.model flat,stdcall
option casemap :none
.code
pleftstringa PROC Arg1:DWORD,Arg2:DWORD,Arg3:DWORD
mov ecx,Arg3
mov edi,Arg2
mov esi,Arg1
xor eax,eax
rep movsb
mov dword ptr [edi],0
ret
pleftstringa endp
end