-
80x86 asm 명령어Programming/Assembly 2008. 11. 17. 09:19
80x86 명령어
AAA - ASCII Adjust after Addition기능 : ASCII 코드로 된 두 디지트를 ADD 명령어가 더한후에 이용한다
AAD - ASCII Adjust before Division
기능 : AL과 AH에 있는 2개의 언팩 BCD 디지트를 이진수로 변환하기 위해
DIV 명령어 앞에서 사용한다
AAM - ASCII Adjust after Multiplication
기능 : MUL명령어가 2개의 언팩 BCD를 곱하고 난 후 사용한다.
AAS - ASCII Adjust after Subtraction
기능 : 두 디지트를 빼고 난후, AL에 있는 결과를 팩 BCD로 변환하기 위해 사용한다.
ADC - Add with Carry
기능 : 이 명령어 앞에서 CF=1인 경우 이 명령어를 실행하면 원천 오퍼랜드에 목적지
오퍼랜드가 더해지고 그리고 1이 더해진다
ADD - Signed or Unsigned ADD
기능 : 원천 오퍼랜드를 목적지 오퍼랜드에 더하고 그 결과를 목적지 오퍼랜드에 저장한다
AND - Logical AND
기능 : 두 오퍼랜드에 대해 논리 AND를 수행하여 그 결과를 목적지 오퍼랜드에 저장한다
CALL - Call a Procedure
기능 : 제어를 프로시져로 넘긴다. RET를 사용하여 제어를 CALL 다음의 명령어로 되돌린다
CBW - Convert Byte to Word
기능 : D7을 AH의 모든 비트로 복사한다
CLC - Clear Carry Flag
기능 : CF를 0으로 리셋시킨다. (CF=0)
CLD - Clear Direction Flag
기능 : DF를 0으로 리셋시킨다. (DF=0)
CLI - Clear Interrupt Flag
기능 : IF를 0으로 리셋시킨다. (IF=0)
CMC - Complement Carry Flag
기능 : CF를 0에서 1로 또는 1에서 0으로 바꾼다.
CMP - Compare Operands
기능 : 길이가 같은 두 오퍼랜드를 비교한다. 원천 및 목적지 오퍼랜드는 변경되지 않는다.
CMPS/CMPSB/CMPSW - Compare Byte or Word String
기능 : 스트링을 한번에 한 바이트 또는 한 워드씩 비교한다.
CWD - Convert Word to Doubleword
기능 : AX의 부호 비트를 DX의 모든 비트에 복사하여 AX에 있는 부호없는 워드를 더블워드로
변환한다.
DAA - Decimal Adjust after Addition
기능 : BCD 숫자를 더한 다음에 결과를 다시 BCD로 변환하기 위해 사용한다.
DAS - Decimal Adjust after Subtraction
기능 : BCD 숫자를 뺄셈한 다음에 결과를 다시 BCD로 변환하기 위해 사용한다.
DEC - Decrement
기능 : 목적지 오퍼랜드에서 1을 뺀다.
DIV - Unsigned Division
기능 : 부호없는 워드(AX)를 바이트로 나누거나 부호없는 더블워드(DX:AX)를 워드로 나눈다
ESC - Escape
기능 : 마이크로프로세서와 데이터 버스 및 어드레스 버스를 공유하는 수학 보조프로세서
(8087과 같은)를 사용할수 있게 해준다.
HLT - Halt
기능 : 마이크로프로세서로 하여금 명령어의 실행을 정지시킨다.
IDIV - Signed Number Division
기능 : 부호있는 워드(AX)를 바이트로 나누거나 부호있는 더블워드(DX:AX)를 워드로 나눈다
IMUL - Signed Number Multiplication
기능 : 부호있는 바이트 또는 워드 원천 오퍼랜드를 AL 또는 AX에 있는 부호있는 바이트
또는 워드에 곱하여 그 결과를 AX 또는 DX:AX에 저장한다
IN - Input Data form Port
기능 : 두 번째 오퍼랜드에서 지정한 입력 포트로부터 바이트 또는 워드를 AL 또는
AX로 전송한다
INC - Increment
기능 : 오퍼랜드에 의해 지정된 레지스터 또는 메모리 위치에 1을 더한다.
INT - Intettupt
기능 : 실행을 256가지의 인터럽트중의 하나로 넘긴다.
INTO - Interrupt on Overflow
기능 : OF가 1로 세트되면 오버플로우를 위해 작성해놓은 인터럽트 처리기로 실행을 넘긴다
IRET - Interrupt Return
기능 : ISR의 끝에서 사용되며, 실행이 INT 명령어 다음의 명령어에서 계속되도록 하기
위해 모든 플래그, CS 및 IP를 인터럽트 수행 이전에 가졌던 값으로 복원 시킨다
JUMP - 명령어
기능 : 어떤 조건이 만족되면 행선지 번지로 점프하도록 하는데 사용한다.
JMP - Unconditional Jump
기능 : 새로운 번지로 제어를 무조건 넘기는데 사용한다. JMP와 CALL의 차이는, CALL 명령어는
CALL 다음의 명령어로 되돌아와 실행을 계속하는 반면 JMP는 되돌아오지 않는다
LAHF - Load AH from Flags
기능 : 플래그 레지스터의 하위 8비트를 AH에 로드한다
LDS - Load Data Segment Register
기능 : 원천이 가르키는 2개의 메모리 위치의 내용을 목적지(레지스터이다)에 로드하고
그 다음의 2개의 연속적인 메모리 위치의 내용을 DS에 로드한다.
LEA - Load Effective Address
기능 : 직접 메모리 오퍼랜드의 유효 번지를 목적지에 로드한다.
LES - Load Extra Segment Register
기능 : 원천이 가르키는 2개의 메모리 위치의 내용을 목적지(레지스터이다)에 로드하고
그 다음의 2개의 연속적인 메모리 위치의 내용을 ES에 로드한다.
LOCK - Lock System Bus Prefix
기능 : 2개 이상의 프로세서가 있는 마이크로컴퓨터에서 한 프로세서가 명령어를 실행하고 있는
동안 다른 프로세서가 시스템 버스의 제어권을 빼앗지 못하도록 하기 위해 사용된다
LODS/LODSB/LODSW Load Byte or Word String
기능 : DS:SI가 가리키는 메모리 위치로부터의 바이트 또는 워드를 AL 또는 AX에 로드 한다.
LOOP - Loop until CX =0
기능 : CX를 1 감소시킨 다음 CX가 아니면 오퍼랜드가 가리키는 곳으로 점프하며,
0일 경우에는 LOOP아래에 있는 다음 명령어를 실행 시킨다.
LOOPE / LOOPZ - Loop if Equal / Loop if Zero
기능 : CX를 1 감소시킨 다음 CX가 0이 아니면서 ZF = 1이면 오퍼랜드가 가리키는
곳으로 점프하고 그렇지 않으면 다음의 명령어에서 실행을 계속한다.
LOOPNE / LOOPNZ - Loop While CF Not Zero and ZF Equal Zero
기능 : CX를 1 감소시킨 다음 CX와 ZF가 0이 아니면 오퍼랜드가 가리키는 위치로 점프하고
그렇지 않으면 이 명령어 다음에서 실행을 계속한다.
MOV - Move
기능 : 레지스터, 메모리 위치, 즉석 상수인 워드 또는 바이트를 레지스터 또는 메모리
위치에 복사한다.
MOVS / MOVSB / 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 연산을 수행하고 그 결과를 목적지
오퍼랜드에 저장한다.
OUT - Output Byte or Word
기능 : 이 명령어는 AL 또는 AX 에 있는 바이트 또는 워드를 첫 번째 오퍼랜드에서
지정한 출력 포트로 내 보낸다.
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 감소시킨 다음에 플래그 레지스터의 내용을 스택에 복사한다.
RCL / RCR - Rotate Left through Carry and Rotate Right through Carry
기능 : 오퍼랜드의 비트들을 왼쪽 또는 오른 쪽으로 회전시킨다.
RET - Return from a Procedure
기능 : 앞서 CALL 명령어에 의해 호출되었던 피호출 프로시저로부터 호출프로시저로
복귀하는데 사용된다.
ROL / ROR - Rotate Left and Rotate Right
기능 : 첫번째 오퍼랜드 비트들을 두 번째 오퍼랜드에서 지정한 비트 수만큼 왼쪽 또는
오른쪽으로 회전시킨다.
SAHF - Store AH in Flag Register
기능 : AH의 내용을 플래그 레지스터의 하위 8비트에 복사한다.
SAL / SAR - Shift Arithmetic Left / Shift Arithmetic Right
기능 : 워드 또는 바이트를 왼/오른쪽으로 쉬프트 시킨다. 부호 있는 숫자를 쉬프트 할 때 사용
SBB - Subtract with Borrow
기능 : 목적지 오퍼랜드로부터 원천 오퍼랜드를 빼고 그 결과를 목적지 오퍼랜드에 저장한다.
SCAS / SCASB / SCASW - Scan Byte or Word String
기능 : ES:DI가 가리키는 스트링에 대해 AL 또는 AX에 있는 값이 있는지 조사한다.
SHL / SHR - Shift Left / Shift Right
기능 : 부호 없는 수에 사용되는 논리쉬프트로써 부호 비트도 데이터로 취급한다.
STC - Set Carry Flag
기능 : CF를 1로 세트 시킨다.
STD - Set Direction Flag
기능 : DF를 1로 세트 시킨다. 스트링 명령어와 사용
STI - Set Interrupt Flag
기능 : IF를 1로 세트 시킨다.
STOS / STOSB / STOSW - Store Byte or Word String
기능 : AX, AL의 내용을 ES:DI가 가리키는 위치에 복사하고, DI를 1또는 2 증가시킨다.
SUB - Subtract
기능 : 목적지 오퍼랜드로부터 원천 오퍼랜드를 빼서 그 결과를 목적지에 저장한다.
TEST - Test Bits
기능 : 두 오퍼랜드에 대해 논리 AND를 수행하고 플래그를 설정하지만 두 오퍼랜드의 내용은
변하지 않는다.
WAIT - Puts Processor in WAIT State
기능 : 마이크로프로세서로 하여금 외부 인터럽트가 발생할 때까지 대기상태에 들어가도록 한다.
XCHG - Exchange
기능 : 두 레지스터 또는 레지스터와 메모리 위치의 내용을 교환한다.
XLAT - Translate
기능 : AL의 내용을 AL이 가리키는 룩업 테이블의 내용으로 대체한다.
XOR - Exclusive OR
기능 : 두 오퍼랜드의 비트들에 대해 논리 XOR를 수행하여 그 결과를 목적지 오퍼랜드에 저장한다