*14.03.20 1차 수정
*14.05.29 2차 수정
AAA |
Ascii Adjust for Addition |
AAD |
Adjust For Division |
뎃셈을 한 후 AL 레지스터 값을 언팩 10진 보정하는 명령어 |
나누기 연산을 하기 전에 언팩 10진 보정하는 명령어 | ||
AAM |
Ascii Adjust for Multiplication |
AAS |
Adjust for Subtraction |
곱셈을 한 후 언팩 10진 보정하는 명령어 |
뺄셈을 한 후 언팩 10진 보정하는 명령어 | ||
ADC |
Add With Carry p |
ADD |
Arithmetic Addition |
더하기를 할 때 캐리(carry)도 함께 더함 |
두 오퍼랜드에 더하기를 수행하여 결과를 DEST 즉, 왼쪽에 저장 | ||
AND |
Logical And |
CALL |
Procedure Call |
두 오퍼랜드에 논리 연산 AND를 함 |
서브루틴을 호출 | ||
CBW |
Convert Byte to Word |
CLC |
Clear Carry |
AL 레지스터에 바이트를 AX의 워드형으로 확장 |
캐리 플래그(flag)를 클리어 함 | ||
CLD |
Clear Direction Flag |
CLI |
Clear Interrupt Flag |
방향 플래그를 클리어 함 |
인터럽트 플래그를 클리어 함 | ||
CLI |
Clear Intterupt Flag |
CLTS |
Clear Tack Switched Flag |
인터럽트 플래그를 클리어 함 |
태스크 스위치 플래그를 클리어 함 | ||
CMC |
Complement Carry Flag |
CMP |
Compare |
캐리 플래그를 세트 |
두 오퍼랜드를 비교하고 그 결과에 따라서 플래그를 세트 | ||
CMPS/CMPSB/CMPSW/CMPSD(E) - Compare String |
CMPXCHG |
Compare and Exchange | |
SI가 가리키는 곳과 (E)DI가 가리키는 곳을 비교하여 그 결과에 따라서 플래그를 세트 |
두 오퍼랜드를 비교한 후 값을 서로 바꿈 | ||
CWD |
Convert Word to Extended Doubleword |
CWDE |
Convert Word to Extended Doubleword |
AX 레지스터의 워드를 DX:AX의 더블워드 형으로 확장함 |
AX 레지스터의 워드를 EAX의 더블워드 형으로 확장함 | ||
DAA |
Decimal Adjust for Addition |
DAS |
Decimal Adjust for Subtraction |
덧셈을 한 후 AL 레지스터에 값을 팩 10진 보정함 |
뺄셈을 한 후 AL 레지스터에 값을 팩 10진 보정함 | ||
DEC |
Decrement |
DIV |
Divide |
오퍼랜드의 값을 1 감소함 |
나눗셈을 수행함 | ||
HLT |
Halt CPU |
IDIV |
Signed Integer Division |
CPU의 동작을 멈추게 함 |
나눗셈을 수행함 | ||
IMUL |
Signed Multiply |
IN |
Input Byte or Word From Port |
곱셈을 수행함 |
데이터를 포트에서 읽어옴 | ||
INC |
Increment |
INS |
Input String from Port |
오퍼랜드의 값을 1 증가시킴 |
문자열 데이터를 포트에서 읽어옴 | ||
INT |
Interrupt |
INTO |
Interrupt on Overflow |
인터럽트를 호출함 |
오버플로우 플래그가 세트되어 있다면 인터럽트를 4번 부름 | ||
IRET/IRETD |
Interrupt Return |
JA |
Jump it Above (CF=0 and ZF=0) |
인터럽트에서 원래 루틴으로 돌아옴 |
비교 결과가 크다면 점프하는 명령 | ||
JAE |
Jump if Above or Equal (CF=0) |
JB |
Jump if Below (CF=1) |
비교한 결과가 크거나 같으면 점프하는 명령 |
비교한 결과가 작으면 점프하는 명령 | ||
JBE |
Jump if Below or Equal (CF=1 or ZF =1) |
JC |
Jump if Carry (CF=1) |
비교한 결과가 작거나 같으면 점프하는 명령 |
캐리 플래그가 세트되었다면 점프 | ||
JCXZ |
Jump if CX Zero (CX=0) |
JE |
Jump if Equal (ZF=1) |
CX 레지스터의 값이 0이라면 점프 |
비교한 결과가 같은면 점프 | ||
JG |
Jump if Greater (ZF=0 and SF=0F) |
JGE |
Jump if Greater or Equal (SF=0F) |
비교한 결과가 크다면 점프 |
비교한 결과가 크거나 같으면 점프 | ||
JL |
Jump if Less (SF!=0F) |
JLE |
Jump if Less or Equal (ZF=1 or SF!=0F) |
비교한 결과가 작으면 점프 |
비교한 결과가 작거나 같으면 점프 | ||
JMP |
Unconditional Jump |
JNA |
Jump if Not Above (CF=1 or ZF=1) |
무조건 점프 |
비교한 결과가 작거나 같으면 점프 | ||
JNAE |
Jump if Not Above or Equal (CF=1) |
JNB |
Jump if Not Below (CF=0) |
비교한 결과가 작으면 점프 |
비교한 결과가 크거나 같으면 점프 | ||
JNBE |
Jump if Not Below or Equal (CF=0 and ZF=0) |
JNC |
Jump if Not Carry (CF=0) |
비교한 결과가 크면 점프 |
캐리 플래그가 세트되어 있지 않다면 점프 | ||
JNE |
Jump if Not Equa (ZF=0) |
JNG |
Jump if Not Greater (ZF=1 or SF!=0f) |
비교한 결과가 다르면 점프 |
비교한 결과 같거나 작으면 점프 | ||
JNGE |
Jump if Not Greater or Equal (SF != 0F) |
JNL |
Jump if Not Less (SF=0F) |
비교한 결과 작으면 점프 |
비교한 결과 크거나 같으면 점프 | ||
JNLE |
Jump if Not Less or Equal (ZF=0 and SF=0F) |
JNO |
Jump if Not Overflow (OF=0) |
비교한 결과 크면 점프 |
오버플로우 플래그가 0이면 점프 | ||
JNP |
Jump if No Parity (PF=0) |
JNS |
Jump if Not Signed (SF=0) |
패리티 플래그가 0이면 점프 |
사인 플래그가 0이면 점프 | ||
JO |
Jump if Overflow (OF=1) |
JP |
Jump if Parity (PF=1) |
오버플로우 플래그가 1이면 점프 |
패리티 플래그가 1이면 점프 | ||
JPE |
Jump if Parity Even (PF=1) |
JPO |
Jump if Parity Odd (PF=0) |
패리티 플래그가 1이면 점프 | |||
패리티 플래그가 0이면 점프 | |||
JS |
Jump if Signed (SF=1) |
JZ |
Jump if Zero (ZF=1) |
사인 플래그가 1이면 점프 |
같으면(0) 점프 | ||
LAHF |
Load Register AH From Flags |
LEA |
Load Effective Address |
플래그 레지스터에 값을 AH 레지스터로 읽어옴 |
오퍼랜드의 오프셋을 레지스터에 저장함 | ||
LOCK |
Lock Bus |
LODS |
Load String |
다음 명령이 수행될 때까지 다른 프로세서의 접근을 막음 |
DS:SI가 가리키는 메모리에 값을 AL 또는 AX 레지스터로 읽어옴 | ||
LOOP |
Decrement CX and Loop if CX Not Zero |
LOOPE/LOOPZ |
Loop While Equal / Loop While Zero |
CX 레지스터에 값만큼 반복함 |
제로 플래그가 1이거나 CX 레지스터가 0이 아닐 때 반복 | ||
LOOPNZ/LOOPNE |
Loop While Not Zero / Loop While Not Equal |
MOV |
Move Byte or Word |
제로 플래그가 0이거나 CX 레지스터가 0이 아닐 때 반복 |
오퍼랜드에 값을 옮김. 오른쪽에서 왼쪽으로 옮겨짐 | ||
MOVS |
Move String (Byte or Word) |
MUL |
Unsigned Multiply |
DS:SI가 가리키는 메모리의 값을 ES:DI가 가리키는 메모리로 옮김 |
곱셈을 함 | ||
NEG |
Two's Complement Negation |
NOP |
No Operation |
오퍼랜드의 부호를 바꿈 |
3 사이클 동안 아무 일도 하지 않음 | ||
NOT |
One's Compliment Negation (Logical NOT) |
OR |
Inclusive Logical OR |
오퍼랜드에 대해 논리연산 NOT을 해줌 |
두 오퍼랜드에 대해 논리연산 OR 함 | ||
OUT |
Output Data to Port |
OUTS |
Output String to Port |
데이터를 포트에 씀 |
문자열 데이터를 포트에 씀 | ||
POP |
Pop Word off Stack |
POPF/POPFD |
Pop Flags off Stack |
스택에 보관해 두었던 값을 가져옴 |
스택에 저장되어 있는 데이터를 플래그 레지스터로 가져옴 | ||
PUSH |
Push Word onto Stack |
PUSHA/PUSHAD |
Push All Registers onto Stack |
데이터를 스택에 보관함 |
모든 레지스터의 값을 스택에 보관함 | ||
PUSHF/PUSHFD |
Push Flags onto Stack |
RCL |
Rotate Through Carry Left |
플래그 레지스터의 값을 스택에 보관함 |
왼쪽으로 비트 회전을 시킴 | ||
RCR |
Rotate Carry Right |
REP |
Repeat String Operation |
오른쪽으로 비트 회전을 시킴 |
문자열에 관계된 명령들을 지정한 횟수만큼 반복함 | ||
REPE/REPZ |
Repeat Equal / Repeat Zero |
REPNE/REPNZ |
Repeat Not Equal / Repeat Not Zero |
ZF 레지스터에 값만큼 문자열 명령어를 반복함 |
ZF 레지스터에 값만큼 반복함 | ||
RET/RETF |
Return From Procedure |
ROL |
Rotate Left |
프러시저에서 복귀함 |
왼쪽으로 비트 회전함 | ||
ROR |
Rotate Right |
SAHF |
Store AH Register into FLAGS |
오른쪽으로 비트 회전함 |
AH의 값을 플래그로 옮김 | ||
SAL/SHL |
Shift Arithmetic Left / Shift Logical Left |
SAR |
Shift Arithmetic Right |
왼쪽으로 지정한 수만큼 비트 회전시킴 |
지정한 횟수만큼 오른쪽으로 비트 회전시킴 | ||
SBB |
Subtract with Borrow/Carry |
SCAS |
Scan String |
뺄셈을 할 때 캐리도 같이 빼줌 |
AL 레지스터나 AX 레지스터의 값과 ES:DI가 가리키는 값을 비교 | ||
SETAE/SETNB |
Set if Above or Equal / Set if Not Below |
SETB/SETNAE |
Set if Below / Set if Not Above or Equal |
캐리 플래그가 0이라면 지정한 바이트형 레지스터를 1로 세트 |
캐리 플래그가 0이라면 지정한 바이트형 레지스터를 1로 세트 | ||
SETBE/SETNA |
Set if Below or Equal / Set if Not Above |
SETE/SETZ |
Set if Equal / Set if Zero |
제로 플래그나 캐리 플래그가 1이라면 바이트형 레지스터를 1로 세트 |
제로 플래그가 1이라면 바이트형 레지스터를 1로 세트 | ||
SETNE/SETNZ |
Set if Not Equal / Set if Not Zero |
SETL/SETNGE |
Set if Less / Set if Not Greater or Equal |
제로 플래그가 0이라면 바이트형 레지스터를 1로 세트 |
사인 플래그와 오버플로우 플래그가 같지 않다면 바이트형 레지스터를 1로 세트 | ||
SETGE/SETNL |
Set if Greater or Equal / Set if Not Less |
SETLE/SETNG |
Set if Less or Equal / Set if Not greater or Equal |
사인 플래그와 오버플로우 플래그가 같다면 바이트형 레지스터를 1로 세트 |
제로 플래그가 1이라면 바이트형 레지스터를 1로 세트 | ||
SETG/SETNLE |
Set if Greater / Set if Not Less or Equal |
SETS |
Set if Signed |
제로 플래그는 0이고 사인 플래그와 오버플로우 플래그가 같다면 바이트형 레지스터를 1로 세트 |
사인 플래그가 1이라면 바이트형 레지스터를 1로 세트 | ||
SETNS |
Set if Not Signed |
SETC |
Set if Carry |
사인 플래그가 0이라면 바이트형 레지스터를 1로 세트 |
캐리 플래그가 1이라면 바이트형 레지스터를 1로 세트 | ||
SETNC |
Set if Not Carry |
SETO |
Set if Overflow |
캐리 플래그가 0이라면 바이트형 레지스터를 1로 세트 |
오버플로우 플래그가 1이라면 바이트형 레지스터를 1로 세트 | ||
SETNO |
Set if Not Overflow |
SETP/SETPE |
Set if Parity / Set if Parity Even |
오버플로우 플래그가 0이라면 바이트형 레지스터를 1로 세트 |
패리티 플래그가 1이라면 바이트형 레지스터를 1로 세트 | ||
SETNP/SETPO |
Set if No Parity / Set if Parity Odd |
SGDT |
Store Global Descriptor Table |
패리티 플래그가 0이라면 바이트형 레지스터를 1로 세트 |
Global Descriptor Table(GDT)의 위치를 지정한 메모리에 저장 | ||
SIDT |
Store Interrupt Descriptor Table |
SHL |
Shift Logical Left |
Interrupt Descriptor Table(IDT)의 위치를 지정한 메모리에 저장 |
오퍼랜드에 내용을 지정한 수만큼 왼쪽으로 비트 회전시킴 | ||
SHR |
Shift Logical Right |
SHLD/SHRD |
Double Precision Shift |
오퍼랜드에 내용을 지정한 수만큼 오른쪽 비트 회전시킴 |
두 오퍼랜드를 이용하여 지정한 수만큼 왼쪽/오른쪽으로 비트 회전시킴 | ||
SLDT |
Store Local Descriptor Table |
STC |
Set Carry |
Local Descriptor Table(LDT)에 위치를 지정한 메모리에 저장 |
캐리 플래그를 1로 세트 | ||
STD |
Set Direction Flag |
STI |
Set Interrupt Flag |
방향 플래그를 1로 세트 |
인터럽트 플래그를 1로 세트 | ||
STOS |
Store String |
STR |
Store Task Register |
AL 혹은 AX의 내용을 ES:DI가 가리키고 있는 곳으로 저장 |
태스트 레지스터에 값을 읽어옴 | ||
SUB |
Subtract |
TEST |
Test For Bit Pattern |
뺄셈을 수행함 |
두 오퍼랜드를 논리연산 AND를 한 후 결과에 따라서 플래그를 세트 | ||
XCHG |
Exchange |
XLAT/XLATB |
Translate |
두 오퍼랜드의 값을 서로 바꿈 |
DS:BX가 가리키는 값에 AL 레지스터 값만큼 더한 후 AL에 저장 | ||
XOR |
Exclusive OR |
||
두 오퍼랜드에 논리 연산 XOR을 해줌 |
'C.E > Assembly' 카테고리의 다른 글
SP ; Stack Pointer (0) | 2014.04.22 |
---|---|
Flag Register (0) | 2014.04.21 |