8051
AVR
EZLab
PIC
80C196KC
DSP
ARM
VHDL
¸¶ÀÌÅ©·Î¸¶¿ì½º
·Îº¿Ã౸
Battle ·Îº¿
·Îº¿´ëȸ
È޸շκ¿
Embeded Linux
HW/SW °­ÁÂ
RTOS
 
 


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




 

»óÈ£ : (ÁÖ) ·Îº¸ºí·° »ç¾÷ÀÚµî·Ï¹øÈ£:214-86-56219 Åë½ÅÆǸž÷½Å°í19-2544 ´ëÇ¥: ½Å´ë¼· ÀüÈ­:(02)2679-8556 Fax :(02)2679-8557 [°³ÀÎÁ¤º¸Ã³¸®¹æħ]
º»»ç : °æ±âµµ ºÎõ½Ã ¿ø¹Ì±¸ ¾à´ëµ¿ ºÎõ Å×Å©³ëÆÄÅ© 401µ¿ 502È£     ¼­¿ï»ç¹«¼Ò : ¼­¿ï½Ã ¿µµîÆ÷±¸ ¹®·¡µ¿ 4°¡ 8-1 4Ãþ
Copyright(C) 2004, (ÁÖ) ·Îº¸ºí·° ½Ã½ºÅÛÁî All Rights Reserved E-Mail : WebMaster