본문 바로가기

컴퓨터/어셈블리어

데이터 관련 연산자와 디렉티브

OFFSET 연산자

  데이터 레이블의 오프셋을 반환한다.

  예제

    .data

    bVal    BYTE    ?

    wVal   WORD   ?

    dVal    DWORD ?

    dVal2  DWORD ?

    .code

    mov    esi, OFFSET bVal        ;ESI = 00404000

    mov    esi, OFFSET wVal        ;ESI = 00404001

    mov    esi, OFFSET dVal        ;ESI = 00404003

    mov    esi, OFFSET dVal2       ;ESI = 00404007


ALIGN 디렉티브

  변수를 바이트, 워드, 더블워드, 또는 문단의 경계에 정렬한다.

  예제

    bVal    BYTE     ?        ; 00404000

    ALIGN  2

    wVal   WORD    ?        ; 00404002

    bVal2  BYTE     ?        ; 00404004

    ALIGN  4

    dVal    DWORD  ?        ; 00404008

    dVal2  DWORD  ?        ; 0040400C


PTR 연산자

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

  예제

    .data

    myDouble  DWORD  12345678h

    .code

    mov  ax, WORD PTR myDouble


TYPE 연산자

  변수의 단일 원소의 크기를 바이트 단위로 반환한다.

  예제

    .data

    var1  BYTE     ?

    var2  WORD    ?

    var3  DWORD  ?

    var4  QWORD  ?

 수식

값 

 TYPE val1 

 1
 TYPE val1 

 2

 TYPE val1  4 
 TYPE val1  8

LENGTHOF 연산자

  레이블과 같은 줄에 있는 값들로 정의되는 배열에 있는 원소의 개수를 반환한다.

  예제  

    .data

    byte1    BYTE     10, 20, 30

    array1   WORD    30 DUP(?), 0, 0

    array2   WORD    5 DUP(3 DUP(?))

    array3   DWORD  1, 2, 3, 4

    digitStr  BYTE     "12345678", 0 

 수식 

 값 

 LENGTHOF byte1 

 3 

 LENGTHOF array1

 30 + 2

 LENGTHOF array2

 5 * 3 

 LENGTHOF array3

 4

 LENGTHOF digitstr

 9 


SIZEOF 연산자

  LENGHOF와 TYPE을 곱한 값을 반환한다.

  예제

    .data

    intArray    WORD    32    DUP(0)

    .code

    mov    eax, SIZEOF  intArray            ; EAX = 64


LABEL 연산자

  저장공간을 할당하지 않고도 레이블을 삽입하고 그것에 크기 속성을 주게 한다.

  예제

    .data

    val16    LABEL    WORD

    val32    DWORD   12345678h

    .code

    mov     ax, val16                   ; AX = 5678h

    mov     dx, [val16 + 2]           ; DX = 1234h

  두 개의 작은 정수로부터 큰 정수를 만들 필요가 있을 때 사용

  예제

    .data

    LongValue    LABEL    DWORD

    val1    WORD    5678h

    val2    WORD    1234h

    .code

    mov    eax, LongValue                  ; EAX = 12345678h


















'컴퓨터 > 어셈블리어' 카테고리의 다른 글

덧셈과 뺄셈  (0) 2013.01.25
데이터 전송 명령어  (0) 2013.01.22
기호상수  (0) 2013.01.14
데이터 정의  (0) 2013.01.09
어셈블리 언어의 기초  (0) 2013.01.08