8051

       AVR

       EZLab

       PIC

       80C196KC

       DSP

       ARM

       VHDL

       ¸¶ÀÌÅ©·Î ¸¶¿ì½º

       ·Îº¿ Ã౸

       Battle ·Îº¿

       °¢Á¾ ·Îº¿´ëȸ

       È޸շκ¿

       Embeded Linux

       HW/SW °­ÁÂ

       RTOS

 

 



2. 196À» ¹è¿öº¸ÀÚ

 

II. 196 Assember

II-II. º»°ÝÀûÀÎ 196 ¾î¼Àºí¸®¾î

II-II-2. »ê¼ú ¿¬»ê ¸í·É

II-II-2-1. PSW(Program Status Word)

80C196KC ÀÇ ¸í·ÉÀÌ ¾ÕÀÇ flag¿¡ ¹ÌÄ¡´Â ¿µÇâÀº ´ÙÀ½°ú °°´Ù.

¸í·É

Flags

¸í·É

Flags

¸í·É

Flags

Z

N

C

V

VT

ST

Z

N

C

V

VT

ST

Z

N

C

V

VT

ST

LD/LDB







SUBC/SUBCB

¡é

¡î

¡î

¡î

¡è


condi. branch







ST/STB







CMP/CMPB/CMPL

¡î

¡î

¡î

¡î

¡è


DJNZ/DJNZW







XCH/XCHB







MUL/MULU






?

NOP







BMOV,BMOVI







MULB/MULUB






?

SKIP







LDBSE/LDBZE







DIV/DIVU

¡î

¡î

¡î

¡î

¡è


TIJMP







INC/INCB

¡î

¡î

¡î

¡î

¡è


DIVB/DIVUB

¡î

¡î

¡î

¡î

¡è


PUSH/POP







DEC/DECB

¡î

¡î

¡î

¡î

¡è


AND/ANDB

¡î

¡î

0

0



PUSHF

0

0

0

0

0

0

CLR/CLRB

1

0

0

0



OR/ORB

¡î

¡î

0

0



POPF

¡î

¡î

¡î

¡î

¡î

¡î

NEG/NEGB

¡î

¡î

¡î

¡î

¡è


XOR/XORB

¡î

¡î

0

0



PUSHA

0

0

0

0

0

0

EXT/EXTB

¡î

¡î

0

0



NOT/NOTB

¡î

¡î

0

0



POPA

¡î

¡î

¡î

¡î

¡î

¡î

SETC



1




SHL/SHLB/SHLL

¡î

¡î

¡î

¡î

¡è


SCALL/LCALL







CLRC



0




SHR/SHRB/SHRL

¡î

¡î

¡î

0


¡î

RET







CLRVT





0


SHRA/SHRAB

¡î

¡î

¡î

0


¡î

DI/EI

DPTS/EPTS

ADD/ADDB

¡î

¡î

¡î

¡î

¡è


SHRAL

¡î

¡î

¡î

0


¡î

IPLPD







ADDC/ADDCB

¡é

¡î

¡î

¡î

¡è


NORML

¡î

¡î

¡î

0



TRAP







SUB/SUBB

¡î

¡î

¡î

¡î

¡è


SJMP/LJMP/BR







RST







* flagÀÇ ÀÇ¹Ì - ¡î : ¸í·É °á°ú¿¡ µû¶ó¼­ clear/set 0 : clear 1 : set

¡è : ¸í·É µ¿ÀÛ¿¡ µû¶ó¼­ set, °áÄÚ clearµÇÁö ¾Ê´Â´Ù.

¡é : ¸í·É µ¿ÀÛ¿¡ µû¶ó¼­ clear, °áÄÚ setµÇÁö ¾Ê´Â´Ù.

°ø¹é : flag¿¡ ¿µÇâÀ» ÁÖÁö ¾Ê´Â´Ù. ? : Á¤ÀǵÇÁö ¾ÊÀ½

´ÙÀ½Àº 196KC »ê¼ú ¿¬»ê ¸í·ÉÀ» ¸ðµÎ Á¤¸®ÇÑ °ÍÀÌ´Ù.

