과학

심심한데 공학관련된거 올려야징.-어셈블리어2


어제 16진법 에 대해서 설명하고 끝났을 거야

이번엔 8051 마이크로 콘트롤러가 뭔지 알아 보자고 .


8051이 뭐냐면 - 원칩 마이크로 컴퓨터의 일종이야. 기억장치를 내장하고 있지.

그러니까 하나의 독립된 컴퓨터로써 하나의 제어 대상을 위한 제어기로 사용되고 있지.


8051의 메모리는 내부 메모리와 외부 메모리로 구분하여 이해 해야되 이것이 8051을 사용할때 가장 중요한 부분중 하나이지.


내부 메모리는 프로그램 메모리와 데이터 메모리로 또 나뉘어지지.

8051 칩에 내장되어 있는 메모리는 이렇게 되있어



-128 byte 의 내부 메모리 (램)

(1)프로그램 메모리

4K byte 의 프로그램 메모리 (롬)을 제공하지 ,프로그램 메모리로 사용할 수 있는 용량은 64Kb 이고 내부 롬을 사용할 때는 하위4k의 영역을 할당받게되.


(2)데이터 메모리

128 바이트의 데이터 램 영역 (주소 00H~7FH)

128 특수기능 레지스터(*SFR,80H ~ FFH)


여기서 또 데이터 램은 또 3개로 분할되 ... 존나 어렵네..

4개의 8바이트 범용 레지스터 뱅크(32바이트, 00H ~ 1FH)

16 바이트 비트 어드레서블 영역 (20H ~ 2FH)

범용 램 영역 (30H~7FH)


(뭐 그냥 외우는 수밖에 없을거 같어 ...)


그럼 위에 있는 SFR이 뭔지 설명할게.


SFR의 영역의 레지스터들은 CPU가 작업을 수행하면서 그 결과를 저장하기도 하고 작업을 수행하기 위한 방법을 지정하기도 해.


SFR을 분해 해보면 이렇게 또 나뉘어져 .


ACC - 어큐뮤레이터, 산술논리 연산의 중심이 되고


B 레지스터 - 범용 레지스터고 곱하고 나눗셈 하는데 써.


DPTR - 데이터 포인터 레지스터고 DPH와 DPL 로 구성되, 16 비트를 8비트 씩 나누어 가지는거고. 외부메모리에 대한 어드레스 포인터로 사용하지.


PSW - 프로그램 상태어라고 하고 범용 레지스터 뱅크 지정 및 산술연산에 사용해


SP - 스택 포인터이고 최종적으로 데이터가 저장된 스택 영역의 주소를 지정하지.


진짜.... 어렵네 ㅡㅡ..



외부메모리..


원칩 마이크로 컴퓨터에는 칩에 내장된 메모리 용량이 좀 부족하거든.. 그래서 메모리를 확장해야되.

필요에 따라서 롬 아니면 램을 부가적으로 사용해서 프로그램 메모리와 데이터 메모리를 각각 64 Kb 로 사용할 수 있지.


너무 깊이 파고들면 나도 뭔소리인지도 모르겠고 읽는 사람도 머리아프니까 이정도로만 간단하게 구조만 쓸게.




이제 8051 명령어를 설명할게 ㅋㅋㅋ 드디어 어셈블리어가 나오는군.


그전에 미리 알아둬야 할게있어


무슨 숫자앞에 #이 붙으면 그냥 그건 데이터 값이야 이미디어트 상수라고 하지 , 쉽게 말해서 그냥 숫자라는 거지

#이 없어, 그냥 숫자만 붙이면 그건 주소를 말하는거야 , 3AH 는 3A 번지라고 해석하면되.


단, 이미디어트 상수에서 AFH 같은 문자로된 숫자는 문자앞에 0을 붙여 주어야되, #0AFH 처럼.


@ - 액트라고 읽는데 이건 간접주소 지정 방식이야 @가 쓰이는 주소는 R0 R1 DPTR 이것밖에 못쓰는 걸로 알고 있어.


