|
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 ÈÄ¿¡ ¼Ò¼öÁ¡ ÀÌÇÏÀÇ ¹Ì¼¼ÇÑ º¸Á¤¿¡ »ç¿ëÇÑ´Ù.
|