mnemonic

byte

state

operands

flags

1st

2nd

3rd

Z

N

C

V

VT

ST

INC

2

4

wreg



¡î

¡î

¡î

¡î

¡è


INCB

2

4

breg



¡î

¡î

¡î

¡î

¡è


DEC

2

4

wreg



¡î

¡î

¡î

¡î

¡è


DECB

2

4

breg



¡î

¡î

¡î

¡î

¡è


CLR

2

4

wreg



1

0

0

0

-

-

CLRB

2

4

breg



1

0

0

0

-

-

NEG

2

4

wreg



¡î

¡î

¡î

¡î

¡è


NEGB

2

4

breg



¡î

¡î

¡î

¡î

¡è


EXT

2

4

lreg



¡î

¡î

0

0



EXTB

2

4

wreg



¡î

¡î

0

0



SETC

2

4






1




CLRC

1

4






0




CLRVT

1

4








0


ADD

2+BEA

4+CEA

wreg

waop


¡î

¡î

¡î

¡î

¡è


ADD

2+BEA

4+CEA

Dwreg

Swreg

waop

¡î

¡î

¡î

¡î

¡è


ADDB

2+BEA

4+CEA

breg

baop


¡î

¡î

¡î

¡î

¡è


ADDB

2+BEA

4+CEA

Dbreg

Sbreg

baop

¡î

¡î

¡î

¡î

¡è


ADDC

2+BEA

4+CEA

wreg

waop


¡î

¡î

¡î

¡î

¡è


ADDCB

2+BEA

4+CEA

breg

baop


¡î

¡î

¡î

¡î

¡è


SUB

2+BEA

4+CEA

wreg

waop


¡î

¡î

¡î

¡î

¡è


SUB

2+BEA

4+CEA

Dwreg

Swreg

waop

¡î

¡î

¡î

¡î

¡è


SUBB

2+BEA

4+CEA

breg

baop


¡î

¡î

¡î

¡î

¡è


SUBB

2+BEA

4+CEA

Dbreg

Sbreg

baop

¡î

¡î

¡î

¡î

¡è


SUBC

2+BEA

4+CEA

wreg

waop


¡î

¡î

¡î

¡î

¡è


SUBCB

2+BEA

4+CEA

breg

baop


¡î

¡î

¡î

¡î

¡è


MUL

3+BEA

29+CEA

lreg

waop







?

MUL

3+BEA

30+CEA

lwreg

wreg

waop






?

MULB

3+BEA

21+CEA

wreg

baop







?

MULB

3+BEA

22+CEA

wbreg

breg

baop






?

MULU

2+BEA

25+CEA

wreg

waop







?

MULU

3+BEA

26+CEA

lreg

wreg

waop






?

MULUB

2+BEA

17+CEA

wreg

baop







?

MULUB

2+BEA

18+CEA

wreg

breg

baop






?

DIV

2+BEA

29+CEA

lreg

waop


¡î

¡î

¡î

¡î

¡î


DIVB

2+BEA

21+CEA

wreg

baop


¡î

¡î

¡î

¡î

¡î


DIVU

2+BEA

25+CEA

lreg

waop


¡î

¡î

¡î

¡î

¡î


DIVUB

2+BEA

17+CEA

wreg

baop


¡î

¡î

¡î

¡î

¡î


operand ¾à¾îÀÇ ÀÇ¹Ì - S.. : Source D.. : Destination

II-II-2-2. Áõ°¡/°¨¼Ò ¸í·É

(1) INC/INCB, DEC/DECB (Increase, Decrease)

registerÀÇ ³»¿ëÀ» +1Çϰųª -1ÇÏ´Â ¸í·ÉÀÌ´Ù. Áõ°¡/°¨¼Ò ¸í·ÉÀº operand°¡ ÇÑ °³À̰í indirect addressingÀº »ç¿ëÇÒ ¼ö ¾ø´Ù.

±×¸®°í C, N, V, VT, Z flag¿¡ ¿µÇâÀ» ÁØ´Ù.

Çü½Ä> INC/INCB (word/byte register) ; 1 Áõ°¡

