로그인 | 회원가입
   이용안내    장바구니    주문조회    마이쇼핑    게시판
상품검색 검색 
아이디  
비밀번호
보안접속 보안접속
회원가입
  아이디찾기
  비밀번호찾기
상품목록
  ARM
  PIC
  AVR
  DSP
  MAXQ
  MSP430
  OTHER
게시판
공지사항
자유게시판
강좌-USB기타
자료실
샘플 기획전
전화: 031-429-0845
팩스: 031-477-1407
운영시간
  09:00 ~ 18:00
 
현재위치: > 게시판 > 자료실
자료실
자료실입니다.


찾기
제목 실습2 0  추천하기
작성자 글쓴이 2012-04-04 10:31:15 369
   
   
3.2 ARM 어셈블리 명령어 실습 2

3.2.1 목적

Lab2를 통해 LDMFD/STMFD, B, BL와 같이 좀더 복잡한 메모리와 브렌치 타입을 사용하는 법을 배움으로써 CPSR에 대한 보다 폭넓은 이해를 얻게 될 것이다.

 

3.2.2 Lab Equipment

          Hardware: PC

          Software: Embest IDE 2004, Windows 98/2000/NT/XP.

 

3.2.3 Lab 2 내용

l        IDE와 친숙해지기 : 메모리 복사하기

 

3.2.4 Principles of the Lab 2

1. ARM Program Status Registers

CPSR(Current Program Status Register)는 모든 프로세서모드에서 엑세스가 가능하다. 이것은 condition code flags, interrupt disable bits, the current processor mode, 그리고 기타 status(상태) 등을 포함하고 있으며 정보를 제어한다. 또한 각각의 예외 모드에는 saved program status register (SPSR)이 있어서 대응 예외(associated exception)가 발생할 때 CPSR의 값을 보호할 수 있다. CPSR와 SPSR의 포멧은 다음과 같다.  

1) The Condition Code Flags

N,Z,C and V(Negative,Zero,Carry and Overflow)bits들은 Condition code flag 알려져 있으며, 종종 Flag 참조한다. CPSR condition code flag 명령을 실행을 것인지 결정하기 위해 최상의 명령에 의해 테스트를 있다. Condition code flag 다음과 같이 보통 확장되는데

·         비교명령 실행(CMN,CMP,TEQ or TST)

·         산술명령어, 논리명령어, 무브(move)명령어를 실행할 , 명령어의 수신지 레지스터(destination register) R15 아니다. 대부분의 이런 명령어들은 플래그방지변체와 플래그설정변체 가지를 가지고 있으며 플래그설정변체는 명령어 연산기호에 S 수식어(S qualifier) 추가함으로써 선택된다. 플래그방지버전은 이런 명령어들 일부에만 있다. 명령어들의 개별적인 설명을 참조해 주기 바란다.

비트와 사용법에 관해서는 ARM 매뉴얼을 참조하시기 바랍니다.

2) 제어비트(Control Bits)

프로그램 상태레지스터(Program Status Register (PSR))의 하단 8비트는 I, F, T 와 M[4:0]을 결합시키는 일을 하기 때문에 총괄적으로 제어비트라고 알려져 있다. 이런 제어비트는 예외가 발생할 때 변하고 프로세서가 특권모드에 있을 때만 소프트웨어에 의해 변경될 수 있다.

  • Interrupt disable bits: I와 F는 인터럽트억제비트(interrupt disable bit)이며 I bit가 설정되면 IRQ인터럽트의 기능을 억제한다.
  • T bit : T bit는 ARM 구조 버전 3 과 그 이하에서, 그리고 버전 4의 T 변체가 아닌 곳에서는 0(SBZ)이어야 한다. ARM과 Thumb 상태사이를 바꿀 수 있는 이런 구조에서는 명령어들이 존재하지 않는다.
  • 모드비트(mode bit) : M0, M1, M2, M4 (M[4:0])는 모드 비트이며 프로세서가 동작하는 곳에서의 모드를 결정한다. 표 3-1을 참조하기 바란다. 

 

                        Table 3-1 ARM Work Modes M [4:0]

 

 

3) Other Bits

프로그램 상태레지스터(program status register)의 다른 비트들은 앞으로의 확장을 위해서 보관된다.  일반적으로 프로그래머들은 코드를 라이팅할 때 이러한 비트들이 수정되지 않도록 조심해야 한다. 실패할 경우 미래의 구조 버전상에 예기치 않은 부작용을 초래하는 코드가 발생할 수도 있다.

