|
안녕하세요..
이렇게 바꿔보세요.
: void yfWritePort_08bit(unsigned short address, char value)
: {
: __asm
: {
: mov DX, [address] ;
: mov AL, [value] ;
: out DX,AL ;
: };
: }
우선 데이터를 char형식의 8bit 데이터를 사용하실때는 8bit 레지스터를 사용하셔야 합니다.
[Tasm Error] yPORT.asm(138): Operand types do not match
란 에러코드는 그 이유로 나온 것입니다.
그리고
[C++ Warning] Port.cpp(7): W8002 Restarting compile using assembly
는 신경쓰시지 마시고 사용하세요..
도움이 되시길 바랍니다.
송영재 님이 쓰신 글 :
: 제가 몇개의 상용 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
:
: 제가 너무 몰라서
: 친절하고 자세한 답변 부탁드리겠습니다.
:
: 감사합니다.
:
|