반응형

[다시 쓰는 8051 따라하기] 버스, 스택
+------------------------------------------------------+
게시장소 : 개인블로그와 다음카페 로봇자작천국
작 성 자 : Timy(me^^;)
작 성 일 : 2004.10.29
문    의 : 다음카페 http://cafe.daum.net/tinyrobo 혹은
           개인블로그 http://electoy.cafe24.com/blog
+------------------------------------------------------+
[시작]
## 버스, 스택

버스는 타고 다니는 그 버스가 아니다. 하지만 그 버스와 조금 비슷한 면은 있다. ^^
어떤 면이냐며는 바로 그 버스안에는 한사람만 타고 있는게 아니라 같은 방향으로 가는 여러명이 함께 타고 있다는 점이다.
택시나 자가용은 한명이 타고 가고자하는 곳까지 한번에 가게 된다. 하지만 버스는 아무리 내가 급하다고 해도 나만을 위해서 달리지는 않는다. 그러니까 가능하면 동일한 곳까지 가는 여러명이 함께 타고가면 좋은 것이다.
또하나 버스는 도로를 다닐때 한번에 여러명을 태워다니기때문에 통솔하기 좋다. 수학여행을 가는데 집들이 다 삐까뻔쩍하다고 다들 벤츠를 몰고와서 기사와 함께 알아서 가겠다고 하면 .... 통솔하는 교사는 죽을 맛이다....

한놈은 가다가 피곤하다고 어디 휴게소가서 한숨 자고 오고, 어떤 놈을 가다가 지나가는 여자보고 한눈팔다 앞차 들이 받아 사고처리하고 있고, 어떤놈은 대관령으로 오랬더니 추풍령가서 전화하고 있고, ... 이러면 진짜 교사할 맛 안난다.

마찬가지로 일정한 데이타를 한꺼번에 이동시켜야 할 때가 있다. 이때 이 데이타들이 각자 놀고 있다면 CPU 는 돌아버린다. 완전히 스팀받아서 맛이 갈게다. 그러기전에 알아서 이놈들을 한데 묶에서 한꺼번에 움직여줘야한다. 이럴때 사용되는 것이 바로 버스라는 것이다.

8051의 어드레스 핀은 A0 부터 A15 까지 16개의 핀이 있다. 이걸 한번에 묶어서 하나처럼 사용하자는 것이다. 그러면 16개의 핀에서 나오는 신호를 조합하면 전체 몇개가 될까? .... 한번 맞춰봐라. ^^

16개 핀에서 나오는 신호는 각각 0과 1로 될수 있고, 이는 전체 2의 16승만큼의 다른 신호를 만들수 있는 것이다. 이걸 16진수로 고치면 0xFFFF 가 된다. 십진수로 하면, 65535라는 숫자가 된다. 시작은 0부터 시작했다. 65535는 64k 가 된다. 여기서 k 는 보통 쉽게 생각해서 1000 이라고 하긴하지만 정확하게는 1024라는 수치다. 1024는 어디서 왔을까? 2의 10승이다.

64k 라는 수치는 8051에서 어드레스버스가 갈수 있는 모든 경우를 가리킨다. 다시말해서 8051의 어드레스버스는 0부터 시작해서 64k 까지의 영역에 문어발식 확장이 가능하다는 것이다. ^^ 그래서 8051의 메모리범위를 보통 64k 라고 말하고, 이것을 둘로 나눠서 절반은 램을 위해서 쓰고, 절반은 롬을 위해서 쓰기도 한다.

조금 지나치게 설명한 감이 있는데, 버스에 대해서 이정도면 대충 알았으리라 생각한다. 구체적인 내용은 다음번에, 아니면 스스로 알아서 공부하기를... ^^



스택이란 것은 프로그램이 수행되면서 어쩔수 없이 임시적으로 보관해야 하는 값들을 저장하는 임시저장고라 생각하면 된다. 보통 램을 그 용도로 많이 쓴다. PC 를 예로 들자. 열심히 연예인들 사진을 보고 있는데, 갑자기 문이 열렸다. 얼른 아래쪽에 미리 준비한 창을 띄우고 주얼리 이지현의 사진을 얼른 감추자. 그때 PC는 예전의 작업하던 사진 영상에 관한 자료를 일정한 공간에 저장해 두어야 한다. 일정한 정보를 스택에 넣고, 새롭게 뜬 창에 있는 영어단어를 보여준다.

다시 문은 닫히고, 영어 단어창은 아래로, 지현이 사진은 위로... 스택에 담겨 있던 정보는 다시 꺼내지고, 사진은 화면을 채운다. ... 알겠는가? 스택은 들어간 순서대로 나오는 것이 아니라, 가장 늦게 들어간 놈이 가장 먼저 나오는 구조로 되어있다. 사실 예제가 그렇게 딱 들어맞는 예제는 아닌데, 그래도 대충 이해하기에 적당할 듯해서 그냥 넘어간다. (대충대충^^;) 이걸 LIFO 또는 FILO 라고 부른다. Last In First Out 의 약자, 혹은 First In Last Out 의 약자다. 스택에 값을 넣을때 PUSH 라고 하고, 이걸 다시 꺼낼때 POP 이라고 한다.



+------------------------------------------------------+

[끝]
반응형

+ Recent posts