Hongfluenza

어셈블리 명령어 모음 본문

STUDY/REVERSING

어셈블리 명령어 모음

Hongfluenza 2017. 9. 11. 19:52

MOV


데이터를 이동하는 명령어



MOV A,B : [방향 : A←B ] B에서 A로 데이터를 이동



레지스터 ↔ 레지스터 간의 데이터 이동 가능



메모리 주소 ↔ 메모리 주소 간의 데이터 이동 불가능  

(메모리와 메모리 사이의 데이터 이동은 MOVS를 이용함)





PUSH


STACK에 값을 넣음


(STACK이란 데이터를 임시적으로 저장했다가 필요할 때 꺼내쓰는 임시 기억장치


쉽게 생각해 밑이 막힌 상자라고 생각하면 쉽다 ! 


가장 먼저 저장되는 데이터는 가장 마지막에 나옴(LIFO : 후입선출))





4byte만큼 복사함



ESP의 값이 4만큼 줄어들고, 이 위치에 새로운 값이 채워짐





POP

 


ESP 레지스터가 가리키고 있는 위치의 스택공간에서 4byte만큼을


Destination 피연산자에 복사하고 ESP 레지스터의 값을 4만큼 증가시킴





LEA(Load Effective Address)


주소를 가져오는 명령어


Source 피연산자의 유효 주소를 계산하여 Destination 피연산자에 복사함


간단히 주소를 알아내서 복사하는 명령어




JUMP


Jump Address - 해당 주소로 이동


JE [ Jump If Equal] = JZ [ Jump If Zero ] - Cmp a==b면 이동 [ ZF(Zero Flag)=1 ]


JA [ Jump Above ] - Cmp a>b면 원하는 레이블로 이동


JB [ Jump Below ] - Cmp a<b면 원하는 레이블로 이동


JNE [ Jump if Not Equal ] - Cmp a!=b면 해당 주소로 이동


JAE [ Jump If Above or Equal ] - Cmp a>=b면 해당 주소로 이동


JBE [ Jump If Below or Equal ] - Cmp a<=b면 해당 주소로 이동





INC


INC A [ Increase A ] - A의 값을 1 증가시킴






DEC


DEC A [ Decrease A ] - A의 값을 1 감소시킴






DIV



DIV ECX - EAX/ECX 연산을 수행하여 몫을 EAX 레지스터에 저장함





ADD


ADD A B - A+B한 결과를 A에 저장함






SUB


SUB A B - A-B한 결과를 A에 저장함






TEST


TEST A B - A와B를 AND 연산함





XCHG


XCHG A B - A에 있는 값과 B에 있는 값을 바꿈



'STUDY > REVERSING' 카테고리의 다른 글

ASSEMBLY : 어셈블리어  (0) 2019.09.22
함수 프롤로그, 함수 에필로그, 스택 프레임(Stack Frame)  (0) 2019.08.17
[REVERSING] 진수 변환  (0) 2018.03.14