회원가입 ID/PW 찾기
AA

AVR ATmega 162 책에 나와있는 예제입니다.
주석이 달아져있어서 이 어셈들이 어떤식으로 작동하는지는 알겠습니다.
그런데 최상위 비트나 최하위 비트가 어떻게 저런 순서로 저장되는지 모르겠습니다.
R26,27,30,31 
y+1, y+2, y+3, y+4
등 이 어셈블러가 왜 이런식으로 a,b,c 가 저장되어서 연산되는지에 대해서 
가르침을 주시면 +_+...고맙겠습니다..^^ 명령어는 검색해서 찾아봤는데 
어떤 순서에 의해 a,b,c가 각각 들어가게 되는지.............궁금하네요...
 

// 어셈블러로 선언된 함수, 이 함수는 a+b+c한 값을 반환한다.

#pragma warn-   // 경고 메시지를 금지시킴

int sum_abc(int a, int b, unsigned char c) {

  #asm

  ldd   r30,y+3   ;R30=LSB a

  ldd   r31,y+4   ;R31=MSB a

  ldd   r26,y+1   ;R26=LSB b

  ldd   r27,y+2   ;R27=MSB b

  add   r30,r26   ;(R31,R30)=a+b

  adc   r31,r27

  ld     r26,y      ;R26=c

  clr    r27        ;promote unsigned char c to int

  add  r30,r26   ;(R31,R30)=(R31,R30)+c

  adc  r31,r27

  #endasm

}

#pragma warn+   // 경고 메시지를 허가함

void main(void) {

  int r;

  // now we call the function and store the result in r

  r=sum_abc(2,4,6);

}

댓글 2
  • No Profile
    코드는 top-down방식이므로 위부터 차례차례 번지수에 무엇이 들어가는지 따라가면 알 수 있을듯 한데요..

    특히 big endian 방식인지 little endian 방식인지를 먼저 알아야겠지요..

    스스로 공부해봄이 가장 빠를듯합니다. 어셈은 말로 설명하기가 더 힘드네요..

    특히 메모리 엑세스같은 경우는 직접 방법이냐 간접방법이냐부터 이해를 하셔야 하고요^^;
  • No Profile
    C언어의 역어셈. 스택에 파라미터가 들어가고 빠져나온는 과정. SRAM 억세스 방법. 오프셋 연산. 16비트 데이터 레지스터. Z, Y, X 레지스터. 5분 정도 어셈블리 언어 책을 봤습니다. 어셈블리 명령어 LDD만 찾아봐도 답이 나옵니다. ^^ CodeVision의 인라인어셈 방법이 매우 특이한 것 같내요. 정말 매력적 입니다.

하드웨어 설계 및 개발에 대하여 개발자들이 자유롭게 토론하는 공간입니다.
- Q&A, 자유주재 토론, 관련 정보 공유
- 분야 : 마이크로프로세서 응용, 전기/전자(아날로그/디지털) 회로 설계, C/C++ 프로그래밍, 펌웨어,
         PCB Artwork, 트러블슈팅 등 하드웨어 설계에 관한 전반인 내용
※ 게시글에 맞는 분류를 선택하여 글을 작성해 주시면 쾌적한 사이트 운영에 많은 도움이 됩니다.
※ 하드웨어 인사이트는 회원들간의 거래정보를 게재할 뿐이지, 그 어떤 책임과 의무도 가지지 않습니다.

search
번호 분류 제목 글쓴이 조회 수 날짜
46 펌웨어 & 코딩언어 HOTblackfin 칩 부트코드 작성해보신분?1 퀴아쿠 857 2010.02.19
45 펌웨어 & 코딩언어 HOT어셈블리를 공부해야할까요?>8 GrayShark 1215 2010.02.17
44 펌웨어 & 코딩언어 HOTC언어책 추천 해주세요 ㅋㅋ9 따라하다 1618 2010.02.06
43 펌웨어 & 코딩언어 HOTc언어질문인데요5 tiger2 983 2009.12.17
42 펌웨어 & 코딩언어 HOT프로그래밍 공부는 어느순서로 공부해야하나요??6 기꾸닝 1469 2009.12.02
41 펌웨어 & 코딩언어 HOT[초짜] 세그먼트를 이용해 카운터 하는 소스를 짜려고 하는데 ..5 기꾸닝 1465 2009.12.02
40 펌웨어 & 코딩언어 HOTc언어 ㅠㅠ3 kjs85179 1436 2009.11.05
39 펌웨어 & 코딩언어 HOT라운드 로빈 방식의 스케쥴러에서... karismapong 1978 2009.10.20
38 펌웨어 & 코딩언어 HOT도와주세요!!4 심봉사 1297 2009.09.21
37 펌웨어 & 코딩언어 HOTC 언어 궁금한거 있습니다~3 로이안 1136 2009.09.04
36 펌웨어 & 코딩언어 HOT마이컴 초짜의 넋두리~12 소스리 1252 2009.08.20
35 펌웨어 & 코딩언어 HOT8051 신호등 C언어론 한건데요 딜레리....2 근자 1650 2009.05.26
펌웨어 & 코딩언어 HOT어셈 관련해서 질문입니다..^^;2 화언 1274 2009.04.22
33 펌웨어 & 코딩언어 HOT이거좀 도와주세요2 지노 929 2008.10.12
32 펌웨어 & 코딩언어 HOT8051 4거리 신호등에서의 소스에서요1 마모루 1156 2008.09.08
31 펌웨어 & 코딩언어 HOTjava ....5 あさひ 916 2008.08.19
30 펌웨어 & 코딩언어 HOTacc.h 오류문제입니다.ㅠ1 미스터조ㅋ 863 2008.06.21
29 펌웨어 & 코딩언어 HOTC언어와 C++의 차이점이 무엇인가요??6 날아가는잡쉐 1614 2008.04.29
28 펌웨어 & 코딩언어 HOTPCM의 구조를 알고 싶습니다.2 Kasanova77 2312 2008.03.29
27 펌웨어 & 코딩언어 HOT혹시 이 프로그램..8 빛나는 영혼 1224 2008.03.13
  • 벗을 사귐에는 과하여 넘치지 말지니 넘치면 아첨하는 자가 생기리라.
    - 채근담
  • * 납포인트 정보 *
  • 글 작성 : 3
  • 댓글 작성 : 1
  • 내 글이 추천받음 : 1
저작권법에 위배되는 콘텐츠는 등록 불가하며, 저작물에 대한 권리는 저작자에게 있습니다.
Copyright 2006-2021 © hardwareis.com, All rights reserved.