DEC/DECB (word/byte register) ; 1 °¨¼Ò

ex) INC 80H ; 80HÀÇ word º¯¼öÀÇ ³»¿ëÀ» 1 Áõ°¡½ÃŲ´Ù.

address

low byte

high byte

Z

N

C

V

VT

ST

¸í·É ½ÇÇà Àü

80H

FFH

FFH







¸í·É ½ÇÇà ÈÄ

80H

00H

00H

1

0

1

0

0


INCB 87H ; 87HÀÇ byte º¯¼öÀÇ ³»¿ëÀ» 1 °¨¼Ò½ÃŲ´Ù.

address

data

Z

N

C

V

VT

ST

¸í·É ½ÇÇà Àü

87H

7FH







¸í·É ½ÇÇà ÈÄ

87H

80H

0

0

0

1

1


II-II-2-3. Register clear ¹× Sign extention ¸í·É

(1) CLR/CLRB (Clear word/Clear Byte)

word/byte reigsterÀÇ ³»¿ëÀ» clear('0') ½ÃŲ´Ù. ÀÌ ¸í·É ¿ª½Ã oeprand°¡ ÇÑ °³ »ÓÀ̰í indirect addressingÀº »ç¿ëµÉ ¼ö ¾ø´Ù.

Çü½Ä> CLR/CLRB (word/byte register)

ex) CLR 70H ; 70HÀÇ word º¯¼öÀÇ ³»¿ëÀ» clear½ÃŲ´Ù.([70H] ¡ç 0)

ÀÌ ¸í·ÉÀº

LD 70H, #0 ; [70H] ¡ç 0

°ú °°Àº ¸í·ÉÀÌ´Ù. ±×·¯³ª ½ÇÇà ½Ã°£°ú code ±æÀ̰¡ ´õ ª´Ù. µû¶ó¼­ register¿¡ 0À» ³Ö¾î¾ß ÇÏ´Â °æ¿ì ÀÌ ¸í·ÉÀ» ¾²´Â °ÍÀÌ

´õ È¿°úÀûÀÏ °ÍÀÌ´Ù.

(2) EXT/EXTB (EXTention word/EXTention Byte)

word/byteÀÇ ³»¿ëÀ» ºÎÈ£¸¦ È®ÀåÇÏ¿© long/word·Î ÀúÀåÇÑ´Ù. ÀÌ ¸í·ÉÀº data Àü¼Û ¸í·ÉÀÇ LDBSE¿Í ºñ½ÁÇÑ ¸í·ÉÀ̳ª,

operand°¡ ÇÑ °³»ÓÀ̶ó´Â °ÍÀÌ ´Ù¸£´Ù. ¶Ç wordÀÇ ³»¿ëÀ» ºÎÈ£ È®ÀåÇÏ¿© long¿¡ ÀúÀåÇÑ´Ù´Â °Íµµ ´Ù¸£´Ù.

±×¸®°í LDBSE´Â PSW¿¡ ¿µÇâÀ» ÁÖÁö ¾ÊÁö¸¸, ÀÌ ¸í·ÉÀº °¢ flag¿¡ ¿µÇâÀ» Áشٴ °ÍÀÌ ´Ù¸¥ Á¡ÀÌ´Ù.

Çü½Ä> EXT (long word register) ; word¸¦ ºÎÈ£ È®ÀåÇØ¼­ long word·Î ÀúÀåÇÑ´Ù.

EXTB (word register) ; byte¸¦ ºÎÈ£ È®ÀåÇØ¼­ word·Î ÀúÀåÇÑ´Ù.

ex) EXT 50H ; 50H wordÀÇ ³»¿ëÀ» ºÎÈ£ È®ÀåÇÏ¿© 50H¿¡ longÀ¸·Î ÀúÀåÇÑ´Ù.

address

low byte

high byte

Z

N

C

V

VT

ST

¸í·É ½ÇÇà Àü

52H

??

??







50H

14H

8FH

¸í·É ½ÇÇà ÈÄ

52H

FFH

FFH

0

1

0

0



50H

8FH

