1. 문자열 프리미티브 명령
● 문자열 프리미티브(primitive)
- 바이트, 워드, 더블워드의 배열 처리를 위한 Intel 명령 집합에는 5개의 그룹이 있으며, 이를 문자열 프리미티브라고 하지만, 문자 배열로만 국한되지 않는ㄴ다.
- 문자열 명령어는 메모리를 참조하기 위해 ESI, EDI 레지스터를 참조한다.
- ESI, EDI는 유일하게 단일 메모리 피연산자를 사용하여, 문자열과 배열의 처리에 특히 유용
- 보호모드에서는 ESI는 자동적으로 DS가 가리키는 세그먼트에서의 오프셋이 되고, EDI는 자동적으로 ES가 가리키는 세그먼트 내의 오프셋이 된다.
- DS, ES는 항상 같은 값으로 설정되고, 이를 변경할 수 없다.
● 문자열 프리미티브(primitive) 명령
○ MOVSB, MOVSW, MOVSD
- 세 명령은 ESI가 가리키는 메모리 위치에서 EDI가 가리키는 메모리 위치로 데이터를 복사함.
- 두 개의 레지스터들은 자동적으로 방향 플래그 값에 의해 증가 or 감소한다.
- MOVSB : 바이트들의 이동(복사), ESI/EDI 1 감소
- MOVSW : 워드들의 이동(복사), ESI/EDI 2 감소
- MOVSD : 더블워드들의 이동(복사), ESI/EDI 4 감소
○ CMPSB, CMPSW, CMPSD
- 세 명령은 각각 ESI가 가리키는 메모리 피연산자와 EDI가 가리키는 메모리 피연산자를 비교
- 방향 플래그에 의해 ESI, EDI 값이 증가 또는 감소한다.
- CMPSB : 바이트 비교
- CMPSW : 워드 비교
- CMPSD : 더블워드 비교
○ STOSB, STOSW, STOSD
- 세 명령은 각각 AL/AX/EAX의 내용을 EDI가 가리키는 오프셋 위치의 메모리에 저장함.
- EDI는 방향 플래그에 의해 증가 or 감소된다.
○ LODSB, LODSW, LODSD
- 세 명령은 ESI가 가리키는 메모리에서 바이트나 워드를 읽어 AL/AX/EAX에 저장.
- ESI는 방향 플래그에 의해 증가 or 감소된다.
● 문자열 프리미티브(primitive)
- 바이트, 워드, 더블워드의 배열 처리를 위한 Intel 명령 집합에는 5개의 그룹이 있으며, 이를 문자열 프리미티브라고 하지만, 문자 배열로만 국한되지 않는ㄴ다.
- 문자열 명령어는 메모리를 참조하기 위해 ESI, EDI 레지스터를 참조한다.
- ESI, EDI는 유일하게 단일 메모리 피연산자를 사용하여, 문자열과 배열의 처리에 특히 유용
- 보호모드에서는 ESI는 자동적으로 DS가 가리키는 세그먼트에서의 오프셋이 되고, EDI는 자동적으로 ES가 가리키는 세그먼트 내의 오프셋이 된다.
- DS, ES는 항상 같은 값으로 설정되고, 이를 변경할 수 없다.
● 문자열 프리미티브(primitive) 명령
명령어 | 설명 |
MOVSB, MOVSW, MOVSD | 문자열 데이터 이동 : 한 메모리 위치로부터 다른 곳으로 정수를 복사 |
CMPSB, CMPSW, CMPSD | 문자열 비교 : 두 개의 메모리 값들을 비교 |
SCASB, SCASW, SCASD | 문자열 검색 : 정수와 메모리의 내용비교 |
STOSB, STOSW, STOSD | 문자열 데이터 저장 : 메모리에 정수 저장 |
LODSB, LODSW, LODSD | 문자열로부터 누산기로 탑재 : 메모리에서 누산기로 정수를 탑재(AL, AX or EAX) |
○ MOVSB, MOVSW, MOVSD
- 세 명령은 ESI가 가리키는 메모리 위치에서 EDI가 가리키는 메모리 위치로 데이터를 복사함.
- 두 개의 레지스터들은 자동적으로 방향 플래그 값에 의해 증가 or 감소한다.
- MOVSB : 바이트들의 이동(복사), ESI/EDI 1 감소
- MOVSW : 워드들의 이동(복사), ESI/EDI 2 감소
- MOVSD : 더블워드들의 이동(복사), ESI/EDI 4 감소
○ CMPSB, CMPSW, CMPSD
- 세 명령은 각각 ESI가 가리키는 메모리 피연산자와 EDI가 가리키는 메모리 피연산자를 비교
- 방향 플래그에 의해 ESI, EDI 값이 증가 또는 감소한다.
- CMPSB : 바이트 비교
- CMPSW : 워드 비교
- CMPSD : 더블워드 비교
○ STOSB, STOSW, STOSD
- 세 명령은 각각 AL/AX/EAX의 내용을 EDI가 가리키는 오프셋 위치의 메모리에 저장함.
- EDI는 방향 플래그에 의해 증가 or 감소된다.
○ LODSB, LODSW, LODSD
- 세 명령은 ESI가 가리키는 메모리에서 바이트나 워드를 읽어 AL/AX/EAX에 저장.
- ESI는 방향 플래그에 의해 증가 or 감소된다.
'Reverse Engineering > Reversing 이론 설명' 카테고리의 다른 글
[MASM] 고급프로시저 (지역변수 선언, 스택 매개변수, 디렉터리) (0) | 2011.06.22 |
---|---|
[MASM] 어셈블리 언어(MASM)의 기초 (2) | 2011.06.15 |
[NASM] 구조체와 C++ (0) | 2011.06.13 |
[System] 기계어의 구성(명령어 형식 : Instruction Format) (0) | 2011.05.30 |
[System] 바이트 순서 (Little Endian과 Big Endian) (0) | 2011.05.29 |