외로운 Nova의 작업실

Assembly 언어 공부 - 11(덧셈, 뺄샘) 본문

Programming/Assembly

Assembly 언어 공부 - 11(덧셈, 뺄샘)

Nova_ 2022. 5. 31. 21:57

안녕하세요. 오늘은 어셈블리어에서의 데이터 전송 명령어와 덧셈과 뺄셈을 정리해 보도록 하겠습니다.

 

데이터 전송 명령어   

어셈블리어에서는 레지스터와 즉시값과 메모리에대해서 데이터를 전송할 수있습니다.

예를 들어 레지스터에서 상수로 데이터를 전송할 수 있습니다.

이를 어떻게 어셈블리에서 구현하는지에대해서 알아보겠습니다.

 

MOV 명령어  

MOV 명령어의 기본적 쓰임은 아래와 같습니다.

MOV 목적지 , 소스

소스에서 목적지로 데이터를 복사하는 명령어 입니다.

MOV는 다음과 같은 규칙에 따라서만 가능합니다.

1. 목적지와 소스는 같은 크기여야합니다.

2. 목적지와 소스가 모두 메모리일 수 는 없습니다.

3. CS, EIP, IP는 목적지 일 수 없습니다.

4. 즉시값이 세그먼트 레지스터에 이동 될 수 없습니다.

 

MOVZX 명령어   

MOVZX(Move with zero-extand) 명령어는 목적지의 데이터 크기가 소스 데이터 크기보다 큰 경우에 유용하게 쓰입니다.

예를 들어 아래와 같은 명령줄이 있다고 했을때,

MOVZX ax, 12h

ax는 16비트이고 12h는 8비트입니다.

이때 남은 8비트는 0으로 채워지게됩니다.

즉, 위 명령줄의 결과는 ax = 0012h 입니다.

 

MOVSX 명령어   

MOVSX(Move with sign-extand) 명령어는 부호가 있는 정수의 연산을 할때, 목적지의 데이터 크기가 소스 데이터 크기보다 큰 경우에 유용하게 쓰입니다.

 

Comments