나머지 설명할게 있으면 쓰면서 말할게.


이제 본론으로 넘어가서 데이터 전송명령으로 넘어가지.


MOV - 그냥 무브라고 읽으면 되  뜻을 간단하게만 쓸게 MOV는 여기다 저장해~ 라고 생각하면 될거야,

MOVX - 8051하고 외부 데이터 메모리 사이에 데이터를 전송하려고 써

MOVC - 프로그램 메모리에서 데이터를 읽는 데 쓰지.


기본으로 MOV <dest>,<src>로 표현을해.


<dest>는 어디다 저장할 것인가 ? <src>는 무엇을 저장할 것인가 라고 보면되


그럼 예를 들어 ㅡ MOV 3AH,#2BH 를 어떻게 해석하면 될까?


답은 간단해 3AH 번지에 2BH라는 데이터를 저장하세요. 라는 뜻이야


그럼 두번째, ㅡ MOV 3BA,4AH 는 어떻게 해석을 할까?


두번째 위치는 분명 주소인데 어떻게 주소에다가 주소를 저장하지?

이런 의문이 들 수가 있어. 하지만 답은 간단해,


3BA 번지에다가 4AH번지가 가지고 있는 데이터를 저장하세요, 라고 해석하면 되 .


마지막으로 MOV DPTR,#1234H 는 무엇이라고 해석을 할까?


물론 DPTR에 1234H를 저장하라는 것은 맞아, 그런데 좀더 자세히 보면


DPTR은 DPH와 DPL로 나누어져있다 그랬지 그리고 8비트씩 나누어 가진다 했잖아.

그러니까 DPH에 12H DPL에 34H 가 저장되는 거지.


쓰는 것도 힘드네  다음에는 PSW에 따라 범용 레지스터 주소가 어떻게 되는지 써볼게,

아, MOVX 랑 MOVC 도 같이 .. ㅋㅋ


ㅂㅂ














15개의 댓글

컴공과
2013.06.09
C보다 어셈블리어가 더 쉽다고 하는 게이들은 뭔 개구라냐 ㅋㅋ 애초에 어셈블리어는 인간이 프로그래밍을 쉽게 하기 위해서 만든 언어가 아니라 거의 가장 낮은 레벨의 언어다 병신들아 글고 시발 좀 무슨 여기 컴공과만 100만명 있는줄 알겟네 뭔 개나 소나 다 C배울때 재밌었지 이지랄 하고 있어 ㅋㅋㅋㅋ C로 제대로 된 프로젝트를 좀 해보고 나서 하는 소린지 시발 고딩 새끼들 아는척하는거 골때리네 C만 해도 코딩하기가 얼마나 불편한줄 아냐 이새끼들아 로우 레벨이라 파이쏜 같은 스크립팅 랭귀지보다 19배 빠르긴 해도 그만큼 존나 빡시다 시발 뭐 프린트 몇번 해보고 해커인줄 아네 병신들이 ㅋㅋ
0
BK27
2013.06.10
@컴공과
누가 어셈블리어가 쉽대 어떤 개 씹어먹을 좆같은 호로새끼가 ㅡㅡ
c도 프로그래머 그다지 편의 제공이 안되어있는데
자바랑 c++가 좀 낫고