14H

(C, V flag´Â ¹«Á¶°Ç clear µÈ´Ù.

EXTB 60H ; 60H byteÀÇ ³»¿ëÀ» ºÎÈ£ È®ÀåÇÏ¿© 60H¿¡ word·Î ÀúÀåÇÑ´Ù.

LDBSE 60H, 70H ; 70H byteÀÇ ³»¿ëÀ» ºÎÈ£ È®ÀåÇÏ¿© 60H¿¡ word·Î ÀúÀåÇÑ´Ù. ±×·¯³ª

; flag¿¡ ¿µÇâÀ» ÁÖÁö ¾Ê´Â´Ù.

(3) NEG/NEGB (Negative/Negative Byte)

word/byte register¸¦ 2's complement¸¦ ÃëÇØ¼­ ÀúÀåÇÑ´Ù. 2ÀÇ º¸¼ö¸¦ Çϱâ À§Çؼ­´Â (0 - data)ÀÇ ¿¬»êÀ» ÇØ¼­

borrow°¡ ¹ß»ýÇÏÁö¸¸, carry flag´Â complementµÇ¾î ³ªÅ¸³­´Ù. ¶Ç, ÀÌ ¸í·ÉÀ» NOT°ú È¥µ¿ÇÏ¸é ¾ÈµÈ´Ù.

Çü½Ä> NEG/NEGB (word/byte register)

ex) NEG 80H ; word register 80HÀÇ ³»¿ëÀ» 2's complement ÇÑ´Ù.

address

low byte

high byte

Z

N

C

V

VT

ST

¸í·É ½ÇÇà Àü

80H

01H

00H







¸í·É ½ÇÇà ÈÄ

80H

FFH

FFH

0

1

0

0

0


NEGB 33H ; byte register 33HÀÇ ³»¿ëÀ» 2's complement ÇÑ´Ù.

address

low byte

high byte

Z

N

C

V

VT

ST

¸í·É ½ÇÇà Àü

32H

??

80H







¸í·É ½ÇÇà ÈÄ

32H

??

80H

0

0

0

1

1


80H¸¦ 2's complementÇϸé 80H°¡ µÈ´Ù. µû¶ó¼­ overflowÀÌ´Ù. (-128Àº ¾ç¼ö·Î Ç¥Çö ºÒ°¡´É(128)) ¶Ç ¿ø·¡ 80H´Â

(-)Àε¥, À̸¦ 2's complement¸¦ ÃëÇϸé (+)°¡ µÇ¾î¾ß Çϱ⠶§¹®¿¡, N flag´Â '0'ÀÌ µÈ´Ù.

(4) SETC/CLRC (Set Carry/ Clear Carry)

Carry flag¸¸ setÇϰųª clear ÇÏ´Â ¸í·ÉÀÌ´Ù. operand´Â ÇÊ¿ä ¾ø´Ù.

(5) CLRVT (Clear VT flag)

VT flag¸¦ clearÇÏ´Â ¸í·ÉÀÌ´Ù. V flag´Â ¸í·ÉÀ¸·Î clearµÉ ¼ö ¾øÀ¸³ª VT flag´Â ÀÌ ¸í·ÉÀ¸·Î clear°¡ °¡´ÉÇÏ´Ù.

µû¶ó¼­ ¿©·¯ ¿¬»êÀÌ ³¡³­ ÈÄ ¸ðµç °úÁ¤ÀÇ overflow¸¦ °Ë»çÇÏ´Â µ¥¿¡ VT flag¸¦ »ç¿ëÇϰí ÀÌ ¸í·ÉÀ¸·Î clear ÇÏ¸é µÈ´Ù.

ÀÌ ¸í·Éµµ operand´Â ÇÊ¿ä ¾ø´Ù.

II-II-2-4. µ¡¼À/»¬¼À ¸í·É

(1) ADD/ADDB/SUB/SUBB (Addition word/Byte, Subtraction word/Byte)

ÀÌ ¸í·ÉµéÀº operand°¡ 2°³ÀÎ °Í°ú 3°³ÀÎ °ÍÀÌ ÀÖ´Ù. (¾ÕÀå¿¡¼­ ¼³¸í)

