회원가입 ID/PW 찾기
AA

8051을 배우고있는데요...

 

교수님께서 명령어는 이런동작이다 ! 라고만 알려주고..

 

최소값 최대값 구하는 프로그램을 짜보라고해서..

 

이리저리 생각해보았지만..너무막막합니다.

 

30H~35H까지 임의의 값을 넣고 36H , 37H에 최대값과 최소값을 계산하여 저장하는 프로그램을 만들라고하셨어요...

 

R0를 사용해서 넣으라고하는데..

 

만들어 주시면 정말 감사하겠지만.. 너무 염치없어서

 

어떤명령어들을쓰고 어떤순서로 작성해야하는지..조언좀해주세요...

 

이레포트는 서브루틴까지 배우고 내주셨어요..그러니까 CJNE 까지는 사용할수있어요..

kyu
댓글 1
  • No Profile

    http://cluster1.cafe.daum.net/_c21_/bbs_search_read?grpid=lH2L&fldid=3zK1&datanum=185&contentval=&docid=lH2L3zK118520041113133526

     

    8501 어셈블리어를 공부하는 분들에게 좋은 예제라고 생각해서 간단히 설명을 하겠습니다.

    (8051 강좌와 8051 조각내기 강좌를 공부하시는 것이 도움이 되리라 생각합니다.)

     

    내부 데이터 메모리 20h - 27h 까지 8 개의 (8비트 부호 없는) 데이터 중에서 최대값을 R2 (08h) 에 저장하는 프로그램을 작성합니다.

    8051 에는 비교명령은 없고, 비교후 점프명령(cjne) 이 있습니다. 이 명령을 사용해서 데이터들을 비교해서 값이 큰 값을 R2 레지스터에 저장하는 방식으로 프로그램을 작성합니다.

     

    아래 프로그램에서

    $include (reg51.inc) 에서 reg51.inc 파일에는 8051 의 SFR 에 있는 레지스터 이름이 선언되어 있습니다. 이 파일을 포함하라는 명령입니다.

    MAX     EQU     0AH  명령은 0AH (뱅크 1 의 R2) 대신에 MAX 라는 이름으로 사용할 것을 선언합니다.
    고동색 부분은 8 개의 (임의의) 데이터를 내부 데이터 메모리(20h - 28h) 에 저장하는 것입니다.

    MOV     PSW,#08H 명령은 뱅크 1 을 사용한다는 것입니다. 즉 R0 - R7 레지스터가 08h - 0Fh 가 됩니다.

    MOV     R0,#20H 명령은 R0 를 포인터로 사용하기 위해서 초기값(=20h) 을 할당하였습니다.

    MOV     R1,#7 명령은 R1 을 카운터로 사용하기 위하여 초기값(=07h) 을 할당하였습니다.

    CJNE    A,MAX,NEXT1 명령은 A 레지스터와 MAX 에 있는 내용을 비교하는 명령입니다. 비교후 무조건 NEXT1, 즉 다음 줄로 점프합니다. 이때 A 가 MAX 보다 작은면 C(캐리) 가 '1' 이 됩니다. A 가 MAX 보다 크거나 같으면 캐리는 '0' 이 됩니다.

    DJNZ    R1,LOOP1 명령은 카운터로 사용된 R1 을 -1 해서 0 이 아니면 점프하는 명령입니다.

     

    $include (reg51.inc)

    MAX     EQU     0AH
            ;
            ORG     0000H
    ;----------------------------
            MOV     20H,#1BH
            MOV     21H,#08H
            MOV     22H,#35H
            MOV     23H,#0B2H
            MOV     24H,#0ABH
            MOV     25H,#0FEH
            MOV     26H,#48H
            MOV     27H,#0BBH

    ;----------------------------
            MOV     PSW,#08H
            MOV     R0,#20H
            MOV     R1,#7
            MOV     MAX,@R0 
    LOOP1:
            INC     R0
            MOV     A,@R0
            CJNE    A,MAX,NEXT1
    NEXT1:
            JC         NEXT2
            MOV     MAX,A
    NEXT2:
            DJNZ    R1,LOOP1
            JMP     $
    ;----------------------------
            END

     

    위 프로그램을 RIDE51 통합환경에서 시뮬레이션 하는 과정을 살펴 보겠습니다.

    프로젝트를 생성해서 어셈블(Make all) 하는 방법은 8051 강좌의 [[초급]] C 컴파일러 (RIDE51) 실행하기[1] 를 참조하세요.

    스텝 단계로 동작을 보는 방법은 8051 강좌의 [[초급]] C 컴파일러 (RIDE51) 실행하기[2] 를 참조하세요.

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

