8086 명령어
|
|
|
ADD |
Signed or Unsigned ADD |
원천 오퍼랜드를 목적지 오퍼랜드에 더하고 그 결과를 목적지 오퍼랜드에 저장한다 |
AND |
Logical AND |
두 오퍼랜드에 대해 논리 AND를 수행하여 그 결과를 목적지 오퍼랜드에 저장한다 |
CALL |
Call a Procedure |
제어를 프로시져로 넘긴다. RET를 사용하여 제어를 CALL 다음의 명령어로 되돌린다 |
CMP |
Compare Operands |
길이가 같은 두 오퍼랜드를 비교한다. 원천 및 목적지 오퍼랜드는 변경되지 않는다 |
CMPS |
Compare Byte or Word String |
스트링을 한번에 한 바이트 또는 한 워드씩 비교한다 |
CMPSB |
Compare Byte or Word String |
스트링을 한번에 한 바이트 또는 한 워드씩 비교한다 |
CMPSW |
Compare Byte or Word String |
스트링을 한번에 한 바이트 또는 한 워드씩 비교한다 |
DEC |
Decrement |
목적지 오퍼랜드에서 1을 뺀다 |
DIV |
Unsigned Division |
부호없는 워드(AX)를 바이트로 나누거나 부호없는 더블워드(DX:AX)를 워드로 나눈다 |
IDIV |
Signed Number Division |
부호있는 워드(AX)를 바이트로 나누거나 부호있는 더블워드(DX:AX)를 워드로 나눈다 |
IMUL |
Signed Number Multiplication |
부호있는 바이트 또는 워드 원천 오퍼랜드를 AL 또는 AX에 있는 부호있는 바이트 또는 워드에 곱하여 그 결과를 AX 또는 DX:AX에 저장한다 |
INC |
Increment |
오퍼랜드에 의해 지정된 레지스터 또는 메모리 위치에 1을 더한다. |
INT |
Intettupt |
실행을 256가지의 인터럽트중의 하나로 넘긴다 |
JUMP |
Conditional Jump |
어떤 조건이 만족되면 행선지 번지로 점프하도록 하는데 사용한다. |
JMP |
Unconditional Jump |
새로운 번지로 제어를 무조건 넘기는데 사용한다. JMP와 CALL의 차이는, CALL 명령어는 CALL 다음의 명령어로 되돌아와 실행을 계속하는 반면 JMP는 되돌아오지 않는다 |
LEA |
Load Effective Address |
직접 메모리 오퍼랜드의 유효 번지를 목적지에 로드한다 |
LOCK |
Lock System Bus Prefix |
2개 이상의 프로세서가 있는 마이크로컴퓨터에서 한 프로세서가 명령어를 실행하고 있는 동안 다른 프로세서가 시스템 버스의 제어권을 빼앗지 못하도록 하기 위해 사용된다 |
LOOP |
Loop until CX =0 |
CX를 1 감소시킨 다음 CX가 아니면 오퍼랜드가 가리키는 곳으로 점프하며, 0일 경우에는 LOOP아래에 있는 다음 명령어를 실행 시킨다 |
MOV |
Move |
레지스터, 메모리 위치, 즉석 상수인 워드 또는 바이트를 레지스터 또는 메모리 위치에 복사한다. |
MOVS |
Move Byte or Word String |
DS : SI가 가리키는 메모리의 위치로부터 바이트 또는 워드를 ES : DI가 가리키는 메모리 위치로 복사한다. |
MOVSB |
Move Byte or Word String |
DS : SI가 가리키는 메모리의 위치로부터 바이트 또는 워드를 ES : DI가 가리키는 메모리 위치로 복사한다. |
MOVSW |
Move Byte or Word String |
DS : SI가 가리키는 메모리의 위치로부터 바이트 또는 워드를 ES : DI가 가리키는 메모리 위치로 복사한다. |
MUL |
Unsigned Multiplication |
오퍼랜드가 가리키는 부호 없는 바이트 또는 워드를 AL 또는 AX에 들어있는 바이트 또는 워드에 곱한 결과를 AX 또는 DX : AX 에 저장한다 |
NEG |
Negate |
오퍼랜드에 대해 2의 보수를 취한다 |
NOP |
No Operation |
아무 일도 수행하지 않는다 |
NOT |
Logical NOT |
오퍼랜드에 대해 1의 보수를 취한다 |
OR |
Logical OR |
두 오퍼랜드에 대해 비트끼리 논리 OR 연산을 수행하고 그 결과를 목적지 오퍼랜드에 저장한다 |
POP |
POP Word |
스택포인터가 가리키는 워드를 오퍼랜드가 가리키는 레지스터 메모리위치로 복사하고 SP를 2 증가 시킨다 |
POPF |
POP Flags off Stack |
스택에 PUSH시켜 놓았던 비트를 플래그 레지스터로 복사한 다음에 SP를 2 증가 시킨다 |
PUSH |
PUSH Word |
스택에 원천 오퍼랜드의 워드를 복사하고 SP를 2 감소시킨다 |
PUSHF |
PUSH Flags onto Stack |
SP를 2 감소시킨 다음에 플래그 레지스터의 내용을 스택에 복사한다 |
RET |
Return from a Procedure |
앞서 CALL 명령어에 의해 호출되었던 피호출 프로시저로부터 호출프로시저로 복귀하는데 사용된다. |
SHL |
Shift Left |
부호 없는 수에 사용되는 논리쉬프트로써 부호 비트도 데이터로 취급한다. |
SHR |
Shift Right |
부호 없는 수에 사용되는 논리쉬프트로써 부호 비트도 데이터로 취급한다. |
STOS |
Store Byte or Word String |
: AX, AL의 내용을 ES:DI가 가리키는 위치에 복사하고, DI를 1또는 2 증가시킨다 |
STOSB |
Store Byte or Word String |
: AX, AL의 내용을 ES:DI가 가리키는 위치에 복사하고, DI를 1또는 2 증가시킨다 |
STOSW |
Store Byte or Word String |
: AX, AL의 내용을 ES:DI가 가리키는 위치에 복사하고, DI를 1또는 2 증가시킨다 |
SUB |
Subtract |
목적지 오퍼랜드로부터 원천 오퍼랜드를 빼서 그 결과를 목적지에 저장한다 |
TEST |
Test Bits |
두 오퍼랜드에 대해 논리 AND를 수행하고 플래그를 설정하지만 두 오퍼랜드의 내용은 변하지 않는다. |
XCHG |
Exchange |
두 레지스터 또는 레지스터와 메모리 위치의 내용을 교환한다 |
XOR |
Exclusive OR |
두 오퍼랜드의 비트들에 대해 논리 XOR를 수행하여 그 결과를 목적지 오퍼랜드에 저장한다. |
'Windows Programming > 디버깅' 카테고리의 다른 글
[디버깅을 위한 기초지식 #4] Calling Convention (0) | 2011.07.18 |
---|---|
[디버깅을 위한 기초지식 #3] CallStack - 프로시저 호출에 따른 스택의 구성 (0) | 2011.07.18 |
[디버깅을 위한 기초지식 #1] CPU 레지스터의 종류와 용도 (2) | 2011.07.18 |
[디버깅을 위한 기초지식 #0] (0) | 2011.07.17 |
[windbg] ba(break on access) 메모리 엑세스 시점 잡기 (0) | 2011.07.11 |