1.       실험에서 사용되는 Assembly (as) Syntax and Rules

A label은 일종의 기호로써 바로 콜론(:)이 따라 나온다. 이때 이기호는 활성화된 로케이션 카운터의 현재 값을 나타낸다. 서로 다른 두개의 로케이션을 나타내기 위해 같은 기호를 사용한다면 경고를 받는다. 첫번째 데피니션(definition)가 기타 나머지 데피니션(definition)을 무효화시키기 때문이다.

2) 기타 명령어

(1) LDR(Load Register) 명령어는 <addressing_mode>(ARM 매뉴얼 참조)에 의해 계산된 메모리 어드레스로부터 하나의 워드를 로딩해서 레지스터 <Rd>에 라이팅한다. 어드레스가 워드 배열이 아니면 로딩된 값은 비트값 [1:0]의 8배로 로테이션된다. 

Syntax Format:

LDR <Rd>, =<expression>

“expression” 읽고자 하는 번지.“Rd” target register.

Example:

LDR r1,=0xff

LDR r0,=0xfff00000

 

(2) ADR

ADR은 PC에 저장된 어드레스나 일반적인 레지스터로부터 하나의 레지스트 안에 값을 읽을 수 있다. ADD or SUB 들을 ADR로 대신 할 수 있다.

Syntax Format:

ADR <register><label>

register는 타겟 레지스터 이고, label PC 어드레스나 또는 하나의 어드레스에 기초한 표현이다.

Example:

Label1:

MVO r0,#25

ADR r2,label1

 

(3) .ltorg

.ltorg는 코드의 아래 세그먼트를 위해 워드배열에서 일반적으로 사용한다. (일반적으로 .text 세그먼트이다.)

Syntax Format:

.ltorg

 

3.2.5 단계별 동작

1. Lab A

(1) 새로운 프로젝트를 ARMcode로 만들어 보자.(참조: 3.1.5)

(2) 소스코드를 입력하고 파일이름은 ARMcode.s로 저장한다.

(3) Select ProjectàAdd To Project Files item 하거나 바로 project management창을 클릭한다음 똑 같은 항목을 선택하면 대화창이 뜰 것이다. 이때 방금 형성된 소스파일을 선택한다.

(4) 셋팅을 완료한다.

(5) 오브젝트 코트를 생성한다.

(6) 컴파일을 하면 Debug폴더 밑에 ARMcode.elf가 생성된다.

(7) DebugàRemote를 하고 Download를 하고나서 resister window를 열자.

(8) memory window를 열고 함 들여보자 0x8054-0x80A0 , 0x80A4-0x80F0

(9) 레지스터와 메모리의 변화를 지켜보고 기록한다. 8단계의 메모리의 내용변화를 지켜본다.

STDMFD, LDMFD, LDMIA ,STMIA이 실행될 때 메모리와 레지스터안에서 이들 명령의 파라미터들이 변화되는 것을 보기 바란다. STDMFD, LDMFD, LDMIA, STMIA가 실행하면 명령어의 매개변수가 메모리 또는 레지스터에 가리킨 내용변화를 지켜본다.

2. Lab B

(1) Lab A와 동일

3.2.6 Sample Programs  Lab 2

1. Sample Program  Lab A

 

 

 2. Sample Program  Lab B

 

 

댓글달기 회원에게만 댓글 작성 권한이 있습니다. 회원가입하여 정보공유를 하면 좋겠습니다.
첨부파일
  스팸신고 스팸해제
글쓰기
 
이전글 Thumb instruction
다음글 실습1
 
 
| 회사소개 | 이용약관 | 개인정보취급방침 | 이용안내
Copyright ⓒ 2010 KitKorea All rights reserved.
전화 : 031-429-0845 FAX : 031-477-1407
Contact open@kitkorea.com for more information.
법인명(상호):인터전자 주식회사 주소:14120 경기도 안양시 동안구 흥안대로 112-1 (호계동)
사업자 등록번호 안내 [138-81-28277] / 통신판매업 신고 제 안양 1753호 [사업자정보확인]
개인정보보호책임자 :홍성호(open@kitkorea.com) / 대표자(성명):홍성호
cafe24