|
정말 감사합니다.
이렇게 빨리 답변이 올줄은 몰랐습니다.
어렵게 찾은 BCB 커뮤니티인데,
이렇게 도움이 될 줄이야...^^
시리 님이 쓰신 글 :
: 안녕하세요..
:
: 이렇게 바꿔보세요.
: : 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
: :
: : 제가 너무 몰라서
: : 친절하고 자세한 답변 부탁드리겠습니다.
: :
: : 감사합니다.
: :
|