asm_90.
Ç÷¡±× ·¹Áö½ºÅÍ
42 ÀÌÇü¹® buju8t 01/15 1035
13 Ç÷¡±× ·¹Áö½ºÅÍ¿¡ ´ëÇØ.....
Á¶°ÇºÐ±â¸í·ÉÀº ºñ±³¸í·ÉÀ̳ª ¿¬»ê¸í·ÉÀÇ °á°ú¿¡ µû¶ó¼ ºÐ±âÇÕ´Ï´Ù.
±×·¯³ª, Á¤È®È÷ ¸»ÇÏÀÚ¸é ºñ±³¸í·ÉÀ̳ª ¿¬»ê¸í·ÉÀÇ °á°ú¿¡ ÀÇÇØ ¼¼Æ®µÈ
Ç÷¡±× ·¹Áö½ºÅÍÀÇ °ª¿¡ µû¶ó¼ ºÐ±âÇÏ´Â °ÍÀÔ´Ï´Ù.
Ç÷¡±× ·¹Áö½ºÅÍ´Â ¿©·¯ °¡Áö »óŸ¦ ±â¾ïÇϱâ À§ÇÑ ·¹Áö½ºÅÍ ÀÔ´Ï´Ù.
+------------------------------------------------------------------+
*Ç÷¡±× ·¹Áö½ºÅÍÀÇ °¢ ºñÆ®ÀÇ ¸íĪ
°ø¹éÀÎ
ºñÆ®´Â »ç¿ëÇÏÁö ¾ÊÀ¾´Ï´Ù.
ºñÆ® 15 14 13 12 11 10 9 8
7 6 5 4 3 2 1 0
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
OFDFIFTFSFZF
AF PF CF
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
+------------------------------------------------------------------+
½ºÅ×ÀÌÅͽº Ç÷¡±×( status
flag)
¿¬»êÀÇ °á°ú¿¡ µû¶ó¼ ¼¼Æ®
ȤÀº ¸®¼ÂµÇ´Â Ç÷¡±×·Î ´ÙÀ½°ú °°Àº
°ÍÀÌ ÀÖÀ¾´Ï´Ù.
-CF : ij¸®Ç÷¡±× (carry flag)
¿¬»êÇÑ °á°ú,ÃÖ»óÀÇ ºñÆ®·Î
ºÎÅÍÀÇ ³ôÀº ÀÚ¸®·Î ÀÚ¸®¿Ã¸²(ij¸®)
ȤÀº ÃÖ»óÀÇ ºñÆ®·Î ºÎÅÍÀÇ
ºô¸²ÀÌ ¹ß»ýÇÑ °æ¿ì¿¡ 1·Î ¼¼Æ®µÇ°í
±× ÀÌ¿ÜÀÇ °æ¿ì 0À¸·Î ¼¼Æ®µË´Ï´Ù.
-PF :ÆÐ¸®Æ¼ Ç÷¡±×(parity flag)
¿¬»êÇÑ °á°ú, 1·ÎµÈ ºñÆ®ÀÇ
¼ö°¡ ¦¼ö°³(EVEN)ÀÏ ¶§ 1·Î ¼¼Æ®µÇ
°í ±× ÀÌ¿ÜÀÇ °æ¿ì 0À¸·Î ¸®¼ÂµË´Ï´Ù.
-AF : º¸Á¶ ij¸®Ç÷¡±×(auxiliary carry flag)
8(16)ºñÆ® ¿¬»ê¿¡¼,ÇÏÀ§ 4(8)
ºñÆ®·Î ºÎÅÍ »óÀ§ 4 ºñÆ®·Î ÀÚ¸®
¿Ã¸² ȤÀº ºô¸²ÀÌ ¹ß»ýÇÑ °æ¿ì¿¡
1·Î ¸®¼ÂµÈ´Ù. 10Áø º¸Á¤ ¸í·É¿¡
À־µ »ç¿ë µË´Ï´Ù.
-ZF : Á¦·Î Ç÷¡±×(zero flag)
¿¬»êÇÑ °á°ú°¡ 0À¸·Î µÇ¾úÀ»
¶§¿¡ 1·Î ¼¼Æ®µÇ°í,±×ÀÌ¿ÜÀÏ ¶§´Â
0À¸·Î ¸®¼ÂµË´Ï´Ù.
-SF :»çÀÎ Ç÷¡·¡±×(sign flag)
¿¬»êÇÑ °á°ú,ÃÖ»óÀÇ ºñÆ®°¡
1ÀÌ µÇ¾úÀ» ¶§(Áï,º¸¼öÇ¥ÇöÀ¸·Î
À½¼ö°¡ µÇ¾úÀ» ¶§) 1·Î ¼¼Æ®µÇ°í,±×ÀÌ¿ÜÀÏ
¶§´Â 0À¸·Î ¸®¼ÂµË´Ï´Ù.
-OF : ¿À¹öÇ÷οì Ç÷¡±×(overflow flag)
¿¬»êÀ» ºÎÈ£°¡ ´Þ¸° ¼ýÀÚ·Î
ÇßÀ»¶§,¿À¹ö Ç÷οì ȤÀº ¾ð´õ Ç÷οì
°¡ ¹ß»ýÇÑ °æ¿ì¿¡ 1·Î ¼¼Æ®µÇ°í,±×
ÀÌ¿ÜÀÏ ¶§´Â 0À¸·Î ¸®¼ÂµË´Ï´Ù.
ÄÜÆ®·Ñ Ç÷¡±×(control flag)
CPUÀÇ µ¿ÀÛ »óÅ ¸¦
Á¦¾îÇÏ´Â ·¹Áö½ºÅÍ·Î Ç÷¡±× Á¦¾î ¸í·ÉÀ̳ª
Ç÷¡±× Àü¼Û¸í·ÉÀ» »ç¿ëÇÏ¿©
ÇÁ·Î±×·¥ Áß¿¡¼ ¼¼Æ® ȤÀº ¸®¼Â
µË´Ï´Ù.
-DF : µð·º¼Ç Ç÷¡±×(direction flag)
½ºÆ®¸µ Á¶ÀÛÀ» ÇÒ ¶§¿¡ ÀÌ
Ç÷¡±×°¡ 0ÀÌ¸é ¹øÁö¸¦ ³ªÅ¸³»´Â
·¹Áö½ºÅͰªÀÌ ÀÚµ¿À¸·Î Áõ°¡Çϰí 1ÀÌ¸é ·¹Áö½ºÅͰªÀº ÀÚµ¿ÀûÀ¸·Î
°¨¼ÒÇÕ´Ï´Ù.
-IF : ÀÎÅÍ·´Æ® Ç÷¡±×(interrupt flag)
ÀÌ Ç÷¡±×°¡ 0 ÀÏ ¶§ INTR´ÜÀÚ·Î
ºÎÅÍÀÇ ¿ÜºÎ ÀÎÅÍ·´Æ® ¿ä±¸´Â
¹«½ÃµÇ°í,1 ÀÏ ¶§¿¡´Â ¿ÜºÎ
ÀÎÅÍ·´Æ® ¿ä±¸¸¦ ¹Þ¾Æ µéÀÏ ¼ö ÀÖ°Ô
µË´Ï´Ù.
-TF : Æ®·¦ Ç÷¡±×(trap flag)
ÀÌ Ç÷¡±×°¡ 0ÀÏ ¶§ CPU ´Â
º¸Åë´ë·Î ¸í·ÉÀ» ½ÇÇàÇÑ´Ù.ÀÌ Ç÷¡±×°¡
1ÀÏ ¶§ CPU ´Â ÇÑ ¸í·ÉÀ» ½ÇÇàÇÒ
¶§¸¶´Ù ÀÚµ¿ÀûÀ¸·Î ³»ºÎ ÀÎÅÍ·´Æ®
(INT1)°¡ ¹ß»ýÇϰí,ÀÎÅÍ·´Æ®
ó¸® ·çƾÀ¸·Î µé¾î°£´Ù.(´Ü, ÀÌ Ã³¸®
·çƾÀÇ ½ÇÇàÁß¿¡´Â Æ®·¦Ç÷¡±×´Â
0À¸·Î Ŭ¸®¾î µÈ´Ù).ÀÌ Ç÷¡±×´Â
ÇÁ·Î±×·¥ÀÇ ÃßÀû¿¡ »ç¿ëµË´Ï´Ù.
Ç÷¡±× ·¹Áö½ºÅÍ Á¦¾î ¸í·É °ú Àü¼Û ¸í·É
STC (Set Carry flag) ij¸®Ç÷¯±×¸¦
1·Î ¼¼Æ®ÇÑ´Ù.
CLC (CLear Carry flag) ij¸®Ç÷¯±×¸¦
0À¸·Î ¸®¼ÂÇÑ´Ù.
CMC (CoMplement Carry flag) ij¸®Ç÷¡±×°¡ 0À̸é 1·Î
1À̸é 0À¸·Î
¼¼Æ®ÇÑ´Ù.
STD(Set Direction flag) µð·º¼Ç
Ç÷¡±×¸¦ 1·Î ¼¼Æ®ÇÑ´Ù.
CLD(CLear Direction flag) µð·º¼Ç Ç÷¡±×¸¦ 0À¸·Î ¸®¼ÂÇÑ´Ù
STI(Set Interrupt-enable flag) ÀÎÅÍ·´Æ® Ç÷¡±×¸¦ 1·Î ¼¼Æ®ÇÑ´Ù.
CLI(CLear Interrupt-enable flag) ÀÎÅÍ·´Æ® Ç÷¡±×¸¦ 0À¸·Î ¼¼Æ®ÇÑ´Ù.
LAHF(Load AH from Flags) Ç÷¡±×
·¹Áö½ºÅÍÀÇ ÇÏÀ§ 8ºñÆ®¸¦ AH·¹Áö
½ºÅÍ·Î
Àü¼ÛÇÑ´Ù.»ç¿ëÇÏÁö ¾Ê´Â ºñÆ®ÀÇ
°ªÀº
Á¤ÇØÁ® ÀÖÁö ¾Ê´Ù.
SAHF(Store AH into Flags) AH·¹Áö½ºÅÍÀÇ
³»¿ëÀ» Ç÷¡±×·¹Áö½ºÅÍÀÇ
ÇÏÀ§
8ºñÆ®¿¡ Àü¼ÛÇÑ´Ù.
PUSHF (PUSH Flas onto stack) Ç÷¡±× ·¹Áö½ºÅÍÀÇ ³»¿ëÀ» ½ºÅÃ(stag)»ó
¿¡
Ǫ½¬(PUSH:»ðÀÔ)ÇÑ´Ù.
POPF (POP Flags off stack) ½ºÅà À§ÀÇ ¿öµåµ¥ÀÌÅ͸¦
Ç÷¡±×·¹Áö½ºÅÍ
¿¡
POPÇÑ´Ù.
´ÙÀ½ µÎ ¸í·ÉÀÇ Â÷À̸¦ ¾Ë¾Æ º¾½Ã´Ù.
CMP AX,BX ;AX·¹Áö½ºÅÍ·Î
ºÎÅÍ BX ·¹Áö½ºÅ͸¦ °¡»óÀûÀ¸·Î »«
´ÙÀ½
±× °á°ú¿¡ µû¶ó Ç÷¡±× ·¹Áö½ºÅ͸¸À» º¯È½ÃŲ´Ù.
SUB AX,BX ;AX·¹Áö½ºÅÍ¿¡¼
BX ·¹Áö½ºÅ͸¦ »«´ÙÀ½ ±×°á°ú¿¡ µû¶ó
Ç÷¡±× ·¹Áö½ºÅ͸¦ º¯È ½ÃŲ´Ù.
°á±¹ µÎ¸í·ÉÀÇ °á°ú Ç÷¡±×
·¹Áö½ºÅÍÀÇ °á°ú´Â ¶È °°À¾´Ï´Ù.
Ç÷¡±× ·¹Áö½ºÅÍÀÇ °ªÀº »ê¼ú ³í¸®¿¬»êÀ» ÇàÇÒ ¶§¿¡ ¼¼Æ® ¸®¼ÂµÇ°í,Àü¼Û
¸í·ÉÀ̳ª ºÐ±â¸í·É¿¡¼´Â º¯ÈÇÏÁö ¾ÊÀ¾´Ï´Ù.µû¶ó¼ ºñ±³¸í·É°ú ºÐ±â¸í·É
»çÀÌ¿¡ Àü¼Û¸í·ÉµîÀ» »ç¿ëÇÒ ¼ö ÀÖÀ¾´Ï´Ù.
CODE SEGMENT
ASSUME CS:CODE
MOV AX,1234H
MOV BX,8888H
CMP BX,0
JB L1
JL L1
NOP
8888H¸¦
ºÎÈ£¾ø´Â ¼ýÀÚ·Î °£ÁÖÇϸé 0º¸´Ù Å©¹Ç·Î
JB¿¡¼´Â ºÐ±âÇÏÁö ¾Ê´Â´Ù ±×·¯³ª ºÎÈ£ÀÖ´Â ¼ýÀÚ·Î
º¸¸é
0º¸´Ù ÀÛÀ¸¹Ç·Î JL¿¡¼ ºÐ±âÇÑ´Ù.
L1: CMP AX,BX
JG L2 ;ºÎÈ£ÀÖ´Â ¼ýÀÚ·Î
º¸¾ÒÀ» ¶§ AX°¡ Å©¹Ç·Î JG¿¡¼ ºÐ±âÇÑ´Ù.
JA L2
NOP
L2: ADD AX,8000H
JC L3
JS L3 ;1234H¿¡
8000H¸¦ ´õÇϸé 9234H°¡ µÈ´Ù.ÀÚ¸® ¿Ã¸²ÀÌ
»ý±âÁö
¾ÊÀ¸¹Ç·Î ij¸®Ç÷¯±×´Â 0ÀÌ µÈ´Ù.±×·¯³ª ÃÖ»óÀ§
ºñÆ®°¡
1ÀÌ µÇ¹Ç·Î »çÀÎ Ç÷¯±×´Â 1ÀÌ µÈ´Ù.
µû¶ó¼
JC ¿¡¼´Â ºÐ±âÇÏÁö ¾Ê°íJS¿¡¼ ºÐ±âÇÑ´Ù.
NOP ;¾Æ¹«°Íµµ
ÇÏÁö ¾Ê´Â´Ù´Â ¸í·É
L3: ADD AX,8000H ;µÎ ¼ö¸¦ ´õÇϸé ÀÚ¸®¿Ã¸²ÀÌ
¹ß»ýÇÏ°í °á°ú´Â 1234H
°¡
µÈ´Ù.À̶§ ij¸® Ç÷¯±×´Â 1·Î ¼¼Æ®µÈ´Ù.Á¦·Î°¡
¾Æ´Ï¹Ç·Î
Á¦·Î Ç÷¯±×´Â 0ÀÌ´Ù.
MOV AX,0
JZ L4
JC L4 ; ij¸®Ç÷¯±×°¡
1À̹ǷΠºÐ±âÇÑ´Ù.
NOP
L4: MOV AX,0FFFFH
ADD AX,1
JC L5
NOP
L5: CLC ;CLC´Â clear carry·Î¼
ij¸®Ç÷¯±×¸¦ 0À¸·Î ¸¸µç´Ù.
MOV AX,0FFFFH
INC AX ;INC¸í·É¿¡ ÀÇÇØ
ÀÚ¸® ¿Ã¸²ÀÌ »ý±ä °æ¿ì¿¡´Â ij¸®
Ç÷¯±×ÀÇ
°ªÀº º¯ÈÇÏÁö ¾Ê´Â´Ù.
JC L6
JE L6
NOP
L6: MOV AH,4CH
INT 21H
CODE ENDS
END
Ç÷¡±× ·¹Áö½ºÅ͸¦ º¸´Â ¹æ¹ý
+-----------+----+----+----+----+----+----+----+----+
Ç÷¡±× À̸§ OF DF IF SF ZF AF PF CF
+-----------+----+----+----+----+----+----+----+----+
0 NV UP
DI PL NZ NA PO NC
+-----------+----+----+----+----+----+----+----+----+
1 OV DN
EI NG ZR AC PE CY
+--- --------+----+----+----+----+----+----+----+----+
¾àÀÚ¸¦ ÀÐ¾î ³»´Â ¹æ¹ý
NV:not overflow OV:overflow
UP:up DN:down
DI:disable interrupt EI:enable interrupt
PL:plus NG:negative
NZ:not zero ZR:zero
NA:not auxiliary carry AC:auxiliary carry
PO:parity odd PE:parity
even
NC:not carry CY:carry
INC¸í·É°ú DEC¸í·ÉÀº ij¸®Ç÷¡±×¿¡ ¿µÇâÀ» ÁÖÁö ¾ÊÀ¾´Ï´Ù.
-T
AX=1234 BX=0000 CX=003F DX=0000 SP=0000 BP=0000
SI=0000 DI=0000
DS=54EF ES=54EF SS=54FF CS=54FF IP=0003 NV
UP EI NG NZ NA PE NC
54FF:0003 BB8888 MOV BX,8888
-T
AX=1234 BX=8888 CX=003F DX=0000 SP=0000 BP=0000
SI=0000 DI=0000
DS=54EF ES=54EF SS=54FF CS=54FF IP=0006 NV
UP EI NG NZ NA PE NC
54FF:0006 83FB00 CMP BX,+00
-T
AX=1234 BX=8888 CX=003F DX=0000 SP=0000 BP=0000
SI=0000 DI=0000
DS=54EF ES=54EF SS=54FF CS=54FF IP=0009 NV
UP EI NG NZ NA PE NC
54FF:0009 7203 JB 000E
BX·¹Áö½ºÅÍ¿Í 0H ÀÇ ºñ±³ °á°ú¿¡ µû¶ó Ç÷¡±×·¹Áö½ºÅͰ¡ ¼¼Æ®µË´Ï´Ù.
»¬¼À°á°ú 8888HÀ̹ǷΠÃÖ»óÀÇ ºñÆ®´Â 1ÀÌ µÇ°í »çÀÎÇ÷¡±×´Â NG(À½¼ö)°¡
µË´Ï´Ù.ºô¸²ÀÌ ¹ß»ýÇÏÁö ¾Ê¾ÒÀ¸¹Ç·Î ij¸®Ç÷¯±×´Â NC(0) °¡µÇ°í ¿À¹öÇ÷¡±×
´Â NV(0)°¡ µË´Ï´Ù.
-T
AX=1234 BX=8888 CX=003F DX=0000 SP=0000 BP=0000
SI=0000 DI=0000
DS=54EF ES=54EF SS=54FF CS=54FF IP=000B NV
UP EI NG NZ NA PE NC
54FF:000B 7C01 JL 000E
-Q
|