본문 바로가기

컴퓨터/어셈블리어

데이터 전송 명령어

피연산자 유형

  즉시값, 레지스터, 메모리


MOV 명령어

  소스 피연산자로부터 목적지 피연산자로 데이터를 복사한다.

  MOV destination, source

  규칙

    두 피연산자는 같은 크기이어야 한다.

    두 피연산자가 모두 멩모리 피연산자일 수는 없다.

    CS, EIP, IP는 목적지 피연산자일 수 없다.

    즉시값은 세그먼트 레지스터로 이동될 수 없다.

  메모리에서 메모리로

    직접 이동은 불가능 대신 아래와 같은 방법 사용

    .data

    var1 WORD ?

    var2 WORD ?

    .code

    mov ax, var1

    mov var2, ax


정수의 제로/부호 확장

  작은 값을 큰 값으로 복사

  부호없는 정수

    .data

    count WORD 1

    .code

    mov ecx, 0

    mov cx, count        ecx = 00000001h

  부호있는 정수

    .data

    signedVal SWORD -16        ; FFF0h(-16)

    .code

    mov ecx, 0

    mov cx, signedVal              ; ECX = 0000FFF0h(+65520) 문제 발생

    mov ecx, 0FFFFFFFFh

    mov cx, signedVal              ; ECX = FFFFFFF0h(-16)


MOVZX  명령어

  소스 피연산자를 목적지 피연산자로 복사하고 값을 16비트 또는 32비트로 제로확장한다.

  .data

  byte1 BYTE 9Bh

  word1 WORD 0A69Bh

  .code

  movzx eax, word1            ; EAX = 0000A69Bh

  movzx edx, byte1             ; EDX = 0000009Bh

  movzx cx, byte1              ; CX = 009Bh


MOVSX 명령어

  소스 피연산자의 내용을 목적지 피연산자로 복사하고 값을 16비트 또는 32비트로 부호확장한다.

  mov 0A69Bh

  movsx eax, bx                ; EAX = FFFFA69Bh

  movsx edx, bl                ; EDX = FFFFFF9Bh

  movsx cx, bl                  ; CX = FF9Bh


LAHF(load status flags into AH) 명령어

  EFLAGS 레지스터의 하위 바이트를 AH로 복사한다.

  Sign, Zero, Carry 보조 Carry, Parity 플래그가 복사된다.

  .data

  saveflags BYTE ?

  .code

  lahf                            ; load flags into AH

  mov saveflags, ah            ; save them in a variable


SAHF(store AH into status flags)

  AH를 EFLAGS 레지스터의 하위 바이트로 복사한다.

  mov ah, saveflags            ; load saved flags into AH

  sahf                           ; copy into Flags register


XCHG(exchange data) 명령어

  두 피연산자의 내용을 서로 교환한다.


직접 오프셋 피연산자

  변수의 이름에 변위를 더하여 직접 오프셋 피연산자를 만들 수 있다.

  .data

  arrayB BYTE 10h, 20h, 30h, 40h, 50h

  .code

  mov al, arrayB            ; AL = 10h

  mov al, [arrayB+1]      ; AL = 20h

  mov al, [arrayB+2]      ; AL = 30h

  워드와 더블워드 배열인 경우 2와 4를 더한다.

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

데이터 관련 연산자와 디렉티브  (0) 2013.01.25
덧셈과 뺄셈  (0) 2013.01.25
기호상수  (0) 2013.01.14
데이터 정의  (0) 2013.01.09
어셈블리 언어의 기초  (0) 2013.01.08