C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[6506] Re:[질문] 어셈블리어 인라인 함수에 관하여...
최혜원.시리 [sirius] 2505 읽음    2001-04-02 23:29
안녕하세요..

이렇게 바꿔보세요.
: 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
:
: 제가 너무 몰라서
: 친절하고 자세한 답변 부탁드리겠습니다.
:
: 감사합니다.
:

+ -

관련 글 리스트
6498 [질문] 어셈블리어 인라인 함수에 관하여... 송영재 2287 2001/04/02
6506     Re:[질문] 어셈블리어 인라인 함수에 관하여... 최혜원.시리 2505 2001/04/02
6514         Re:Re:[질문] 어셈블리어 인라인 함수에 관하여... 송영재 2190 2001/04/03
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.