Çü½Ä1> ADD/ADDB <1st operand>, <2nd operand> ; <1st operand> ¡ç <1st op> + <2nd op>

SUB/SUBB <1st operand>, <2nd operand> ; <1st operand> ¡ç <1st op> - <2nd op>

1st operand´Â register, 2nd operand´Â direct, indirect, immediate addressing °¡´É

Çü½Ä2> ADD/ADDB <1st op>, <2nd op>, <3rd op> ; <1st op> ¡ç <2nd op> + <3rd op>

SUB/SUBB <1st op>, <2nd op>, <3rd op> ; <1st op> ¡ç <2nd op> - <3rd op>

1st, 2nd operand´Â register, 3rd operand´Â direct, indirect, immediate addressing °¡´É

ex) ADD 40H, 50H ; [40H] ¡ç [40H] + [50H] (word)

address

low byte

high byte

Z

N

C

V

VT

ST

°á°ú°¡ 0ÀÌ ¾Æ´Ï¹Ç·Î Z=0ÀÌ´Ù. (+)+(+)ÀÇ ¿¬»êÀ» Çߴµ¥ °á°ú´Â (-)°¡ ³ª¿Ô´Ù. µû¶ó¼­, overflowÀ̹ǷΠV=1, VT=1ÀÌ´Ù. °á°ú°¡ (+)À̾î¾ß ÇÑ´Ù´Â °ÍÀ» ¾Ë¸®±â À§ÇØ N=0ÀÌ µÇ¾ú´Ù. carry´Â ¾øÀ¸¹Ç·Î C=0ÀÌ´Ù.

¸í·É ½ÇÇà Àü

50H

78H

34H







40H

49H

59H

¸í·É ½ÇÇà ÈÄ

50H

78H

34H

0

0

0

1

1


40H

C1H

8DH

ADDB 30H, 40H, 50H ; [30H] ¡ç [40H] + [50H] (byte)

address

data

Z

N

C

V

VT

ST

¸í·É ½ÇÇà Àü

50H

78H







40H

88H

30H

??

¸í·É ½ÇÇà ÈÄ

50H

78H

1

0

1

0

0


40H

88H

30H

00H

SUBB 30H, 40H, #50H ; [30H] ¡ç [40H] + 50H (byte)

address

data

Z

N

C

V

VT

ST

¸í·É ½ÇÇà Àü

40H

70H







30H

??

¸í·É ½ÇÇà ÈÄ

40H

70H

0

0

0

0

0


30H

20H

SUB 30H, [40H]+ ; [30H] ¡ç [30H] - [40H]°¡ °¡¸®Å°´Â ³»¿ë

; [40H] ¡ç [40H] + 2

address

low byte

high byte

Z

N

C

V

VT

ST

¸í·É ½ÇÇà Àü

40H

80H

12H







30H

56H

72H

1280H

36H

79H

¸í·É ½ÇÇà ÈÄ

40H

82H

12H

0

1

0

0

0


30H

20H

F9H

(2) ADDC/ADDCB/SUBC/SUBCB (Add word/byte with Carry, Sub word/byte with Carry)

carry¿Í ÇÔ²² ´õÇϰųª »©´Â ¸í·ÉÀÌ´Ù. ÀÏ¹Ý µ¡¼À/»¬¼À°ú ´Þ¸® operand´Â 2°³ÀÌ´Ù.

ÀÌ ¸í·ÉÀº ¿©·¯ byteÀÇ µ¡¼À/»¬¼À¿¡ »ç¿ëÇϱâ À§ÇÑ °ÍÀÌ´Ù. Áï, ¾Õ¼± ¿¬»ê¿¡¼­ÀÇ carry³ª borrow¸¦ ¿¬»ê¿¡¼­ »ç¿ëÇÑ´Ù.

(³ôÀº ÀÚ¸®¸¦ °è»êÇÑ´Ù.)

Çü½Ä> ADDC/ADDCB <1st op>, <2nd op> ; <1st op> ¡ç <1st op> + <2nd op> + carry

