이론/[System 이론]

어셈블리어란 ? ( 간단한 문법 소개 )

환석이 2023. 3. 12. 16:51

출처 : https://www.inflearn.com/course/%EC%96%B4%EC%85%88%EB%B8%94%EB%A6%AC%EC%96%B4-%EB%B0%B0%EC%9A%B0%EA%B8%B0

 

 

 

어셈블리어(Assembly language)

 

 컴퓨터의 하드웨어를 직접 다루기 위해 개발된 저급 프로그래밍 언어

 어셈블리어에서는 기계어 명령어 하나당 하나의 명령문이 있으며, 이 명령문은 CPU에서 직접 실행됩니다. 어셈블리어 명령어는 CPU가 처리할 수 있는 최소한의 동작을 수행하며, 이러한 명령어를 이용해 CPU가 특정한 작업을 수행하도록 할 수 있습니다.

 

 어셈블리어는 고급 언어보다 저수준이기 때문에, 메모리와 레지스터에 직접 접근할 수 있고, 하드웨어를 조작하는 작업이 가능합니다. 따라서 어셈블리어는 시스템 프로그래밍, 임베디드 시스템 및 하드웨어 드라이버 등의 작업에 많이 사용됩니다.

 

 어셈블리어는 일반적으로 고급 언어보다 작성이 복잡하고, 이식성이 낮은 단점이 있습니다. 그러나, 어셈블리어를 사용하면 메모리와 하드웨어에 직접 접근할 수 있기 때문에, 보다 효율적인 코드를 작성할 수 있습니다.

 


 

어셈블리어 문법

어셈블리어는 명령어들의 집합으로 이루어져 있으며, CPU에서 직접 실행된다. 

 

다음은 대표적인 명령어들을 조사해 보았다.

 

 

 

 

1. MOV (Move) : 레지스터와 메모리 간의 데이터 이동을 수행합니다. 레지스터의 값을 메모리로, 메모리의 값을 레지스터로 이동시킬 수 있습니다. MOV 명령어는 대개 다음과 같은 형태로 사용됩니다.

MOV 목적지, 소스

여기서 목적지는 데이터를 저장할 대상이 되는 레지스터나 메모리 주소이며, 소스는 이동할 데이터가 위치하는 레지스터나 메모리 주소입니다.

 

 

 

 

2. ADD(Addition) : 덧셈 연산을 수행합니다. ADD 명령어는 다음과 같은 형태로 사용됩니다.

ADD 대상, 추가할 값

여기서 대상은 덧셈을 수행할 레지스터나 메모리 주소이며, 추가할 값은 덧셈에 사용할 값입니다.

 

 

 

3. SUB(Subtraction) : 뺄셈 연산을 수행합니다. SUB 명령어는 ADD 명령어와 비슷한 형태로 사용됩니다.

SUB 대상, 뺄 값

여기서 대상은 뺄셈을 수행할 레지스터나 메모리 주소이며, 뺄 값은 뺄셈에 사용할 값입니다.

 

 

 

4. CMP (Compare) : 값을 비교합니다. CMP 명령어는 다음과 같은 형태로 사용됩니다.

CMP 값1, 값2

여기서 값1과 값 2는 비교할 값을 나타내며, CMP 명령어는 이 두 값의 크기를 비교합니다. 비교 결과는 이후 조건 분기 명령어에서 사용됩니다.

 


 

5. JMP (Jump) : 프로그램 실행 순서를 변경합니다. JMP 명령어는 다음과 같은 형태로 사용됩니다.

JMP 목적지

여기서 목적지는 프로그램 실행 순서를 변경할 위치를 나타내는 레이블이나 메모리 주소입니다. JMP 명령어는 프로그램 실행 순서를 이동시켜서, 목적지로 이동하게 됩니다.

 

 

 

 

이 외에도 어셈블리어에는 다양한 명령이 있다. 

 

LEA : A 의 값을 B의 값으로 연산을 포함하여 복사

 

CALL : 함수 호출 했다가 다시 원래 위치로 돌아올 때 사용

JMP 랑 다른 점은 RET에 저장하고 원래 상태로 돌아온다는 것

 

NOP : 아무 작업도 하지 않는 명령어, 1 Byte의 빈 공간을 차지

 

RET : 현재 함수가 끝난 뒤에 돌아갈 주소 지정을 위해 사용 

 

PUSH : 스택에 해당 값 삽입

 

POP : 스택에 있는 값 제거  

 

LEAVE : 현재까지의  메모리 스택을 비우고 EBP 를 자신을 호출한 메모리 주소로 채움, 실행 중인 함수를 종료하기 위해 정리하는 작업에 사용

 


 

출처 : https://com24everyday.tistory.com/227

 

어셈블리어 문법 간단 정리

오늘은 리버싱을 할 때 많이 보는 어셈블리어를 간단하게 살펴보도록 하겠습니다. 예전에 처음 배울 땐 참 많이 헷갈렸었는데 이제는 잘 알아보게 됐으니... 정리를 해야겠어요 -MOV A B : B의 값을

com24everyday.tistory.com

-CHATGPT