반응형

어셈블리어는 기본적으로 대 소문자를 구분하지 않습니다. 아래의 소스를 소문자로 변경해도 에러없이 컴파일 됩니다.

 

;=====================================
;
;        첫 번째 LED 켜기 (포트1의 2번 핀)
;
;=====================================

        

         ORG        0000H
         JMP        START          ; START 레이블로 점프

 

         ORG       0035H

 

START:

 

         CLR P1.2                     ; P1.2에 0을 출력 (LED 켜짐)

 

;=====================================

 

         END

 

 

 

-------------------------------------------------------------------

TY52 보드에는 총 3개의 LED가 있는데, 위의 소스는 첫 번째 LED만 ON 시키는 코드이다. 소스가 간단하지만, 이렇게 하나씩 실습해 가면서 명령어를 배워나간다면 지루하게 달달 외우는 것 보다 쉽게 이해할 수 있을 것 같다.^^

 

보충설명:

; 세미콜론은 알다시피 주석을 나타내기 때문에 컴파일되지 않는다. ORG는 ORIGIN 즉, 원점을 의미하는데, ORG 다음 줄에 오는 코드를 0000H 번지부터 놓으라는 뜻이다. 따라서 ORG 다음줄에 오는 코드, JMP START는 0000H 번지에 놓이게 된다. 그 다음줄에 있는 코드 ORG 0035H는 마찬가지로 이 다음에 오는 코드를 0035H 번지부터 놓으라는 의미이다. 사실, 0001H 번지부터 놓일수도 있지만, 0000H 부터 0035H 사이에 인터럽트 벡터가 놓이기 때문에 이 공간은 사용하지 않고 0035H 번지로 점프하도록 하는 것이다. 그 다음의 코드 START:는 레이블을 의미하는데, LED를 켜져 있게만 하는 이 소스에서는 없어도 되지만, 만약 LED를 껏다 켰다하려면, START: 레이블이 필요하다. 이것은 마치 c언어에서의 GOTO 명령으로 START: 레이블을 찾아가는 것과 같다. 이 부분은 다음 강좌에 잘 설명하도록 하겠다.^^ 그리고 마지막 CLR P1.2 은 포트1의 2번핀을 클리어 시키라는 명령인데, 0을 출력하라는 뜻이다. 그럼 1을 출력하라는 명령어는 뭘까... SETB P1.2 이다.^^ 좀 더 풀어써보면 CLR은 CLEAR라는 뜻으로 깨끗이 지우라는 뜻이므로 0을 출력한다는 말이고, SETB는 SET BIT를 의미하므로 비트를 1로 만들라는 명령이다. 이것이 어셈블리언어의 가장 기초가 되는 부분이다. 조금씩 탑을 쌓아가자... 공든탑이 무너지랴...^^

 

마지막 END는 어셈블리어 소스의 끝을 나타낸다. 실제 컴파일 되지는 않으며 어셈블러가 이 코드를 발견하면 컴파일을 종료하는 역할을 한다.


반응형

+ Recent posts