관리 메뉴

Jsecurity

어셈블리언어의 특징 본문

프로그래밍언어/리버싱 입문

어셈블리언어의 특징

Great king 2019. 3. 19. 16:16

 프로그래밍 절차

# 프로그래밍 언어

A = A + 1   (고급언어)


변수 A에 1을 더한다.


MOV  AX, A                  

ADD  AX, 1     (저급언어)

MOV  A, AX                  


변수 A를 AX 레지스터로 가져온다  

AX 레지스터의 내용에 1을 더한다.

AX 레스스터의 내용을 A에 저장한다.


10100001  00000010  00000000           

00000001  00000000  00000000 (기계어)

10100011  00000010  00000000            

 어셈블리어 코드를 명령어 형식에 따라 기  계어 코드로 변환하면 9바이트의 실행코드가 만들어진다.





# 고급언어와 저급언어의 특징 


고급언어의 특징

  프로세서 종류에 상관없이 실행할 수 있다.

프로세서에 대한 사전 지식이 필요 없다.
문법이 간단하고 이해하기가 쉽다.
프로그램 코드의 양이 적고 디버깅이 용이하다
컴파일러 성능에 따라 프로그램의 성능이 용이하다

 어셈블리어의  특징

  동일한 종류의 프로세서만 실행할 수 있다.

프로세서에 대한 사전 지식이 필요하다.
컴퓨터에서 실행하는 과정 등을 이해하기 쉽다.
컴퓨터의 성능에 최적인 프로그램을 작성할 수 있다.



프로그래밍언어는

고급언어 또는 저급언어로 만들어

컴퓨터가 인식할수 있는 기계어로 변환되어 인식한다.




# 컴파일러와 어셈블러


Compiler

고급 언어 프로그램을 입력

구문 오류 검사

목적코드(Object code) 생성

고급 언어의 한 문장은 여러 개의 기계 코드 명령어로 변환됨


Assembler

어셈블리어를 기계어 형태의 오브젝트 코드로 해석해 주는 컴퓨터 언어번역  프로그램

어셈블리어 프로그램을 입력

하나의 어셈블리어 명령어는 하나의 기계 코드에 대응



# 어셈블러프로그램 예시 (SASM 프로그램이용)









Comments