'분류 전체보기'에 해당되는 글 43건
- 2013.08.27 컴퓨터구조 - CPU(중앙처리장치)
- 2013.08.27 어셈블리어 - CALL,CMP,JMP 함수 1
- 2013.08.27 어셈블리어 - INC,DEC,NOP 3
- 2013.08.27 어셈블리어 - ADD,SUB 함수 1
- 2013.08.27 어셈블리어 - MOV,LEA 명령어 1
- 2013.08.27 어셈블리어 - 레지스터*
- 2013.08.26 어셈블리어 - 어셈블리의 명령어 방식은?
- 2013.08.25 어셈블리어 - 어셈블리언어가 뭐죠?
- 2013.08.25 컴퓨터구조 - 기억장치의 종류
- 2013.08.25 컴퓨터구조 - 하드웨어 5대 장치
CPU 란?
컴퓨터 시스템 전체를 제어하는 장치입니다.
산술 , 논리 연산 장치와 제어 장치, 레지스터로 구성되어 있어
컴퓨터의 모든 행동과 제어,연산은 CPU에서 도맡아 하죠.
* 산술 . 논리 연산장치(ALU)
└ 사칙연산을 수행하는 산술연산과 참과 거짓을 판별하는 논리연산을 수행.
* 제어 장치
CPU 내부에서 일어나는 모든 작업을 통제하고 관리
적절한 순서로 명령을 꺼내고 명령을 해석하여 그 해석에 따라
컴퓨터 시스템의 적절한 부분으로 제어 신호를 전달합니다.
* 레지스터
CPU에서 사용하고 내장되있는 기억(저장)장치입니다.
이로써 컴퓨터 내부의 기억장치를 모두 소개 했습니다.
모든 기억장치의 비교
속도 종류 저장공간
High [레지스터(Register)] Low
↑ [캐시기억장치] ↓
↑ [주기억장치] ↓
Low [보조기억장치] High
'컴퓨터구조/정보기초' 카테고리의 다른 글
정보기초 - 데이터 표현방법(2) (0) | 2013.08.31 |
---|---|
정보기초 - 데이터 표현방법(1) (0) | 2013.08.28 |
컴퓨터구조 - 기억장치의 종류 (0) | 2013.08.25 |
컴퓨터구조 - 하드웨어 5대 장치 (0) | 2013.08.25 |
컴퓨터구조 - 하드/소프트웨어 (0) | 2013.08.25 |
CALL! CMP!
이함수들은 잘 쓰면 정말 재밌는 함수입니다 ㅋㅋㅋ
그리고 어셈블리어를 쓰면서 자주 등장하는 요주의 인물들(?)입니다.
CALL
예제 : CALL 인자1(주소)
CALL 명령어는 인자를 하나만 받습니다.
CALL의 뜻인 '부르다'처럼 인자1를 불러 오는 명령어입니다.
예제
( 00402000 - ADD EAX,100 )
00401000 - CALL 00401000
00402000 주소엔 add 함수가 있고 00401000 주소엔 call 함수가 있습니다.
00401000 주소의 call 문을 실행할 경우 00402000 주소까지 갈 필요없이
00401000 주소를 call문으로 불러 냈으니 그위치의 함수를 실행하게 됩니다.
대충 C언어의 goto문과 비슷한 원리입니다.
CMP
예제 : CMP 인자1,인자2
인자 2개를 비교하는 역활을 합니다.
예제
CMP EAX,200
EAX 안에 들어있는 값이랑 200 이랑 비교를 합니다.
근데 여기서 비교만 하면 아무 의미가 없습니다.
비교 한 후 조건이 따라야하는데 그 조건으로 JMP 명령어가 항상 따라옵니다.
CMP 함수가 나올땐 JMP 함수는 항상 붙어있다 생각하시면 됩니다.
JMP 함수는 특정 지역으로 이동(점프)을 하는것입니다.
예제
CMP EAX,EDX
JE 00401000
(JE = 결과가 같을경우 점프 아닐경우 점프를 수행하지않음)
EAX의 값과 EDX의 값을 비교합니다. 그다음 JMP 함수 중 하나인
JE가 비교한 결과를 보고 점프 수행을 할지 안할지 판단 후 시행하게 되는겁니다.
JMP 함수의 종류
명령어 의미 부등호 플래그 조건 JA jump if (unsigned) above > CF = 0 and ZF = 0 JAE jump if (unsigned) above or eual >= CF = 0 or ZF = 1 JB jump if (unsigned) below < CF = 1 JBE jump if (unsigned) below or equal <= CF = 1 or ZF = 1 JC jump if carry flag set CF = 1 JCXZ jump if CX is 0 CX = 0 JE jump if equal == ZF = 1 JECXZ jump if ECX is 0 ECX = 0 JG jump if (signed) greater > ZF = 0 and SF == OF JZ jump if zero == ZF = 1
감사합니당
'어셈블리어' 카테고리의 다른 글
어셈블리어 - PUSH,POP 함수 (1) | 2013.08.27 |
---|---|
어셈블리어 - INC,DEC,NOP (3) | 2013.08.27 |
어셈블리어 - ADD,SUB 함수 (1) | 2013.08.27 |
어셈블리어 - MOV,LEA 명령어 (1) | 2013.08.27 |
어셈블리어 - 레지스터* (0) | 2013.08.27 |
INC DEC NOP
이 함수 들은 뭔가 귀엽고(?) 재밌는 부분이 있습니다.
특히 NOP 함수는 리버스 엔지니어링 쉽게말하자면 크랙을 제작할때 가장 많이 쓰이는
함수명령어입니다.
INC
예제 : INC 인자1
인자1에다가 1을 더합니다.
C언어에서의 i++ 와 같습니다.
예제
EAX = 10
INC EAX
위 명령어를 실행하고 나서의 EAX 값은 INC 명령어로 인해 +1 이 되었으므로
EAX = 11 이 될 것입니다.
DEC
예제 : DEC 인자1
인자1에다가 1을 뺍니다.
C언어에서의 i-- 와 같습니다.
예제
EAX = 10
DEC EAX
위 명령어 실행 후 결과 값은 EAX = 9 가 되있을 것입니다.
NOP
예제 : NOP
이 함수는 유일하게 인자를 받지않습니다.
특정 자리에 NOP로 수정을 해버리면 그자리는 아무 이벤트를 발생시키지 않습니다.
명령어를 무효화 시킨다는 말도 되고 없에 버린단 말도 됩니다.
이 함수로 크랙,핵쉴드 바이패스 등등 아주 유용 나쁘게 쓰입니다.
'어셈블리어' 카테고리의 다른 글
어셈블리어 - PUSH,POP 함수 (1) | 2013.08.27 |
---|---|
어셈블리어 - CALL,CMP,JMP 함수 (1) | 2013.08.27 |
어셈블리어 - ADD,SUB 함수 (1) | 2013.08.27 |
어셈블리어 - MOV,LEA 명령어 (1) | 2013.08.27 |
어셈블리어 - 레지스터* (0) | 2013.08.27 |
ADD ... SUB ??
이함수는 정말 쉽습니다.
함수의 이름대로 더하고 빼는 역활을 합니다.
ADD
예제 : ADD 인자1,인자2
인자2를 인자1와 더해 나온 값을 인자1에 넣는 명령어 입니다.
인자1 + 인자2 =(삽입)=> 인자1
말이 필요없이 다른 예제를 보여드리겠습니다.
EAX엔 10이 들어있습니다.
ADD EAX,50
명령어를 실행 시키면 EAX엔 무슨 값이 들어가 있을까요?
네! 맞습니다 EAX(10) + 50 =(삽입)=> EAX
답은 60입니다~
SUB
예제 : SUB 인자1,인자2
인자2를 인자1에 빼서 나온 값을 인자1에 넣는 명령어입니다.
ADD명령어와 비슷하지만 더하기,빼기의 유일 차이점이 있습니다.
인자1 - 인자2 =(삽입)=> 인자1
예제
EAX엔 15000이 들어있습니다.
SUB EAX,5000
이 명령어를 실행 시키면 EAX엔 무슨 값이 들어가 있을까요?
비밀 댓글로 달아주세요~ ㅋㅋㅋ
맞추시는분들껜 사은품은... 없지만 작은 축하의 말을 해드릴게요 ㅋㅋ
이해하기 쉽죠??..그렇겠죠? 그럴거에요 여러분들은 똑똑하시니..
'어셈블리어' 카테고리의 다른 글
어셈블리어 - CALL,CMP,JMP 함수 (1) | 2013.08.27 |
---|---|
어셈블리어 - INC,DEC,NOP (3) | 2013.08.27 |
어셈블리어 - MOV,LEA 명령어 (1) | 2013.08.27 |
어셈블리어 - 레지스터* (0) | 2013.08.27 |
어셈블리어 - 어셈블리의 명령어 방식은? (0) | 2013.08.26 |
MOV , LEA 명령어란?
자 이제 본격적인 함수 명령어 공부에 들어갈텐데요.
공부하기 전에 이 명령어들은 컴퓨터가 우리 명령을 알아 들을 수 있도록 해주는 것이라는건
명심해야합니다. 간혹 내가왜 이런걸 공부하고 있지? 라시는분들도 계시기때문에..
MOV
└MOVE 의 줌말
예제 : mov 인자1,인자2
인자2를 인자1으로 값을 넣는 일을 하는 명령어입니다.
레지스터 EAX로 예를 들어본다면
mov eax,100
은 100을 eax 저장공간에 값을 넣는다는 뜻이 됩니다.
그럼 eax엔 100의 값이 저장되있습니다.
주의할 점은 인자하나만으론 이 함수 사용이 안된다는것이고
인자1,2 가 모두 숫자로 이루어 져있으면 안됩니다.
대신 인자1,2에 모두 레지스터로 이루어 져있다면 괜찮습니다.
LEA
예제 : lea 인자1,인자2
인자2를 인자1으로 주소를 넣는 일을 하는 명령어입니다.
레지스터 EAX,ESI로 예를 들어본다면
lea eax, dword ptr ds:[esi]
은 esi를 eax 저장공간에 주소를 넣는것입니다.
그럼 eax엔 esi의 주소가 저장되있습니다.
둘의 차이점을 확실히 아셔야합니다.
많이들 해깔려하시더라구요.
'어셈블리어' 카테고리의 다른 글
어셈블리어 - INC,DEC,NOP (3) | 2013.08.27 |
---|---|
어셈블리어 - ADD,SUB 함수 (1) | 2013.08.27 |
어셈블리어 - 레지스터* (0) | 2013.08.27 |
어셈블리어 - 어셈블리의 명령어 방식은? (0) | 2013.08.26 |
어셈블리어 - 어셈블리언어가 뭐죠? (0) | 2013.08.25 |
레지스터가 뭐죠?
레 지스터 뒤에 * 표시를 한 건 그만큼 중요하단 뜻입니다!
레지스터는 저장공간입니다.
C/C++ 에서는 변수와 같은역활을 하며 메모리에서 연산을 할 때 사용합니다.
기억장치들 중 속도가 가장 빠르며 사용이 편리하지만 이름은 정해져있습니다.
레지스터도 각각의 용도에따라 나뉘어져있는데요.
그 종류를 알아볼거에요
EA(Accumulator)X
흔히 계산용도(사칙연산)로 쓰입니다.
계산할 땐 이 변수를 가장 많이 자주 쓰죠
ED(Data)X
이것도 EAX와 같은 연산으로 쓰입니다.
EAX를 쓰고있어서 부족할 때 땜빵,덤(?) 으로 쓰인다고 합니닼
EC(Count)X
루프문 반복문 을 사용할 때 카운팅의 역활을 한다고 합니다.
C언어로 예를 들어보면 for문에서 변수 i(Index) 의 역활을 하죠.
하지만 카운팅을 하지않을 땐 EAX EDX 처럼 보통 저장공간으로 연산으로
사용해도 무방하다고 합니다.
EBX
이 레지스터도 별거 없어요 ㅋㅋ
카운트 레지스터(ECX)처럼 특정 목적을 가진게 아니라서
연산으로 사용해도 되고 공간이 좀더 필요할때 사용해도 된답니다~
ESI,EDI
이건 약간 이해가 안가시겠지만 그래도 변수라고 생각하시면 쉽습니다.
다만 EAX~EDX는 주로 연산에 사용되지만
ESI는 문자열이나 반복 데이터 처리, 메모리옮기는데 사용됩니다.
"ESI는 시작지 인덱스"
"EDI는 목적지 인덱스 "
이 말이 재대로 축약된 말인거같습니다.
이처럼 어려운게 전혀 없게 설명을 해놨지만 놓친 부분이 있을 수도 있습니다.
그래도 이 정도로 이해만 했다면 충분히 알고 있는거라고 말할 수 있습니다 ^^
'어셈블리어' 카테고리의 다른 글
어셈블리어 - INC,DEC,NOP (3) | 2013.08.27 |
---|---|
어셈블리어 - ADD,SUB 함수 (1) | 2013.08.27 |
어셈블리어 - MOV,LEA 명령어 (1) | 2013.08.27 |
어셈블리어 - 어셈블리의 명령어 방식은? (0) | 2013.08.26 |
어셈블리어 - 어셈블리언어가 뭐죠? (0) | 2013.08.25 |
어셈블리의 명령어 방식은?
"명령어 + 인자"
어셈블리구조 입니다.....
너무 간단해서 당황하셨을듯;; ㅋㅋㅋ
명령어 부분에는 함수, 풀어쓰면 컴퓨터에게 명령을 내릴 단어, 뭔가 있어보이게 예기하자면
옵코드(Opcode)가 들어갈 것 입니다. 뭐 결국은 "명령어 = 옵코드 = 함수(?)" 란 예기입니다.
인자 부분에는 명령에 해당하는 값을 말합니다. 것도 뭔가 있어보이게 예기하자면
오퍼랜드(Operand)가 들어갈 것 입니다. 인자 부분은 최대 2개까지 들어갈수가 있습니다.
눈치가 빠르신분들은 "인자 = 오퍼랜드" 아시겠죠??ㅋㅋ
함수는 모든언어에 함수가 있듯이 어셈블리에서도 컴퓨터에게 명령을 내릴 특정 단어들이 있습니다.
명령어라고 하죠?
근데 어셈블리는 다른 언어들보다 비교적 적고 외우기도 쉬우며 재밌기까지(?) 합니다.
이런 비유를 들긴 좀 그렇다만 북극에 빙하가 있다하면 우린 해수면에 떠오른 부분만 외우면 됩니다.
바다 안에 잠겨있는 것들은 많기때문에 그때그때 필요할 때 구글검색엔진을 쓰면 되요.
전부다 외울 필욘없단 소리죠.
C/C++언어와 어셈블리의 명령어 방식 을 살펴보면
우리가 윗옷을 입을 때로 예를 들어봅시다.
C/C++에선
{
윗옷 입기 시작
옷을 집는다
옷을 입는다
}
로 끝나지만 어셈블리어는 세세한 하나하나 까지 설정을 해야하기 때문에
{
윗옷 입기 시작
옷을 집는다.
왼팔을 옷왼소매에 넣는다
오른팔을 오른소매에 넣는다
머리를 넣는다
올라간 옷을 내린다
}
이처럼 좀 복잡하긴하지만 집중해서 하다보면 성실함? 집중력?을 얻으실수 있을겁니다 ㅋㅋㅋㅋ
'어셈블리어' 카테고리의 다른 글
어셈블리어 - INC,DEC,NOP (3) | 2013.08.27 |
---|---|
어셈블리어 - ADD,SUB 함수 (1) | 2013.08.27 |
어셈블리어 - MOV,LEA 명령어 (1) | 2013.08.27 |
어셈블리어 - 레지스터* (0) | 2013.08.27 |
어셈블리어 - 어셈블리언어가 뭐죠? (0) | 2013.08.25 |
어셈블리언어가 뭐죠?
어셈블리언어는 C언어와 C++ 언어랑 같은 프로그래밍 언어 입니다.
하지만 특정 목적의 프로그램을 만들려고 소스를 적어넣을때엔 C/C++ 언어로 10줄의 소스만 적어넣으면 완성이
되는 프로그램이 어셈블리어에선 30줄 가까이 될 수 도 있기때문에 굉장히 복잡하고
C/C++ 보단 조금 저급한 언어 여서 더 어려울 수 도 있습니다.
그래도 복잡하긴 하지만 기본적인 옵코드 와 알고리즘 , 이동순서 등만 간단히 알면
"아아~ 이렇게 되는구나 *_*!!"
하고 눈이 번쩍 은근 재미를 느낄 수 있으니 포기하지말고 열심히 해봅시다..! ㅋㅋ
어셈블리어에선 제일 기초가 되는 옵코드부터 알아보도록 하겠습니다.
'어셈블리어' 카테고리의 다른 글
어셈블리어 - INC,DEC,NOP (3) | 2013.08.27 |
---|---|
어셈블리어 - ADD,SUB 함수 (1) | 2013.08.27 |
어셈블리어 - MOV,LEA 명령어 (1) | 2013.08.27 |
어셈블리어 - 레지스터* (0) | 2013.08.27 |
어셈블리어 - 어셈블리의 명령어 방식은? (0) | 2013.08.26 |
기억장치에도 종류가?
컴 퓨터 5대 장치들 중 하나인 기억장치는 여러가지 세분장치가 있습니다.
기억장치를 세분류로 보기쉽게(?) 나누어 보았습니다~
①캐시메모리
자주쓰는 메모리들을 임시로 저장하여 필요할때마다 바로 꺼내쓰는 장치
②주기억장치
소프트웨어와 CPU 사이를 연결시켜주는 가장 중요한 작업 공간 역활
주기억장치에는 RAM과 ROM이 있습니다.
ROM = 읽기 전용 / 비휘발성 메모리
종류 |
특징 | ||||||||
Mask ROM |
제조시 기억한것으로 삭제 불가 | ||||||||
PROM |
사용자가 단 한 번만 기록 가능 | ||||||||
EPROM |
자외선을 이용해 기존 데이터 삭제 후 여러번 기록 가능 | ||||||||
EEPROM |
전기적 신호를 이용해 기존 데이터 삭제 없이 여러번 기록 가능 | ||||||||
EAROM |
전기적 가변롬. 모두 지우지 않고 선택적 변경 가능 | ||||||||
Flash EEPROM(플래시 메모리) |
비휘발성과 읽고 쓰기 가능 |
* 비휘발성 메모리 : 전력(전원)이 나가도 저장되 있던 메모리는 없어지지 않습니다..
RAM = 읽기 쓰기 가능 / 휘발성 메모리
종류/특징 |
재충전 |
속도 |
전기소모 |
저장용량 |
가격 |
용도 |
DRAM |
필요 |
느리다 |
적다 |
크다 |
싸다 |
메인메모리 |
SRAM |
불필요 |
빠르다 |
많다 |
작다 |
비싸다 |
캐시메모리 |
* 휘발성 메모리 : 전력(전원)이 나갈 경우 저장되 있던 메모리들은 전부 사라집니다.
대충 RAM ROM 의 특징만 보면 될거같아요 ㅋㅋㅋ
③보조기억장치
비휘발성 장치, 현재 사용하지 않는 프로그램을 저장하는 역활입니당
종류 |
특징 | ||||||||
자기드럼 |
자성체를 입힌 원통을 한쪽 방향으로 회전시키고 그주위에 자기 헤드로 판독기록 | ||||||||
자기코어 |
도넛 모양의 링에 자성물질을 입힌것 파괴메모리(자료를 읽으면 데이터 손실) | ||||||||
자기디스크 |
둥근원형에 자성물질을 입혀 회전시켜 기록 판독(하드디스크,플로피디스크,CD) | ||||||||
광디스크 |
금속표면에 미세한 빛을 사용 정보 기록판독 | ||||||||
자기테이프 |
플라스틱 테이프표면에 자성 물질을 입힌것 |
복잡하죠? ㅋㅋ
자기디스크만 보면될거에요
외우기나 이해하기 힘드시다면 실제 컴퓨터의 동작에 비교하여 공부하시면 좋아요~
예를 들면 컴퓨터 부팅 후 여러작업을 하다가 갑자기 컴퓨터 전원이 나가버리고
다시 부팅을 하면 전 작업들이 모두 날아가있잖아요?? 그게 RAM 의 특징이에요 ㅋ
글구 우리가 게임같은것들을 하드디스크에 다운받는것도 항상 쓰는건아니지만
그때그때 가져와 쓰려고 저장해놓은 거잖아요?? 이런식으로 이해하시면 쉬워요 ^^
'컴퓨터구조/정보기초' 카테고리의 다른 글
정보기초 - 데이터 표현방법(2) (0) | 2013.08.31 |
---|---|
정보기초 - 데이터 표현방법(1) (0) | 2013.08.28 |
컴퓨터구조 - CPU(중앙처리장치) (0) | 2013.08.27 |
컴퓨터구조 - 하드웨어 5대 장치 (0) | 2013.08.25 |
컴퓨터구조 - 하드/소프트웨어 (0) | 2013.08.25 |
하드웨어 5대 장치?
하드웨어들 중엔 각각의 맡은 목표,하는일들이 있는데요.
하드웨어를 우리 신체로 비유하고 소프트웨어는 정신,마음으로 비유한다면
우리 신체 부위별로 눈은 보는것 귀는 듣는것 코는 맡는것 입은 먹는것 등등 모두 각자 할 일들이 있듯이
컴퓨터도 마찬가지 입니다.
그 할 일 중 대표적인 5개의 목표로 나눈 것이 5대 장치 인데요.
① 제어 장치
먼저 제어 장치는 말그대로 컴퓨터를 제어 통제 할 수 있는 장치를 말하는데요.
컴퓨터가 1+1을 계산을 할 때엔 제어장치에서 먼저 신호를 받고 연산장치에게
"야 1+1 계산해" 라고 명령을 주어 제어를 해주는 대충 사람의 부위로 치면 뇌에 해당하는
부분입니다.
② 기억 장치
말그대로 기억을 해주는 장치를 말합니다.
그종류에는 주기억장치 , 보조기억장치가 있는데요. 다음 강좌때 설명 드리겠습니다.
장치는 RAM , 하드디스크 등이 있습니다.
③ 입력 장치
입력장치는 컴퓨터에게 입력신호를 주는 장치입니다.
장치로는 마우스,키보드,스케너 등 사람이 컴퓨터 내부로 입력을 할 수 있게
도와주는 하드웨어를 말합니다.
④ 출력 장치
입력관 반대로 컴퓨터가 사람에게 보여주거나 출력하고 결과물을 빼내 우리에게 보여주는
장치입니다.
장치로는 모니터 , 프린터기 등이 있습니다.
⑤ 연산 장치
컴퓨터 내부의 계산기같은 존재로 산술 논리연산 을 합니다.
대표적인 장치가 CPU 가 있는데요. 다음 시간에 설명드리겠습니다.
'컴퓨터구조/정보기초' 카테고리의 다른 글
정보기초 - 데이터 표현방법(2) (0) | 2013.08.31 |
---|---|
정보기초 - 데이터 표현방법(1) (0) | 2013.08.28 |
컴퓨터구조 - CPU(중앙처리장치) (0) | 2013.08.27 |
컴퓨터구조 - 기억장치의 종류 (0) | 2013.08.25 |
컴퓨터구조 - 하드/소프트웨어 (0) | 2013.08.25 |