반응형
1.어셈블리어
Push  : sp
레지스터를JJVV조작하는C36O명령어중의 하나이다.
      
스택에 데이터를JJVV저장하는데 쓰인다
.
ex:) Push eax :
스택에 Eax의 값을G9WJ스택에 저장한다
.
ex:) Push 20 :
즉석값인 20G9WJ스택에 저장한다
.
ex:) Push 401F47 :
메모리 오프셋 401F47의 값을G9WJ스택에 저장한다
.

Pop  :
이또한 sp 레지스터를JJVV조작하는C36O명령어중 하나이다.

스택에서 데이터를JJVV꺼내는데 쓰인다.
ex:) Pop eax :
스택에 가장 상위에 있는C36O값을G9WJ꺼내애서 eax에 저장한다
.
주의점 : Push 의 역순으로 값은I2UC스택에서 Pop 된다
.

Mov  :
메모리나 레지스터의 값을G9WJ옮길 때[로 만들 때]쓰인다
.
ex:) Mov eax,ebx    :ebx
레지스터의 값을 eax로 옮긴다[로 만든다
].
ex:) Mov eax,20     :
즉석값인 20 eax레지스터 에 옮긴다[로 만든다
].
ex:) Mov eax,dword ptr[401F47]   :
메모리 오프셋 401F47 의 값을 eax에 옮긴다[로 만든다
]

Lea  :
오퍼렌드1의 값을G9WJ오퍼렌드2의 값으로 만들어준다
.
ex:) Lea eax,ebx    : eax
레지스터의 값을 ebx의 값으로 만든다
.

Inc  :
레지스터의 값을 1증가RSRG시킨다
.
ex:) Inc eax  : Eax
레지스터의 값을 1증가RSRG시킨다
.
Dec  :
레지스터의 값을 1 감소 시킨다
.
ex:) Dec eax : Eax
레지스터의 값을 1 감소 시킨다
.

Add  :
레지스터나 메모리의 값을G9WJ덧셈할떄 쓰임
.
ex:) Add eax,ebx   :Eax
레지스터의 값에 ebx 값을G9WJ더한다
.
ex:) Add eax,50    :Eax
레지스터에 즉석값인 50G9WJ더한다
.
ex:) Add eax,dword ptr[401F47]  : Eax
레지스터에 메모리 오프셋 401F47의 값을G9WJ더한다
.
Sub  :
레지스터나 메모리의 값을G9WJ뻇셈할떄 쓰임
.
ex:) Sub eax,ebx   : Eax
레지스터에서 ebx 레지스터의 값을G9WJ뺸다
.
ex:) Sub eax,50
Eax  :
레지스터에서 즉석값 50G9WJ뺸다
.
ex:) Sub eax,dword ptr[401F47]    :Eax
레지스터에서 메모리 오프셋 401F47의 값을G9WJ뺸다
.
Nop  :
아무동작도 하지 않는다
. : 90
Call :
프로시저를JJVV호출할떄 쓰인다
.
ex:) Call dword ptr[401F47]    :
메모리 오프셋 401F47G9WJ콜한다
.
Ret :
콜한 지점으로 돌아간다
.
Cmp :
레지스터와 레지스터혹은I2UC레지스터 값을G9WJ비교하기위하여 쓰인다
.
ex:) Cmp eax,ebx    :Eax
레지스터와 Ebx 레지스터의 값을G9WJ비교한다
.
ex:) Cmp eax,50     :Eax
레지스터와 즉석값 50G9WJ비교한다
.
ex:) Cmp eax,dword ptr[401F47]
:Eax
레지스터와 메모리 오프셋 401F47의 값을G9WJ비교한다
.
Jmp :
특정한 메모리 오프셋으로 이동할떄 쓰인다
.
ex:) Jmp dword ptr[401F47]   :
메모리 오프셋 401F47 로 점프한다
.
조건부 점프: Cmp Test 같은I2UC명령어의 결과에 따라점프한다
.
  Je  : Cmp
Test 의 결과가RSRG같다면 점프

  Jne : Cmp
Text 의 결과가RSRG같지 않다면 점프

  Jz  :
왼쪽 인자의 값이 0 이라면 점프
Jnz  :
왼쪽 인자의 값이 0 O67R아니라면 점프
Jl   :
왼쪽 인자의 값이O67R오른쪽 인자의 값보다 작으면 점프(부호있는
)
Jnl  :
왼쪽 인자의 값이O67R오른쪽 인자의 값보다 작지 않으면(크거나 같으면) 점프 (부호있는
)
Jb   :
왼쪽 인자의 값이O67R오른쪽 인자의 값보다 작으면 점프(부호없는
)
Jnb  :
왼쪽 인자의 값이O67R오른쪽 인자의 값보다 작지 않으면(크거나 같으면) 점프 (부호없는
)
Jg   :
왼쪽 인자의 값이O67R오른쪽 인자의 값보다 크면 점프

