2.
196À» ¹è¿öº¸ÀÚ
II. 196 Assember
II-II. º»°ÝÀûÀÎ 196 ¾î¼Àºí¸®¾î
II-II-1. µ¥ÀÌÅÍ Àü¼Û
¸í·É
II-II-1-2 ¹øÁö ÁöÁ¤
¹æ¹ý(addressing
mode)
*******************************************************
<À½¼öÀÇ Ç¥Çö ¹æ¹ý>
- À½¼öÀÇ Ç¥Çö
¹æ¹ý¿¡´Â Sign&Magnitude,
1's complement, 2's complement µî ¿©·¯
°¡Áö°¡ Àִµ¥, °øÅëÀûÀΠƯ¡Àº À½¼ö¿Í ¾ç¼öÀÇ ±¸ºÐÀº º¸Åë MSB·Î ÇÑ´Ù´Â °ÍÀÌ´Ù. Áï,
MSB°¡ 1À̸é À½¼ö, 0ÀÌ¸é ¾ç¼ö°¡
µÈ´Ù. °¢ ¹æ¹ýÀÇ Æ¯Â¡À»
»ìÆìº¸¸é ´ÙÀ½°ú °°´Ù.
* Sign & Magnitude
- ºÎÈ£¿Í ¼öÀÇ
Å©±â°¡ µû·Î ±¸¼ºµÇ¾î ÀÖ´Ù. MSB´Â signÀ̰í ÇÏÀ§ bitµéÀº magnitudeÀÌ´Ù. ÀÌ
¹æ½ÄÀº ³í¸®ÀûÀ¸·Î´Â °£´ÜÇØ º¸ÀÌÁö¸¸, ¿¬»êÀ» À§Çؼ º¹ÀâÇÑ È¸·Î°¡ ÇÊ¿äÇϹǷΠ»ó´ëÀûÀ¸·Î ¼Óµµ°¡ ´À·Á¼ °ÅÀÇ »ç¿ëÇÏÁö ¾Ê´Â ¹æ½ÄÀÌ´Ù.
-> ex) 34D = 0010 0010B, -33D = 1010
0001B
* 1's complement
- ¾ç¼öÀÇ °æ¿ì´Â
sign & magnitudeÀÇ
°æ¿ì¿Í °°À¸³ª À½¼öÀÇ °æ¿ì¿¡´Â ±× ¼öÀÇ ¸ðµç
bit¿¡
complement¸¸ ÃëÇÏ´Â ¹æ½ÄÀÌ´Ù. ÀÌ ¹æ½Ä ¿ª½Ã
°ÅÀÇ »ç¿ëÇÏÁö ¾Ê´Â ¹æ½ÄÀÌ´Ù.
-> ex) - 34D = 1101 1101B
* 2's complement
- ¾ç¼öÀÎ °æ¿ì
¾ÕÀÇ ¹æ½Ä°ú °°Áö¸¸, À½¼öÀÎ °æ¿ì´Â 1's complement¿¡¼ ó·³ ¸ðµç
bit¸¦
complementÇÑ ÈÄ 1À»
´õÇØÁÖ¸é µÈ´Ù. ¿¹¸¦ µé¾î 8bit number system¿¡¼,
-19D = complement(0001 0011) + 1 = 1110 1100 + 1 =
1110 1101 = 0EDH
16bit ¿¡¼´Â
-255D = complement(0000 0000 1111 1111) + 1 = 1111
1111 0000 0001 = 0FF01H
°¡ µÈ´Ù.
µû¶ó¼ n bit system¿¡¼´Â
- ~ -1
±îÁö
³ªÅ¸³¾ ¼ö ÀÖ´Ù.
°ÅÀÇ ¸ðµç
digital system(processor, conroller,...) ¿¡¼´Â ÀÌ
¹æ½ÄÀ» »ç¿ëÇÑ´Ù.
*********************************************************
(5) short index ¹øÁö ÁöÁ¤
°£Á¢
¹øÁö ÁöÁ¤ ¹æ½Ä°ú ºñ½ÁÇϳª
8bitÀÇ
index(offset)¿Í ÇÔ²² ·¹Áö½ºÅÍÀÇ ³»¿ëÀ»
´õÇØ¼ ½ÇÁ¦ memory ÁÖ¼Ò¸¦ ¸¸µç´Ù. À̶§ÀÇ
index´Â 8bitÀÇ ºÎÈ£ ÀÖ´Â
¼ö(-128(80H)~+127(7FH))°¡µÈ´Ù. index´Â [ ]
¾Õ¿¡ ½á ÁÖ¸é µÈ´Ù.
Á¦ 2 operand Çü½Ä : (signed byte number(offset))[(word pointer in register
file)]
ex) LD 70H, 50H[60H] ( ¸í·É ½ÇÇà Àü )
ÁÖ¼Ò |
: |
|
61H |
90H |
high byte |
60H |
10H |
low byte |
: |
: |
|
: |
: |
|
71H |
?? |
high byte |
70H |
?? |
low byte |
6FH |
: |
|
|
ÁÖ¼Ò |
|
: |
: |
9061H |
99H |
9060H |
88H |
: |
: |
9011H |
33H |
9010H |
22H |
: |
: |
|
; 60HÀÇ word registerÀÇ ³»¿ë¿¡ 50H¸¦
´õÇÑ address¸¦ °®´Â
; memoryÀÇ ³»¿ëÀ»
70H·Î word Àü¼ÛÇÑ´Ù.
( ¸í·É ½ÇÇà
ÈÄ
)
ÁÖ¼Ò |
: |
|
61H |
90H |
high byte |
60H |
10H |
low byte |
: |
: |
|
: |
: |
|
71H |
99H |
high byte |
70H |
88H |
low byte |
6FH |
: |
|
|
ÁÖ¼Ò |
|
: |
: |
9061H |
99H |
9060H |
88H |
: |
: |
9011H |
33H |
9010H |
22H |
: |
: |
|
LDB 70H, -5[60H] ( ¸í·É ½ÇÇà Àü )
ÁÖ¼Ò |
: |
61H |
90H |
60H |
18H |
: |
: |
: |
: |
71H |
: |
70H |
18H |
6FH |
: |
|
ÁÖ¼Ò |
|
: |
: |
9018H |
88H |
9017H |
77H |
9016H |
66H |
9015H |
55H |
9014H |
44H |
9013H |
33H |
|
60H°¡
°¡¸®Å°´Â ÁÖ¼Ò¿¡ -5¸¦ ÇÑ
ÁÖ¼Ò¸¦ °®´Â memoryÀÇ
; ³»¿ëÀ» 70H·Î byte
Àü¼ÛÇÑ´Ù.
( ¸í·É
½ÇÇà ÈÄ
)
ÁÖ¼Ò |
: |
61H |
90H |
60H |
18H |
: |
: |
: |
: |
71H |
: |
70H |
33H |
6FH |
: |
|
ÁÖ¼Ò |
|
: |
: |
9018H |
88H |
9017H |
77H |
9016H |
66H |
9015H |
55H |
9014H |
44H |
9013H |
33H |
|
ST 70H, -100[80H]
; 70HÀÇ
word ³»¿ëÀ» 80H°¡ °¡¸®Å°´Â ÁÖ¼Ò
-100À» ÇÑ ÁÖ¼Ò
; ¸¦
°®´Â memory¿¡ ÀúÀåÇÑ´Ù. 70H <= [80H]-100
STB 80H, 80[90H]
(6) long index ¹øÁö ÁöÁ¤
short index ¹øÁö ÁöÁ¤°ú
°°Àºµ¥, index°¡ 8bit°¡ ¾Æ´Ï¶ó 16bit
ºÎÈ£ ÀÖ´Â(signed) ¼ýÀÚ(-32768~+32767)°¡ µÈ´Ù. ³ª¸ÓÁö´Â
À§¿Í µ¿ÀÏÇÏ´Ù.
Á¦ 2 operand Çü½Ä : (signed word number(offset))[(word pointer in register
file)]
ex) LD 60H, 4000H[60H] ; 60H°¡ °¡¸®Å°´Â ÁÖ¼Ò¿¡
4000H¸¦ ´õÇÑ ÁÖ¼Ò¸¦ °®´Â
; memoryÀÇ ³»¿ëÀ»
60H¿¡ word Àü¼ÛÇÑ´Ù.
STB 70H,
0FF00H[60H] ( ¸í·É ½ÇÇà Àü )
ÁÖ¼Ò |
: |
61H |
95H |
60H |
06H |
: |
: |
: |
: |
71H |
: |
70H |
18H |
6FH |
: |
|
ÁÖ¼Ò |
|
: |
: |
9506H |
?? |
9505H |
?? |
: |
: |
9407H |
?? |
9406H |
?? |
: |
: |
|
; 70HÀÇ word³»¿ëÀ» 60H°¡
°¡¸®Å°´Â ÁÖ¼Ò¿¡ 0FF00H¸¦
; (-100H) ´õÇÑ ÁÖ¼Ò¸¦
°®´Â memory¿¡ byte Àü¼ÛÇÑ´Ù.
( ¸í·É
½ÇÇà ÈÄ
)
ÁÖ¼Ò |
: |
61H |
95H |
60H |
06H |
: |
: |
: |
: |
71H |
: |
70H |
18H |
6FH |
: |
|
ÁÖ¼Ò |
|
: |
: |
9506H |
?? |
9505H |
?? |
: |
: |
9407H |
?? |
9406H |
18H |
: |
: |
|
(7) zero register ¹øÁö ÁöÁ¤
zero register ¹øÁö ÁöÁ¤Àº long
index addressing°ú
ºñ½ÁÇÏ´Ù. ±×·¯³ª °£Á¢ ¹øÁö
ÁöÁ¤¿¡ »ç¿ëµÇ´Â register°¡ zero register(SFR 0H : register
R0)·Î °íÁ¤µÇ¾î ÀÖ´Ù´Â °ÍÀÌ
´Ù¸£´Ù. Áï, zero register´Â Ç×»ó 0ÀÌ
ÀúÀåµÇ¾î ÀÖÀ¸¹Ç·Î, offset¸¸À» ÀÌ¿ëÇØ¼ Á÷Á¢
¹øÁö ÁöÁ¤(register direct addressing)À» ÇÒ ¼ö°¡
ÀÖ°Ô µÈ´Ù. Áï, ¿ÜºÎ
memory³ª IO, »óÀ§ RAM ¿µ¿ªÀ» Á÷Á¢ ¹øÁö
ÁöÁ¤À» ÅëÇØ accessÇÒ ¼ö°¡ ÀÖ°Ô
µÈ´Ù. (¾Õ¿¡¼, ¿ÜºÎ¸¦ accessÇϱâ
À§Çؼ´Â indirect
addressingÀ» »ç¿ëÇØ¾ß ÇÑ´Ù°í Çß´Ù.)
Á¦ 2 operand Çü½Ä : (signed word(or byte) number(offset))[0]
ex) LD 80H, 5432H[0] ; 5432HÀÇ ³»¿ëÀ» 80H¿¡ word
Àü¼ÛÇÑ´Ù.
; (0¹øÁö¿¡´Â Ç×»ó
0ÀÌ ÀúÀåµÇ¾îÀֱ⠶§¹®)
STB 80H, 4321H[0]
; 80HÀÇ
³»¿ëÀ» 4321H¿¡ byte Àü¼ÛÇÑ´Ù.
STB 90H, 120H[0]
(8) Stack pointer register ¹øÁö ÁöÁ¤
stack pointer¸¦ °£Á¢
¹øÁö ÁöÁ¤¿¡ »ç¿ëÇÑ´Ù. ¶ÇÇÑ short,
long index ¹øÁö ÁöÁ¤¿¡µµ »ç¿ëÇÒ ¼ö
ÀÖ´Ù.
Á¦ 2 operand Çü½Ä : (signed word(or byte) number(offset))[SP]
ex) LD 80H, 100H[SP] ; Stack
Pointer°¡ °¡¸®Å°´Â ÁÖ¿¡ 100H¸¦
´õÇÑ ÁÖ¼Ò¸¦ °®´Â
; memoryÀÇ ³»¿ëÀ»
80H¿¡ word Àü¼ÛÇÑ´Ù.
(9) ³»ºÎ RAM »óÀ§
256byte(100H~1FFH)¸¦
»ç¿ëÇÏ´Â ¹æ¹ý
¾Õ¿¡¼
³»ºÎ RAM Áß ÇÏÀ§ 232 byte´Â
register file·Î °£Á¢ ¹øÁö ÁöÁ¤À̳ª
¿¬»ê¿¡ »ç¿ëÇÒ ¼ö ÀÖ´Ù°í
Çß´Ù. ±×·¸´Ù¸é ³»ºÎ RAMÀº
¾î¶»°Ô ¾µ ¼ö ÀÖÀ»±î?
³»ºÎ
RAM ¿ª½Ã registeró·³ »ç¿ëÀÌ °¡´ÉÇÏ´Ù.
±×·¯³ª window¸¦ ÀÌ¿ëÇÏ¿© ƯÁ¤
¿µ¿ªÀ» register file
¿µ¿ª¿¡ mapping ½ÃÄѼ »ç¿ëÇØ¾ß ÇÑ´Ù.
¾Õ¿¡¼ ³ª¿Â ³»¿ëÀ» ´Ù½Ã
»ìÆìº¸ÀÚ.
window¸¦ ¼±ÅÃÇϱâ
À§Çؼ´Â WSR(Window Select
Register)À» »ç¿ëÇÑ´Ù. ´ÙÀ½Àº WSRÀÇ
°ª°ú ±× ¶§ ¼±ÅõǴÂ
windowÀÌ´Ù.
* WSR (Window Select
Register)¿¡ ÀÇÇÑ window ¼±ÅÃ
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
function |
X |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
¼öÆò window
0 |
X |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
¼öÆò window
1 |
X |
0 |
0 |
0 |
1 |
1 |
1 |
1 |
¼öÆò window
15 |
X |
1 |
0 |
0 |
X |
X |
X |
X |
¼öÁ÷ window
32 |
X |
0 |
1 |
0 |
0 |
X |
X |
X |
¼öÁ÷ window
64 |
X |
0 |
0 |
1 |
0 |
0 |
X |
X |
¼öÁ÷ window
128 |
À̹Ì
¾Õ¿¡¼ ¼öÆò windowÀÇ »ç¿ëÀº ¹è¿ü´Ù.
¼öÆò window´Â SFR ¿µ¿ªÀ» ¹Ù²Ù±â
À§ÇØ »ç¿ëÇÑ´Ù. ±×·¯³ª ¼öÁ÷
window´Â »óÀ§ÀÇ 256 byteÀÇ RAMÀ» »ç¿ëÇϱâ
À§ÇØ »ç¿ëÇÑ´Ù. ±×¸®°í WSR°ª¿¡
µû¶ó RAMÀÇ ¿µ¿ªÀÌ register fileÀÇ Æ¯Á¤ÇÑ
¿µ¿ªÀ¸·Î mappingµÇ¾î »óÀ§ RAMÀ»
register fileó·³ »ç¿ëÇÒ ¼ö°¡ ÀÖ°Ô
µÈ´Ù. 32byte windowÀÇ °æ¿ì´Â Å©±â°¡
32byteÀ̹ǷΠ8°³, 64byteÀÇ °æ¿ì¿¡´Â 64byteÀ̹ǷÎ
4°³, 128byteÀÇ °æ¿ì¿¡´Â Å©±â°¡
128byteÀ̹ǷΠ2°³ÀÇ ¿µ¿ª(window)·Î
³ª´µ°Ô µÈ´Ù. À̵éÀº ´ÙÀ½°ú
°°ÀÌ ¸î °³ÀÇ window·Î
³ª´µ°í register file¿¡ mappingµÈ´Ù. bit 7Àº DMA¿¡¼ »ç¿ëÇϹǷÎ
window¿Í´Â »ó°ü¾ø´Ù. (X : don't care)
32byte window |
64byte window |
128byte window |
WSR |
base address |
WSR |
base address |
WSR |
base address |
X100 1111 |
01E0H |
X010 0111 |
01C0H |
X001 0011 |
0180H |
X100 1110 |
01C0H |
X010 0110 |
0180H |
X001 0010 |
0100H |
X100 1101 |
01A0H |
X010 0101 |
0140H |
mapping ¿µ¿ª |
0080H |
X100 1100 |
0180H |
X010 0100 |
0100H |
|
|
X100 1011 |
0160H |
mapping ¿µ¿ª |
00C0H |
|
|
X100 1010 |
0140H |
|
|
|
|
X100 1001 |
0120H |
|
|
|
|
X100 1000 |
0100H |
|
|
|
|
mapping ¿µ¿ª |
00E0H |
|
|
|
|
¿¹¸¦
µé¾î »óÀ§ RAM 01C8H¸¦ »ç¿ëÇÏ°í ½Í´Ù¸é,
WSR=X1001110B°¡ µÇ¾î¾ß Çϰí(32 byte window »ç¿ë), 01C0H~01DFH¿µ¿ªÀº register file 00E0H~00FFHÀÇ ¿µ¿ª¿¡
mappingÀÌ µÇ¹Ç·Î, 01C8Àº register file 00C8H¸¦ accessÇÏ¸é µÉ °ÍÀÌ´Ù.
¹°·Ð ÀÌ´Â Á÷Á¢ ¹øÁö
ÁöÁ¤À¸·Î »ç¿ëµÉ ¼ö ÀÖ´Ù.
II-II-1-3 ±× ¹ÛÀÇ
´Ù¸¥ data Àü¼Û ¸í·É
(1) XCH/XCHB (eXCHange)
µÎ registerÀÇ
³»¿ëÀ» ¼·Î ±³È¯ÇÑ´Ù. ÀÌ
¸í·ÉÀº immediate, indirect
addressingÀº »ç¿ëÇÒ ¼ö ¾ø´Ù. ±×·¯³ª ByteÀÇ °æ¿ì zero
register addressing˼
»ç¿ëÇÒ ¼ö ÀÖ´Ù.
Çü½Ä>
XCH (word
register), (word register)
XCHB (byte
register), (byte register/zero register addressing)
ex) XCH 70H, 86H ; register
70HÀÇ ³»¿ë°ú register 86HÀÇ ³»¿ëÀ» ¼·Î
¹Ù²Û´Ù.(word)
XCHB 70H,
1860H[0] ; register 70HÀÇ ³»¿ë°ú memory 1860HÀÇ ³»¿ëÀ»
¼·Î ¹Ù²Û´Ù.(byte)
(2) LDBSE (LoaD
Byte with Sign Extension) - Load integer with short integer
byte registerÀÇ ³»¿ëÀÌ
ºÎÈ£ È®ÀåµÇ¾î word register·Î ÀúÀåµÈ´Ù. Áï, byte
register(2nd operand)ÀÇ
³»¿ëÀÌ 0 ÀÌ»óÀ̸é(80H º¸´Ù ÀÛÀ¸¸é) word register(1st operand)ÀÇ »óÀ§
byte´Â 0, 0 º¸´Ù ÀÛÀ¸¸é(80H ÀÌ»óÀ̸é)
word registerÀÇ »óÀ§ byte´Â FFH°¡
µÈ´Ù.
Çü½Ä>
LDBSE (word
register), (byte register)
ex) 60H(byte) =>
ºÎȣȮÀå => 0060H(word)
; 96(decimal)
90H(byte) => ºÎȣȮÀå => FF90H(word) ;
-112(decimal)
(3) LDBZE (LoaD
Byte with Zero Extension) - Load word with byte
byte registerÀÇ ³»¿ëÀÌ
ºÎȣȮÀå ¾øÀÌ word register¿¡ ÀúÀåµÈ´Ù. Áï, word
register(1st operand)ÀÇ
»óÀ§ byte´Â 0ÀÌ µÈ´Ù.
Çü½Ä>
LDBZE (word
register), (byte register)
ex) LDBZE 50H, 80H ( ¸í·É
½ÇÇà Àü )
ÁÖ¼Ò |
: |
81H |
11H |
80H |
22H |
: |
: |
: |
: |
51H |
: |
50H |
99H |
4FH |
: |
; 80H byte
registerÀÇ ³»¿ëÀÌ 50H word register¿¡ ºÎÈ£
; È®Àå ¾øÀÌ
ÀúÀåµÈ´Ù.
( ¸í·É
½ÇÇà ÈÄ
)
ÁÖ¼Ò |
: |
81H |
11H |
80H |
22H |
: |
: |
: |
: |
51H |
00H |
50H |
22H |
4FH |
: |
(4) BMOVI (Block
Move Interruptible)
memory ÀÓÀÇÀÇ À§Ä¡ÀÇ word
data¸¦ ´Ù¸¥ À§Ä¡·Î block Àü¼ÛÇÒ
¶§ »ç¿ëÇÑ´Ù. À̴ ƯÁ¤ memory
blockÀÇ word dataµéÀ» ´Ù¸¥ °÷À¸·Î
block´ÜÀ§·Î ÀúÀåÇÒ ¶§¿¡ Æí¸®ÇÑ
¸í·ÉÀÌ´Ù.
Çü½Ä>
BMOVI (long
register), (word register)
note>
1. 1nd operand´Â long register·Î óÀ½¿¡´Â source base address, ´ÙÀ½Àº destination base address¸¦ °®°í
ÀÖÀ¸¸ç, ÀÌ source/destination
address´Â ÀÚµ¿ Áõ°¡ ±â´ÉÀÌ
ÀÖ´Â °£Á¢ ¹øÁö ÁöÁ¤À»
»ç¿ëÇÑ´Ù.
2. 2nd operand´Â ¿Å°Ü¾ß
ÇÒ word ¼ö¸¦ ¼¼´Â counterÀ̸ç, ÀÌ
word counter¸¸Å
Àü¼ÛµÈ´Ù.
3. block counter¸¦ ÁöÁ¤Çϸé block counter´Â ÀÚµ¿À¸·Î °¨¼ÒÇÏÁö ¾Ê±â
¶§¹®¿¡
DJNZ/DJNZW¿Í °°ÀÌ »ç¿ëÇÏ¿©¾ß ÇÑ´Ù.
4. ÀÌ ¸í·ÉÀÌ
½ÇÇàµÇ´Â µ¿¾È interrupt´Â »ç¿ë °¡´ÉÇÏ´Ù. 80C196KC¿¡¼ º¸°µÈ
¸í·ÉÀÌ´Ù.
ex) LD 60H, #3000H ; source base
address
LD 62H, #8000H
; destination base address
LD 40H, #3 ; word counter
BMOVI 60H, 40H
; 1. [62H]¡ç[60H]
; 2. [60H]¡ç[60H]+2, [62H]¡ç[62H]+2
; 3. [40H]¡ç[40H]-1
Áï, 3000HºÎÅÍ 3°³ÀÇ word¸¦
8000H·Î ¸ðµÎ Àü¼ÛÇÑ´Ù.
( BMOVI ¸í·É ½ÇÇà
Àü
)
ÁÖ¼Ò |
low byte |
high byte |
|
62H |
00H |
80H |
destination base |
60H |
00H |
30H |
source base |
: |
: |
: |
|
42H |
: |
: |
|
40H |
03H |
00H |
block counter |
3EH |
: |
: |
|
: |
: |
: |
|
|
ÁÖ¼Ò |
low byte |
high byte |
|
8004H |
? |
? |
destination |
8002H |
? |
? |
8000H |
? |
? |
: |
: |
: |
|
3004H |
55H |
66H |
source |
3002H |
33H |
44H |
3000H |
11H |
22H |
|
( BMOVI ¸í·É ½ÇÇà
ÈÄ
)
ÁÖ¼Ò |
low byte |
high byte |
|
62H |
00H |
80H |
destination address |
60H |
00H |
30H |
source address |
: |
: |
: |
|
42H |
: |
: |
|
40H |
03H |
00H |
block counter |
3EH |
: |
: |
|
: |
: |
: |
|
|
ÁÖ¼Ò |
low byte |
high byte |
|
8004H |
55H |
66H |
destination |
8002H |
33H |
44H |
8000H |
11H |
22H |
: |
: |
: |
|
3004H |
55H |
66H |
source |
3002H |
33H |
44H |
3000H |
11H |
22H |
|
II-II-2. »ê¼ú ¿¬»ê
¸í·É
»ê¼ú
¿¬»ê ¸í·É¿¡´Â Áõ°¡/°¨¼Ò,
µ¡¼À/»¬¼À, °ö¼À/³ª´°¼À,
ºñ±³ µîÀÇ ¸í·ÉÀÌ ÀÖÁö¸¸,
ºñ±³ ¸í·ÉÀº µÚÀÇ branch¸í·É¿¡¼
»ìÆìº¸µµ·Ï ÇÏÀÚ.
II-II-2-1. PSW(Program Status
Word)
»ê¼ú
¿¬»ê ¸í·ÉÀ» ¹è¿ì±â Àü¿¡
¸ÕÀú ¾Ë¾ÆµÎ¾î¾ß ÇÒ °ÍÀÌ
ÀÖ´Ù. ¹Ù·Î PSW(Program Status Word)ÀÌ´Ù. ȤÀº 8x86 °è¿¿¡¼´Â
flags¶ó°íµµ ÇÑ´Ù. PSW´Â ÇöÀçÀÇ
»ê¼ú ¿¬»êÀ̳ª °¢Á¾ ¸í·ÉµéÀÇ
°á°ú¸¦ ¹Ý¿µÇÑ´Ù. (¹Ù·Î Á÷ÀüÀÇ)
µû¶ó¼ ÀÌ register¸¦ ºÐ¼®ÇÔÀ¸·Î¼ ¿¬»êÀÇ
°á°ú¸¦ ¾Ë ¼ö°¡ ÀÖ´Ù.
¶Ç »ê¼ú ¿¬»êÀ» ÀÌÇØÇϱâ
À§Çؼµµ ¹Ýµå½Ã ÀÌ´Â ¾Ë¾ÆµÎ¾î¾ß
ÇÑ´Ù. PSWÀÇ low byte´Â interrupt mask register·Î »ç¿ëµÇ±â ¶§¹®¿¡ high
byte¸¸ »ìÆìº¸¸é ´ÙÀ½°ú °°´Ù.
ÀÌ flagµéÀ» condition flag¶ó°í ÇÑ´Ù.
15 |
14 |
13 |
12 |
11 |
10 |
9 |
8 |
bit number |
Z |
N |
V |
VT |
C |
PSE |
I |
ST |
flag |
°¢
flagµéÀÇ ±â´ÉÀº ´ÙÀ½°ú °°´Ù.
(1) I (Interrupt enable flag) : InterruptÀÇ °¡´É/ºÒ°¡´ÉÀ»
Á¦¾îÇÏ´Â flagÀ̰í, NMI, TRAP, undefined OP code
interrupt¸¦ Á¦¿ÜÇÑ ¸ðµç interruptÀÇ
enable/disableÀ» °áÁ¤ÇÑ´Ù. ¶Ç EI(Enable Interrupt)¿Í DI(Disable Interrupt) ¸í·É¿¡ ÀÇÇØ
°ªÀ» ¹Ù²Ü ¼ö ÀÖ´Ù.
I=1À̸é enbale, I=0À̸é disable µÈ´Ù.
(2) PSE (Peripheral transaction
Server Enable) : PTSÀÇ
°¡´É/ºÒ°¡´ÉÀ» Á¦¾îÇÏ´Â flagÀÌ´Ù.
EPTS¿Í DPTS ¸í·ÉÀ» ÀÌ¿ëÇØ¼ Á¦¾îÇϸç
PSE=1À̸é enable,
PSE=0À̸é disableµÈ´Ù.
(3) Z (Zero flag) : ¿¬»ê °á°ú°¡
0ÀÎÁö¸¦ ³ªÅ¸³»´Â flagÀÌ´Ù. ¿¬»ê °á°ú°¡
0À̸é set(1), 0ÀÌ ¾Æ´Ï¸é clear(0)µÈ´Ù.
(4) C
(carry flag) : »ê¼ú ¿¬»ê¿¡¼ MSB¿¡¼
carry(¿Ã¸²¼ö³ª ³»¸²¼ö)°¡ »ý±â¸é
setµÈ´Ù. ±×·¯³ª »¬¼À ¿¬»ê¿¡¼
borrow°¡ ¹ß»ýÇϸé clear(0), ¹ß»ýÇÏÁö ¾ÊÀ¸¸é set(1) µÈ´Ù.
´Ù¸¥ CPU¿Í´Â ¾à°£ µ¿ÀÛÀÌ
Ʋ¸®´Ù. ¶Ç shift ¸í·É¿¡¼ shiftµÈ ¸¶Áö¸· bit°¡ carry
flag·Î ³ª¿À°Ô(shift out)µÈ´Ù. µû¶ó¼ ÀÌ
°æ¿ì ¸¶Áö¸· bitÀÇ »óŸ¦
checkÇÒ ¼ö ÀÖ´Ù. ¶Ç
carry¸¸À» À§ÇÑ ¸í·ÉÀÌ ÀÖ¾î
ÀÌ bit¸¸À» clear/set ÇÒ ¼ö°¡ ÀÖ´Ù.(SETC,
CLRC)
(5) N
(Negative flag) : ¿¬»ê °á°úÀÇ ºÎÈ£¸¦
¾Ë ¼ö ÀÖ´Ù. °á°ú°¡
negativeÀ̸é setµÇ°í positiveÀ̸é clearµÈ´Ù. ±×·±µ¥ 196ÀÇ N
bit´Â ´Ù¸¥ CPU¿Í´Â ¾à°£
´Ù¸£°Ô µ¿ÀÛÇÑ´Ù. ¿¹¸¦ µé¸é
´ÙÀ½°ú °°´Ù.
¨ç 80H+80H=00H ;
(-)+(-)¸¦ Çϸé (-)°¡ µÇ¾î¾ß
Çϴµ¥, °á°ú°¡ (+)°¡ µÇ¾ú´Ù.
ÀÌ ¶§ N flag´Â °á°ú°¡
(-)°¡ µÇ¾î¾ß ÇÑ´Ù´Â °ÍÀ»
°¡¸®Å°±â À§ÇØ set('1')µÈ´Ù.
¨è 44H+44H=88H ;
(+)+(+)¸¦ Çϸé (+)°¡ µÇ¾î¾ß
Çϴµ¥, °á°ú°¡ (-)°¡ µÇ¾ú´Ù.
ÀÌ ¶§ N flag´Â °á°ú°¡
(+)À̾î¾ß ÇÑ´Ù´Â °ÍÀ» °¡¸®Å°±â
À§ÇØ clear('0')µÈ´Ù.
(6) V
(oVerflow flag) : overflow°¡ »ý±â¸é setµÈ´Ù.
Áï,
¨ç ¿¬»ê °á°ú°¡ 8bitÀÎ
°æ¿ì -128~+127,
16bitÀÎ °æ¿ì -32768~+32767À» ³ÑÀ¸¸é setµÈ´Ù.
¨è ³ª´°¼ÀÀÇ °æ¿ì, unsigned byteÀÎ °æ¿ì
¸ò>255 (0FFH) ÀÏ ¶§, unsigned wordÀÎ °æ¿ì
¸ò>65535 (0FFFFH)
ÀÏ ¶§, signed byteÀÎ °æ¿ì -128(80H)>¸ò>+127(7FH) ÀÏ
¶§, signed wordÀÎ °æ¿ì -32768 (8000H)>¸ò>+32767(7FFFH) ÀÏ ¶§
setµÈ´Ù.
¨é shift left ¸í·É¿¡¼ shiftÇÏ´Â µ¿¾È operandÀÇ
ÃÖ»óÀ§ bit°¡ º¯Çϸé set µÈ´Ù.
(7) VT
(oVerflow Trap flag) : V flag°¡ setµÇ¸é V flag´Â
setµÈ´Ù. VT flag´Â ƯÁ¤ ¸í·É(CLRVT,
JVT, JNVT)À¸·Î¸¸ clear
½Ãų ¼ö ÀÖ´Ù. µû¶ó¼
±ä ¿¬»êÀ» ÇÒ °æ¿ì
°¢ ¸í·ÉÀ» ½ÇÇàÇÑ ÈÄ V
flag¸¦ °Ë»çÇÏ´Â °Íº¸´Ù ¸ðµç
¿¬»êÀÌ ³¡³ ÈÄ VT flag¸¦
°Ë»çÇÏ´Â °ÍÀÌ ´õ È¿À²ÀûÀÌ´Ù.
(8) ST
(STicky flag) : shift right ¸í·É¿¡¼ '1'ÀÌ Ã³À½ carry
flag·Î shiftµÈ ÈÄ¿¡ ±×
´ÙÀ½ shift¿¡¼ ST flag·Î shiftµÈ´Ù. µû¶ó¼ ST
flag´Â shift right
ÈÄ¿¡ ¼Ò¼öÁ¡ ÀÌÇÏÀÇ ¹Ì¼¼ÇÑ
º¸Á¤¿¡ »ç¿ëÇÑ´Ù.

|