2011년5월2일...masm.asm분석, 어셈블리어를 배우는 목적, I/O mapped, ATmega128 I/O포트 초기화함수, 적외선센서실습, Request Intel(R) 64 and IA-32 Architectures Software Developer's Manuals

 

이러다 월화수목금금금…4a46b55d020016m1

 

 

masm.asm 소스 분석

4월29일에 분석한 부분에 이어서..

 

 image

http://sol9501.blog.me/70098497661
또는 “skeleton code”로 검색하면 자세히 알 수 있다.

 

eax - accumulator, 累算器 (다른 레지스터에 비해 속도가 빨라 주로 계산시에 사용한다. (ALU와 가깝다.)
ebx – 주소지정방식의 인덱스로 사용되므로 베이스 레지스터라고 부름.
ecx – 루프를 반복할 때 반복 횟수를 나타내며 시프트 명령어를 실행할 때 시프트 비트수를 나타내는 레지스터로 카운터 레지스터라함.
edx – 데이터 레지스터라고 하며 입출력 명령어와 곱셈과 나눗셈을 실행할 때 사용된다.
        32bit * 32bit는 64bit저장공간에 저장해야 하는데 이 때 eax와 edx를 사용함.
상기 네 개의 레지스터는 모두 범용레지스터로 이전에 배웠던,
esp – 스택포인터
ebp – 스택베이스포인터
eip – 명령포인터
와는 다르게 값을 수정하더라도 CPU에 영향을 끼치지 않는다.

add eax, 숫자 –> 1 cycle 필요 (정확한 것은 아님)
add ebx, 숫자 – > 2 cycle필요 (정확한 것은 아님)
ebx에 비해 eax가 1/2 cycle이 필요해 수행속도가 두 배 빠르다.

 

어셈블리어를 배우는 목적

 image

(설명)

image image

(“C언어에선 왜 이렇게 되는지 설명할 수 없다.” 에 대한 설명)

아래의 cl /Fa옵션으로 컴파일하여 출력된 어셈블리어 파일을 보면,

line 5에 FFFFFF8Fh
line 8에 movsx가 있다.
(바쁘다 바뻐)

image

 

 

image

RAD – 복잡한 프로그램을 짧은 시간내에 개발하는 것이 가능하나 레지스터에 접근하려면 하위 언어들을 다 배워야 한다.
        (고급언어)
어셈블리어 – Application 개발이 어려우나 기계 접근이 쉽고 수행속도 최적화가 쉽다. 레지스터에 접근 용이함.
                (저급언어)
C언어 – 상위 고급언어에 비해 기계와 가까워 임베디트시스템에 적합하고 다른 CPU에 이식하기 쉬워 널리 쓰인다.

 

 

I/O mapped I/O, I/O mapped memory

 

(도식과 설명 추가할 것)

ATmega128 I/O port initialize function

 

  (도식과 설명 추가할 것)

(소스코드)

 

적외선센서 실습

 

  (도식과 설명 추가할 것)

(소스코드)

 

 

Request Intel(R) 64 and IA-32 Architectures
Software Developer's Manuals

(책 신청과정 요약) (스크린샷)

 

 

참조 (Reference)

DSCN2684 DSCN2680 DSCN2681 DSCN2682 DSCN2683