유입종자들이 중고딩이 많아져서 그래
C로 더하기 빼기 하니까 존나 만만해보이지 ㅋㅋㅋㅋㅋㅋㅋ
0
2013.06.11
@BK27
으으...
씨발 자바를 해야하는데 C/C++만 존나하고 안해서 다잊어먹었ㅌ어
0
컴공과
2013.06.09
글고 글쓴이 내용은 좋은데 일반 게이들이 알아듣기엔 힘든게 많은듯. 나같으면 virtual memory주소 소개해서 메모리에 대한 개념 좀 쉽게 잡아 주고 스택에 대한 개념, 그리고 나서 레지스터들에 대한 얘기로 들어갈 것 같다
0
2013.06.09
어셈블리어가 병신같이 어려워서 좀 더 쉽게 컴파일러프로그램들을 만들어서 C언어니 자바니 여러가지 언어들이 있는건데 뭐하러 굳이 어셈블리어 단계에서 프로그래밍을 하는지 설명좀. 뭐 어셈블리어 단계에서만 할수있는 뭔가가 있는건가? 난 아직 C++랑 자바도 안들어갔고 학업때문에 바뻐서 할시간도없는 초급자인데(네트워크 구성원리도 제대로모를정도), 왜 어셈블리어를 사용하는지 모르겠음. 어차피 지금같이 띄엄띄엄 알바에 내년에 처음부터 제대로 파고드는게 나을거같긴한데. 그래도 궁금하긴하네

음..나중에 복수전공으로 공학분야도 할꺼라 미리 알아두면 좋을거같아서 질문남김.
0
2013.06.10
@Intellect
원래 처음에는 어셈블리어로 프로그램을 만들었는데, 지금은 C언어로 프로그램을 만들거든
그런데 처리속도가 중요 하든지 C언어같은데서 지원하지 않는 기능이 있다고해 그럴때 어셈블리어를 쓰거든.
펌웨어나 임베디드 같은곳에도 쓰이고.
또, 어셈블리어 같은경우 기계어라 배우기도 어렵고 사용하는 사람도 적어서 회사에서 대우를 해준다 하네..

C언어를 배우기 위해서 구지기 어셈블리어를 배울 필요까지는 없어...허지만 같이 공부해도 나쁠건 없지.
0
2013.06.11
@Intellect
처리속도도 처리속도지만 로우레벨 프로그래밍은 C나 어셈블리어를 사용해야함
JAVA같은걸 사용시엔 접근을 못한다고 알고있음
0
2013.06.19
@Intellect
실행파일을 열어보면 binary code를 얻어올 수 있는데
이걸 분석해서 핵이나 여러가지 장난을 칠 수 가 있어

실행파일을 디스어셈블해서 어셈블 코드로 복원할 수 있어
또 어셈블 코드를 c언어로 다시 복원할 수가 있고
이걸 이용해 너가 메모리에 너가 원하는 코드로 삽입하면
소위 말하는 핵을 만들 수 있지

여기서 디스어셈블을 하기 위해서 어셈블리를 알아야 하고
더 low level인 기계어까지 알고 있어야 되

개발쪽도 어셈블리가 중요시 여겨지는 분야가 있는데

메스메티카, 대용량 데이터베이스, 검색 엔진, 게임과 같이 속도가 생명인 작업이야
여기서 게임이 중요한데 실제로 속도를 향상시키기 위해
c에서 일부 느린 연산을 어셈블리로 바꿔서 코딩하기도 해
너가 생각하기에 이게 불편하고 low level이라 어려울지 몰라도

같은 연산을 해도 속도가 10배이상 차이나는 경우도 있어
물론 debug mode 대신 relase mode로 하면 그 차이가 줄어들지만
어셈블리 언어가 c보다 훨씬 빠르지

c가 어셈블리 코드로 바꿔주는 listing file은 보면 c가 얼마나 비효율적인 걸 느끼게 될거야
이런 속도차이를 줄여주는 컴파일러가 있는데 개인이 사기에는 너무 비싼 컴파일러가 있긴 하지
0
김겟똥
2013.06.10
어셈블리어를 설명해놔도 읽을사람은 없을듯 차라리 씨나 자바를 설명하지 html이나. 좀 대중적인걸

