*참고 서적
- 알기 쉬운 어셈블리.
- 해킹 파괴의 광학.
를 참조 하였다고 하네요. )
* 레지스터.
2003 년에 배운 기억이 가물가물 나네요..
레지스터라는 것은 CPU 내부에서 사용되는 기억장치.. (프로그램으로 치면 변수)로서 어셈블리어에서는 각각의 레지스터가 고유의 특성을 가지고(int, char 등과 같이.. ) CPU의 용량에 따라서 여러가지 형태로 쓰이게 됩니다.
아래에는 그 레지스터의 종류와 설명, 실제 레지스터 명이 정리가 되어 있습니다.
크게 계산하거나 할때(범용)는 A, B, C, D 를 주로 사용하고 크기에 따라 앞 뒤에 붙죠..
여기에 32bit 이면 E?X,
16bit이면 ?X
상위 8bit 이면 ?H (high)
하위 8bit 이면 ?L (Low) 로 사용한답니다.
A, B, C, D는 accumulaotr, base, counter, data 의 앞 머리로 보면 편해요
범용 레지스터 32Bit 16Bit 상위8Bit 하위8Bit 기능 EAX AX AH 누산기(Accumulator, 중간 결과를 저장해 놓음)레지스터라 불리며, 곱셈이나 나눗셈 연산에 중요하게 사용 EBX BX BH BL 베이스 레지스터라 불리며 메모리 주소 지정시에 사용됩니다. ECX CX CH CL 계수기(Counter)레지스터라 불리며, Loop등의 반복 명령에 사용됩니다. EDX DX DH DL 데이터(Data)레지스터라 불리며 곱셈, 나눗셈에서EAX와 함께 쓰이며 부호 확장 명령 등에 사용됩니다. ESI SI 다량의 메모리를 옮기거나 비교할 때 그 소스(Source)의 주소를 가진다 EDI DI 다량의 메모리를 옮기거나 비교할 때 그 목적지의 주소를 가리킨다. ESP SP 스택 포인터로 스택의 최종점을 저장한다. Push, Pop 명령에 의해 늘었다 줄었다 한다. EBP BP ESP를 대신해 스택에 저장된 함수의 파라미터나 지역 변수의 주소를 가리키는 용도로 사용된다 상태 레지스터 32Bit 16Bit 기능 EIP IP EIP는 현재 실행되고 있는 프로그램의 실행코드가 저장된 메모리의 주소를 가리키는 레지스터로 프로그램의 실행이 진행됨에 따라 자동으로 증가하고 프로그램의 실행 순서가 변경되는 제어 문이 실행될 때 자동으로 변경된다. 그래서 직접 접근해서 값을 저장하거나 읽거나 하는 일이 없기 때문에 응용 프로그램에서는 손 댈 일이 없는 레지스터이다 EFLAGS FLAGS 비트 단위의 플래그 들을 저장하는 레지스터로 아주 특별한 용도로 사용된다 16Bit 기능 ES 보조 세그먼트 레지스터다. 두 곳 이상의 데이터 저장영역을 가리켜야 할 때DS와 함께 사용된다. 하지만 32비트 프로그램에서는 DS와 ES가 같은 영역을 가리키고 있기 때문에 굳이 신경 쓰지 않아도 된다. CS 코드 세그먼트를 가리키는 레지스터. SS 스택 세그먼트를 가리키는 레지스터. DS 데이터 세그먼트를 가리키는 레지스터. FS 보조 세그먼트 레지스터. FS, GS는 286 이후에 추가된 것으로 운영체제를 작성하는 게 아니라면 없듯이 여겨도 된다 GS
세그먼트 레지스터
// 명령
출처 : Instruction Set Summary (명령어 요약)
http://blog.paran.com/alotta/13998621
* Segment Register Instructions (세그먼트 레지스터 명령)
세그먼트 레지스터 명령은 파(원거리) 포인터 (far pointer, segment address)가 세그먼트 레지스터내로 로드되게 한다.
LDS - Load far pointer using DS
LES - Load far pointer using ES
LFS - Load far pointer using FS
LGS - Load far pointer using GS
LSS - Load far pointer using SS
* Flag Control (EFLAG) Instructions (플랙 제어 명령)
플랙 제어 명령은 EFLAGS 레지스터의 플랙에 작동한다.
STC - Set carry flag
CLC - Clear the carry flag
CMC - Complement the carry flag
CLD - Clear the direction flag
STD - Set direction flag
LAHF - Load flags into AH register
SAHF - Store AH register into flags
PUSHF/PUSHFD - Push EFLAGS onto stack
POPF/POPFD - Pop EFLAGS from stack
STI - Set interrupt flag
CLI - Clear the interrupt flag
'Study.. > etcs..' 카테고리의 다른 글
PLC (Programmable Logic Controller) (2) | 2010.03.05 |
---|---|
sorting (0) | 2010.03.05 |
DMA 동작모드 (0) | 2010.02.28 |
tree traverse (0) | 2010.02.28 |
더 안전한 로그인. NateOn 에 OTP 서비스.. (0) | 2009.09.15 |