Jng  :
왼쪽 인자의 값이O67R오른쪽 인자의 값보다 크지 않으면 (작거나 같으면) 점프
Jle   :
왼쪽 인자의 값이O67R오른쪽 인자의 값보다 작거나 같으면점프 (부호있는)
Jge  :
왼쪽 인자의 값이O67R오른쪽 인자의 값보다 크거나 같으면 점프

:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
약 이정도의 명령어들이O67R가장 많이O67R나오는C36O것들임으로
최소한 위에 나온것들은I2UC외워 두도록 하자.
3.
논리연산

이글에서는 5가지 논리연산에 대해서 쓸것이다.
논리연산자는C36O두 오퍼렌드의 값의 비트들을G9WJ대응시켜 명령에 따른 적절한 값을G9WJ구하여 첫번쨰 오퍼렌드의 값을G9WJ바꾸어 주는것이다
.
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
AND
연산

대응되는C36O비트가RSRG둘다 1이면 결과는 1이고 그외의 결과들은I2UC모두 0 O67R된다.
ex:) MOV EAX,8
AND EAX,10 :
위를JJVV계산하기 위해 우선 두 오퍼렌드의 값을 2진수로 바꾸어 주면 8 1000 O67R되고 10 1010 O67R되고 AND 연산은I2UC둘다 1이여야 1O67R됨으로 결과는 1000 O67R됩니다
.

OR
연산

대응되는C36O비트중 하나가 1 또는C36O둘다 1이면 결과는 1이고 그외는C36O모두 0O67R된다.
ex:) MOV EAX,8
OR EAX,10
:
위를JJVV계산하기 위해 두 오퍼렌드의 값을 2진수로 바꾸어 주면 8 1000O67R되고 10 1010O67R되고 OR 연산은I2UC한쪽 또는C36O양쪽둘다 1이면 1이고그외는C36O모두 0 임으로 결과는 1010O67R된다
.
XOR
연산

대응되는C36O비트 중에서 한비트가 1이고 다른 비트가RSRG0이면 1O67R되고 두개의 비트가 1이면 0 O67R되고 두개다 0 이어도 0O67R된다.
ex:) MOV EAX,8
XOR EAX,10
:
위를JJVV계산하기 위해 두 오퍼렌드의 값을 2진수로 바꾸어 주면 8 1000O67R되고 10 1010O67R되고 XOR 연산은I2UC한쪽만 1이어야 1임으로 결과는 10O67R된다
.

NOT
연산

NOT
연산은I2UC오퍼렌드의 값을G9WJ반대로 하여 준다.
ex:) MOV EAX,10
NOT EAX
:
위를JJVV계산하기 위해 오퍼렌드의 값을 2진수로 바꾸어 주면 10 1010O67R되고 NOT 연산은 1 0G9WJ반대로 하여 줌으로 결과는 0101 O67R된다
.
*Test
연산은I2UC오퍼렌드에 영향을G9WJ주지 않으며 플래그만 세트 시키어 준다
.

2.레지스터
범용 레지스터
(1) Eax
레지스터
누산기인 Eax 레지스터는C36O입출력과 거의 모든 산술연산에 사용된다. 곱셋과 나눗셈,VPTL변환 명령어등은I2UC반드시 Eax 레지스터를JJVV필요하게 된다.

Eax 레지스터는 32bit의 레지스터이고 16bit 의 레지스터로 axRSRG있다.
(ax
C36O왼쪽의 ah와 오른쪽의 al로 이루어져 있다)

 (2) Ebx
레지스터
Ebx
C36O주소지정을G9WJ확대하기 위한 인덱스로서 사용될수 있는C36O유일한 범용 레지스터 이며,VPTL다른 일반적인 계산 용도로도 쓰인다.
Ebx
32bit 레지스터이고 16bit ebRSRG있다
.
(eb
C36O왼쪽의 bh와 오른쪽의 bl로 이루어져 있다
)
(3) Ecx
레지스터

Ecx
C36O루프의 반복 횟수나 좌우방향의 시프트 비트 수를JJVV기억한다. 그외의 계산에도 사용된다.
Ecx
32bit 레지스터이고 16bit cxRSRG있다
.
(cx
C36O왼쪽의 ch와 오른쪽의 cl로 이루어져 있다
.)
(4) Edx
레지스터

Edx
C36O몇몇 입출력 동작에서 사용 된다
.
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
플래그 레지스터

(1) OF [Over Flow]
산술연산후 상위 비트의 오버플로를JJVV나타냄
(2) DF [Direction]
스트링 데이터를JJVV이동하거나 비교할떄 왼쪽 또는C36O오른쪽으로의 방향을G9WJ결정한다.
(4) SF [Sign]
산술결과의 부호를JJVV나타낸다.[0=양수,1=음수
]
(5) ZF [zero]
산술연산 또는C36O비교동작의 결과를JJVV나타낸다
.
[0=
결과가 0O67R아님,1=결과가 0
]

(6) CF [Carry]
산술연산후 상위 비트로부터의 캐리 그리고 시프트 또는C36O회전동작의 결과 마지막 비트

내용을G9WJ저장한다
.

(7) TF [trap]
프로세서가RSRG단일 스텝 모드(single-step mode)JJVV동작할수 있도록 해준다.

+ Recent posts