-
20140721 (ARM adc 소스 작성중, asm)부산IT학원/스마트컨트롤러 2014. 7. 21. 17:06
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로 변환하라는 뜻.
'부산IT학원 > 스마트컨트롤러' 카테고리의 다른 글
20140723 (Assembly 기초, windbg 사용법) (0) 2014.07.23 20140722 (ARM ADC, Assembly 기초, Debug) (0) 2014.07.22 20140717 (ARM Ultrasonic 초음파 모듈) (0) 2014.07.17 20140716 (ARM 초음파 모듈, Ultrasonic) (0) 2014.07.16 20140715 (ARM Timer & Counter) (0) 2014.07.15