외로운 Nova의 작업실
Assembly 언어 공부 - 11(덧셈, 뺄샘) 본문
안녕하세요. 오늘은 어셈블리어에서의 데이터 전송 명령어와 덧셈과 뺄셈을 정리해 보도록 하겠습니다.
데이터 전송 명령어
어셈블리어에서는 레지스터와 즉시값과 메모리에대해서 데이터를 전송할 수있습니다.
예를 들어 레지스터에서 상수로 데이터를 전송할 수 있습니다.
이를 어떻게 어셈블리에서 구현하는지에대해서 알아보겠습니다.
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) 명령어는 부호가 있는 정수의 연산을 할때, 목적지의 데이터 크기가 소스 데이터 크기보다 큰 경우에 유용하게 쓰입니다.
'Programming > Assembly' 카테고리의 다른 글
Assembly 언어 공부 - 13(덧셈, 뺄셈 실습) (0) | 2022.07.28 |
---|---|
Assembly 언어 공부 - 12(실습 환경) (0) | 2022.07.26 |
Assembly 언어 공부 - 10(어셈블리어의 기본요소) (0) | 2022.05.29 |
Assembly 언어 공부 - 9(demo5,6,7) (0) | 2022.05.27 |
Assembly 언어 공부 - 8(demo4) (0) | 2022.05.26 |
Comments