어셈블리어를 미친듯이 파는거면 모를까(말이 쉬워 맨날 미친듯이 파는거지, 그런놈 주변에서 한놈도 못봤다)
학부생이 씨 배우면서 곁다리로 공부한 정도의 매우 낮은 어셈블리어 숙련도로도 해결할 수 있는 작업이 있다면,
그런 작업이 있는 곳에서 굳이 어셈블리어를 써서 문제를 해결할 턱이 없다고 생각함.
== 씨 배우다 곁다리로 공부할 정도의 어셈블리어를 쓸 수 있는곳은 없음
0
2013.06.11
@김겟똥
시발 코볼도 보니깐 좆같은데 중고시장서 해킹관련책 주웠는데 어셈블리어 참 좆같아보이더라
0
2013.06.10
읽판 공돌이들은 대부분 전컴쪽이 많구망..
0
2013.06.10
어셈블리어 숙련도가 높다면 존카멕 성님처럼 게임개발을 할때 전력소비까지 고려하는 미친짓을 할수있지
0
2013.06.11
@음란서생
ㅋㅋ 이새낔ㅋ 말재밌다
0
2013.06.12
나도 어셈블리어를 허섭 독학으로 배워서... 보이는것만 보이는데... 32비트로 오면서 extend라는 뜻으로 e라는 접두어가... ebp, esp... 저거 c에서도 디버깅 하다보면 많이 볼거임 ㅇㅇ, 64비트부터는 래지스터 이름이 좀 바뀨ㅏ었던데...
0
2013.06.12
참그리고 movl도...
0
무분별한 사용은 차단될 수 있습니다.
번호 제목 글쓴이 추천 수 날짜
563 [과학] 경계선 지능이 700만 있다는 기사들에 대해 34 LinkedList 12 2024.04.14
562 [과학] 번역)새들은 왜 알을 많이 낳는가? - 후투티의 형제살해 습성... 7 리보솜 3 2024.03.23
561 [과학] 학계와 AI, 그리고 Bitter Lesson (쓰라린 교훈) 26 elomn 35 2024.02.17
560 [과학] 지구의 속삭임, 골든 레코드의 우주 9 Archaea 10 2024.02.16
559 [과학] 잔혹한 과학실험 이야기 <1> 절망의 구덩이 19 개드립하면안됨 37 2024.02.15
558 [과학] 스트레스를 받으면 술이 땡기는 이유 12 동식 16 2024.02.10
557 [과학] 지능은 모계유전이 아니다. 40 울릉특별자치도 35 2024.01.26
556 [과학] 진화를 생각할 때 고려할 것들 23 날씨가나쁘잖아 12 2024.01.17
555 [과학] 학문적(과학적) 접근과 유사 진화심리"학" 26 날씨가나쁘잖아 19 2024.01.15
554 [과학] 호모 사피엔스의 야릇한 은폐된 배란에 대한 남녀 학자의 다... 14 개드립하면안됨 15 2023.12.29
553 [과학] 김영하의 작별인사를 읽고 느낀 점 (스포있음) 21 장문주의 2 2023.11.28
552 [과학] 제4회 포스텍 SF 어워드 공모전 ( SF 단편소설 / SF 미니픽션 ) 2 따스땅 1 2023.11.25
551 [과학] 펌) CRISPR 유전자 가위 치료제 "최초" 승인 12 리보솜 7 2023.11.25
550 [과학] 러시아는 기술산업을 어떻게 파괴시켰는가(펌) 9 세기노비는역사비... 15 2023.11.18
549 [과학] 고양이에 의한 섬생태계 교란과 생물 종의 절멸 (펌) 2 힘들힘들고 6 2023.11.16
548 [과학] 번역) 알츠하이머병 유전자는 어떻게 살아남았는가? 12 리보솜 10 2023.11.15
547 [과학] 『우영우』의 자폐 스펙트럼 장애 개념이 왜곡인 이유 (펌) 47 힘들힘들고 10 2023.11.12
546 [과학] 흑수저 문과충 출신 구글 취직하는 파이썬 특강 -1 14 지방흡입기 11 2023.09.27
545 [과학] 국가별 당뇨 유병율 이거 뭐가 바뀐건지 아는사람? 8 LAMBDA 1 2023.09.27
544 [과학] 물샤워 ㅇㅈㄹ 하는 놈들 봐라 171 철동이 48 2023.09.23