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
[6514] Re:Re:[질문] 어셈블리어 인라인 함수에 관하여...
송영재 [] 2189 읽음    2001-04-03 10:42
정말 감사합니다.
이렇게 빨리 답변이 올줄은 몰랐습니다.

어렵게 찾은 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
: :
: : 제가 너무 몰라서
: : 친절하고 자세한 답변 부탁드리겠습니다.
: :
: : 감사합니다.
: :

+ -

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