SUBC/SUBCB <1st op>, <2nd op> ; <1st op> ¡ç <1st op> - <2nd op> -

ex) ADDC 40H, 50H ; [40H] ¡ç [40H] + [50H] + carry

address

low byte

high byte

Z

N

C

V

VT

ST

¸í·É ½ÇÇà Àü

50H

78H

34H



1




40H

49H

59H

¸í·É ½ÇÇà ÈÄ

50H

78H

34H

0

0

0

1

1


40H

C2H

8DH

SUBCB 40H, #54H ; [40H] ¡ç [40H] - 54H -

address

data

Z

N

C

V

VT

ST

¸í·É ½ÇÇà Àü

40H

76H



0




¸í·É ½ÇÇà ÈÄ

40H

21H

0

0

1

0

0


II-II-2-5. °ö¼À ¸í·É

°ö¼À ¸í·É¿¡´Â ºÎÈ£ ÀÖ´Â(signed) °ö¼À°ú ºÎÈ£ ¾ø´Â(unsigned) °ö¼ÀÀÇ °æ¿ì°¡ ÀÖÀ¸¸ç, flag¿¡´Â ¿µÇâÀ» ÁÖÁö ¾Ê°í,

ST flag´Â Á¤ÀǵǾî ÀÖÁö ¾Ê´Ù. word ¡¿ word = long (at most), byte ¡¿ byte = word (at most)ÀÇ ¿¬»êÀ» ÇÑ´Ù.

(1) ºÎÈ£ ÀÖ´Â °ö¼À ¸í·É - MUL/MULB (signed Multiplication)

word ¡¿ word = long, byte ¡¿ byte = wordÀÇ °ö¼ÀÀ» ÇÏ´Â ¸í·ÉÀÌ´Ù. ÀÌ ¸í·É ¿ª½Ã ADD,

SUB¿Í ¸¶Âù°¡Áö·Î ¿ª½Ã operand°¡ µÎ °³ÀÎ °æ¿ì¿Í ¼¼ °³ÀÎ °æ¿ì°¡ ÀÖ´Ù.

¶Ç ÀÌ °æ¿ì ¸¶Áö¸· operand´Â ¸ðµç ¹øÁö ÁöÁ¤ ¹æ¹ýÀ» »ç¿ëÇÒ ¼ö°¡ ÀÖ´Ù.

Çü½Ä1> MUL/MULB <1st op>, <2nd op> ; 1st operandÀÇ word/byte registerÀÇ ³»¿ë°ú 2nd

; operand word/byte operand¸¦ °öÇØ¼­ 1st operand

; ÀÇ long/word register¿¡ ÀúÀåÇÑ´Ù.

Çü½Ä2> MUL/MULB <1st op>, <2nd op>, <3rd op>

; 2nd operandÀÇ word/byte registerÀÇ ³»¿ë°ú 3rd operandÀÇ word/byte operand¸¦

; °öÇØ¼­ 1st operandÀÇ long/word¿¡ ÀúÀåÇÑ´Ù.

ex) MUL 40H, #1000H ; [40H long word] ¡ç [40H word] ¡¿ 1000H (signed)

address

low byte

high byte


Z

N

C

V

VT

ST

¸í·É ½ÇÇà Àü

42H

??H

??H








40H

43H

59H

¸í·É ½ÇÇà ÈÄ

42H

94H

05H

high word






?

40H

00H

30H

low word

MULB 30H, 40H, 50H ; [30H word] ¡ç [40H byte] ¡¿ [50H byte] (signed)

 

 

»óÈ£: (ÁÖ) ·Îº¸ ÇöóÀÚ ÀÎÆ÷/ »ç¾÷ÀÚµî·Ï¹øÈ£:114-03-70994 / ´ëÇ¥: ¹ÚÁ¤±Ù/ ÀüÈ­¹øÈ£:(02)875-5508, Fax :(02)875-5515
Copyright(C) 2000, (ÁÖ) ·Îº¸ÇöóÀÚ ÀÎÆ÷All Rights Reserved / E-Mail : robotplaza@robotplasza.info