search
번호 분류 제목 글쓴이 조회 수 날짜
78 ECAD 아무거나 HOTorcad 10.5 라이센스 문제 질문드립니다.1 질순없다,청춘 734 2014.02.09
77 ECAD 아무거나 HOTaltium설치후 홈화면이 안뜨면2 해결사 770 2014.02.03
76 ECAD 아무거나 HOTpads가 데모버전으로 설치된걸 어떻게 해야 알수 있죠?3 질순없다,청춘 565 2014.01.27
75 ECAD 아무거나 HOT교재 관련 두가지 질문드립니다.1 질순없다,청춘 449 2014.01.26
74 ECAD 아무거나 HOT취업을 했습니다. 근데 문제가 생겼습니다.3 질순없다,청춘 1311 2014.01.20
73 ECAD 아무거나 HOT기초 과정 배우기 원합니다!!3 수풀새 661 2013.12.12
72 ECAD 아무거나 HOT아트웍을 Altium으로 하는데...2 루나찡 863 2013.11.25
71 ECAD 아무거나 HOTlayout plus와 allegro 라이브러리가 호환이 되나요? 갈아만든공돌이주스 652 2013.10.29
70 ECAD 아무거나 HOTpads 9.3 설치 오류1 avr몰라요 596 2013.10.25
69 ECAD 아무거나 HOTPADS 9.3 updates 구합니다. dalton 426 2013.09.24
68 ECAD 아무거나 HOT도움을 구합니다. pads 9.5 크랙시 문제가 있어서요1 이바람76 1889 2013.08.26
67 ECAD 아무거나 HOTOrCAD 16.x(16버젼 아무거나)버전 크랙버전좀 보내주세요. 부탁드립니다. 벼락이 707 2013.08.12
66 ECAD 아무거나 HOTpads9.3 win7에서 설치시 멈춤....2 맑은하늘 1455 2013.06.30
65 ECAD 아무거나 HOTorcad로 회로설계. pads로 pcb작업하는 동영상 자료없나요?1 jaemi2010 946 2013.02.28
64 ECAD 아무거나 HOT라이브러리관련문의1 pascal0 763 2013.02.04
63 ECAD 아무거나 HOTpads 9.4 설치 방법 문의1 뻐카 3291 2013.01.22
62 ECAD 아무거나 HOT부품 레퍼런스 초기화2 pck0406 686 2013.01.03
61 ECAD 아무거나 HOTEagle CAD 사용해보신분?2 wind 1243 2012.11.28
60 ECAD 아무거나 HOT전자캐드기능사 실기시험 보신분 있으신가요? (Pads)2 하하하하히 1527 2012.11.12
59 ECAD 아무거나 HOTpads3.5 설치했는데요 pads 에러좀 봐주세요 ㅠ1 하하하하히 695 2012.10.28
  • 지식인은 지금까지 일어났던 일을 안다. 천재는 앞으로 일어날 일을 안다.
    - 치아다
  • * 납포인트 정보 *
  • 글 작성 : 3
  • 댓글 작성 : 1
  • 내 글이 추천받음 : 1
저작권법에 위배되는 콘텐츠는 등록 불가하며, 저작물에 대한 권리는 저작자에게 있습니다.
Copyright 2006-2021 © hardwareis.com, All rights reserved.