20140721 (ARM adc 소스 작성중, asm)

106일차













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

ARM ADC

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



------- 소스


--- adc.h







--- adc.c















-----------

asm

-----------


------- Reg


registers 종류 : data reg , general reg

EAX - EBX - ECX - EDX = Data Reg Or General Reg 라 한다.

여기서 특히 사용 많이 하는 EAX 레지스터를 accumulator 라 한다.

그래서 특히 4개중에 속도가 최고로 빠르다.



각각의 레지스터들은 32 비트이다 .

여기서 EAX는 반을 나누어서 사용한다 . 오른쪽은 AX 라하며 왼쪽은 호칭은 없다

여기서 AX를 또 반을 이용해서 사용하는데 반을 나눈 두가지를 AH AL 이라한다.



Ex) 레지스터 사용되는 형식

int A = 100;

 short B = 100;

 char C = 100;

 여기서 연산을 A= A+1 을 할 경우

 1. mov EAX,A의 주소

 2. add EAX,1      ; EAX=EAX + 1

 3. mov A의 주소,EAX

  B = B+1 을하면 EAX 대신에 AX를 대입하고 A의 주소에 B의 주소를 넣으면 된다.

 C = c+1 을하면 EAX 대신에 AL를 대입하고 A의 주소에 C의 주소를 넣으면 된다.

이렇게 앞의 type에 따라 용량에 맞춰 레지스터가 사용된다.







---- Index Reg


-- Index Reg -  ESI  ,  EDI

1. 주로 주소를 저장하는 레지스터이다.

2. 연산을 할 때도 사용할 수 있다.

3. 데이터를 복사할때 사용하면 편리하다.


-출발점 주소를 ESI 도착점 주소를 EDI로 지정하면

ESI가 가리키는 주소를 EDI가 가르키는 복사된다..


-- Index Reg -  ESP , EBP

ESP = Stack Pointer  EBP = Base Pointer 라 한다.

이 두개의 레지스터는 함수호출할때 사용되며 중요한 레지스터이므로 함부로 설정하지 않는다.




----- Segment Reg


CS

코드 영역 

DS

데이터 영역 

ES

확장 영역

FS

안 중요함 

GS

안 중요함 

SS

스택 영역 





----- EIP (Reg Or instruction pointer)

 - 명령어를 저장하는 주소

 - 다른 CPU에서는 PROGRAM COUNT 라 하고 PC이다. PC 와 EIP는 같은 것이다.



EFLAGS Reg : 상태를 저장하는 레지스터





----- PC Hardware : Input / Output

Memory mapped i/o : ARM/AVR 방식 , C로 접근가능 I/O레지스터가 메모리에 있음

I/O mapped i/o : 인텔방식 C로 접근불가 I/O레지스터가 메모리에 없음  어셈블리로 접근가능

Integrated development environments (IDE)

- test compiler debugger 3개를 합쳐서 통합개발환경이라 한다.










--- 예제 소스





- 명령어


add eax, 158




- directive (라벨, 지시자)


. 으로 시작.




- macro




- mnemonic 니모닉이라고 읽음.


name           mnemonic operand(s)       ; comments


Zerocount:          mov          ecx, 0              ; ecx = 0;

(name은

생략 가능)

(라벨, 지시자)


name만 쓸 수도 있다.




- .386

   .MODEL FLAT

이 두 명령어는 sam 작성시 가장 앞에 써줘야 한다.



- asm으로 작성할 때 .386을 안쓰면 그 하위 버전용으로만 동작한다.

 .586등 높은 수를 사용하면 최신기능을 사용할 수 있으나

 하위 cpu들은 그 기능을 사용할 수 없다.



- 함수 선언

ExitProcess PROTO NEAR32 stdcall, dwExitCode:DWORD

(cpu, reg를 만지고 원래 상태로 되돌리는 기능)



- 헤더파일 포함

INCLUDE io.h



- cr EQU 0dh (h:hexa, 0d = 13)

이 코드는 C로

#define cr 0dh


EQU(이퀄, 같다)


정리하면 cr이란 단어가 나오면 16진수 0D로 변환하라는 뜻.







설정

트랙백

댓글