일반적인 목적을 위한 레지스터
모든 일반적인 목적을 위한 레지스터는 16비트로 되어 있으며, 8비트 레지스터로 나누어질 수 있다.
예를 들어, AX는 AL 그리고 AH로 나누어질 수 있다. L은 low를 의미하고, H는 high를 의미한다.
만약 AX에 어떤 값을 부여하면 AH가 그 값의 첫 부분을 포함하고, AL은 마지막 부분을 포함한다.
예를 들어, 만약 AX에 DEAD를 부여하면 AH는 DE를, AL은 AD를 포함할 것이다.
마찬가지로 AH에 DE를, AL에 AD를 부여하면 AX는 DEAD를 포함할 것이다.
종류 구성 용도
AX AH, AL 수학 연산, I/O 연산, INT 21
BX BH, BL Base 또는 Pointer
CX CH, CL 루프 및 반복
DX DH, DL 다양한 데이터, 문자 출력
386이 나왔을 때 4개의 새로운 레지스터가 추가되었는데, 그것은 EAX, EBX, ECX, EDX이다.
여기서 E는 32비트로‘Extended’(확장됨)를 의미한다. 다음 표를 보자. 각 공간은 8비트이다.
그리고 알아둘 것은 EAH 또는 EAL이라는 것은 없다.
| EAX |
+----+----+----+----+
| | | AH | AL |
+----+----+----+----+
| AX |
세그먼트 레지스터
CS(Code Segment) – 코드를 저장하는 메모리 블록
DS(Data Segment) – 데이터를 저장하는 메모리 블록
EX(Extra Segment) – 비디오와 관련된 것을 위해 사용됨
SS(Stack Segment) – 루틴으로부터 리턴 어드레스를 저장하기 위해 프로세서에 의해 사용되는 레지스터
인덱스 레지스터:
SI(Source Index) – 문자열/배열의 소스를 지정하기 위해 사용됨.
DI(Destination Index) – 문자열/배열의 목적지를 지정하기 위해 사용됨.
IP(Instruction Pointer) – 다음 명령의 주소를 저장하고, 그래서 직접적으로 변경될 수 없음.
스택 레지스터:
BP(Base Pointer) – 스택 오퍼레이션을 위해 SP 와 연결되어 사용됨.
SP(Stack Pointer)
특별한 목적을 위한 레지스터:
IP(Instruction Pointer) – 실행된 명령의 offset 를 가지고 있음.
Flag – 분기(branching)를 위해 사용됨. 플래그 레지스터는 크기가 1 비트이다.
출처 : Asm.pdf
초보자들을 위한 어셈블리어 기초-1
written by vangelis(vangelis@wowhacker.org)