본문 바로가기

System & Reversing/이론

어셈블리어 2

도서 : x86 프로세서를 위한 어셈블리언어


복습 4


1. 피연산자 유형

 - 변수 이름은 데이터 세그먼트 내의 오프셋을 가리킴 

 ex> reg : 임의의 범용 레지스터 (reg8 : 8비트 범용 레지스터…)

 mem : 8,16,32 비트 메모리 피연산자

 


2. 명령어

 1. 이동

  - mov : 데이터 복사, 두 피연산자끼리 같은 크기여야함


   ex> mov reg,reg

   ** mov명령어는 한 메모리 위치에서 다른 메모리 위치로 데이터를 직접 이동시키는데 사용할 수 x

      레지스터 이용해야함.

      ex> .data

          var1 WORD ?

          var2 WORD ?

          .code

          mov ax(레지스터), var1(메모리)

          mov var2, aw

 

  2. 덧셈 뺄셈

 - INC / DEC : 각각 단일 피연산자에서 +1 / -1

  ex> .data

        myWorld WORD 1000h

        .code

        inc myWord

        mov bx myWord

        dec bx

 - ADD : 소스를 같은 크기의 목적지에 더함

 - SUB : 목적지에서 소스를 뺌

 

 3. 점프 

  - JMP : 코드 레이블로 표시되는 목적지로 무조건 이동


 4. 반복 

  1. LOOP : 문장 블록을 지정된 횟수만큼 반복


  2. ecx : 자동적으로 카운터로 사용, 루프를 반복할 때마다 자동 감소.

   ex> mov ax,0

        mov ecx,5  ; 5번 반복

   L1:

        inc ax   ;ax -1

        loop L1  ; L1으로 돌아가기 (반복)

 

 

3. 연산자*

 -OFFSET : 데이터 레이블의 오프셋을 반환

 -PTR : 피연산자의 선언된 크기를 바꾸어 사용하기 위해 사용

 -TYPE : 변수의 단일 원소의 크기를 바이트 단위로 반환

 -LENGTHOF : 레이블과 같은 줄에 있는 값들로 정의되는 배열의 원소의 개수 반환

 -SIZEOF : LENGTHOF x TYPE 값 반환


4. 디렉티브

 - ALIGN : 변수를 바이트, 워드, 더블워드, 문단의 경계에 정렬

 

5. 포인터 : 변수의 주소를 포함하는 변수

'System & Reversing > 이론' 카테고리의 다른 글

어셈블리어 1  (0) 2019.02.15
프로세서, 레지스터  (0) 2019.02.15
어셈블러, VM  (0) 2019.02.15