|
제가 몇개의 상용 ADC,DAC보드를 사용하고 있는데
예전에 어떤 선배가 컴파일 할때에는 Borland 5.02였습니다.
그분의 소스중에 일부를 사용하려고 하는데
다음과 같이 제가 조금 손을 본 화일을 프로젝트에 add하여
compile하니 에러가 나더군요.
하지만 원본을 그냥 컴파
제가 몇몇 함수의 이름을 고치고,
줄바꾸기등등을 조금 변경하기는 했지만...
제가 어셈블리어를 전혀 몰라서요...
어디서 간단하게 알아본 것으로는
그저 어셈블리어 함수를 사용하려면 호출하는 함수 앞에
asm, _asm, 또는 __asm를 써 주면 된다고만 되있던데,
혹시 줄맞춤이나 뭐 그런 형식상의 무슨 제약이 있는 것인지요.
문제의 화일을 올려봅니다.
#include
#include
#include "yport.h" outportb
//---------------------------------------------------------------------------
void yfWritePort_16bit(unsigned short address, short value)
{
__asm
{
mov DX, [address] ;
mov AX, [value] ;
out DX,AX ;
};
}
//---------------------------------------------------------------------------
void yfWritePort_08bit(unsigned short address, char value)
{
__asm
{
mov DX, [address] ;
mov AX, [value] ;
out DX,AX ;
};
}
//---------------------------------------------------------------------------
short yfReadPort_16bit(unsigned short address)
{
short bvalue;
bvalue = 0;
_asm
{
mov DX, [address] ;
in AX, DX ;
mov AX, bvalue ;
};
return bvalue;
}
//---------------------------------------------------------------------------
unsigned char yfReadPort_08bit(unsigned short address)
{
unsigned char bvalue;
bvalue = 0;
__asm
{
mov DX, [address] ;
in AL, DX ;
mov AL, bvalue ;
};
return bvalue;
}
//---------------------------------------------------------------------------
에러가 난 위치는 yPort.asm에서 다음의 라인이었습니다.
mov AX, [byte ptr [ebp+12]]
에러메세지는 다음과 같았습니다.
[Tasm Error] yPORT.asm(138): Operand types do not match
다음과 같은 warning도 나오더군요.
[C++ Warning] Port.cpp(7): W8002 Restarting compile using assembly
제가 너무 몰라서
친절하고 자세한 답변 부탁드리겠습니다.
감사합니다.
|