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

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

 

II. 196 Assember

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

II-II-4. ³í¸®(Logical) ¿¬»ê ¹× Shift ¿¬»ê ¸í·É

´ÙÀ½Àº 196KCÀÇ ³í¸® ¿¬»ê ¹× shift ¿¬»êÀ» ¸ðµÎ Á¤¸®ÇÑ °ÍÀÌ´Ù.

mnemonic

byte

state

operand

flags

1st

2nd

3rd

Z

N

C

V

VT

ST

AND

2+BEA

4+CEA

wreg

waop


¡î

¡î

0

0



AND

3+BEA

5+CEA

Dwreg

Swreg

waop

¡î

¡î

0

0



ANDB

2+BEA

4+CEA

breg

waop


¡î

¡î

0

0



ANDB

3+BEA

5+CEA

Dbreg

Swreg

waop

¡î

¡î

0

0



OR

2+BEA

4+CEA

wreg

waop


¡î

¡î

0

0



ORB

2+BEA

4+CEA

breg

baop


¡î

¡î

0

0



XOR

2+BEA

4+CEA

wreg

waop


¡î

¡î

0

0



XORB

2+BEA

4+CEA

breg

baop


¡î

¡î

0

0



NOT

2

4

wreg



¡î

¡î

0

0



NOTB

2

4

breg



¡î

¡î

0

0



SHL

3

7+No.

wreg

cnt/breg


¡î

?

¡î

¡î

¡è


SHR

3

7+No.

wreg

cnt/breg


¡î

0

¡î

¡î

¡è


SHLB

3

7+No.

breg

cnt/breg


¡î

?

¡î

¡î

¡è


SHRB

3

7+No.

breg

cnt/breg


¡î

0

¡î

¡î

¡è


SHLL

3

7+No.

lreg

cnt/breg


¡î

?

¡î

¡î

¡è


SHRL

3

7+No.

lreg

cnt/breg


¡î

0

¡î

¡î

¡è


SHRA

3

7+No.

wreg

cnt/breg


¡î

¡î

¡î

¡î

¡è


SHRAB

3

7+No.

breg

cnt/breg


¡î

¡î

¡î

¡î

¡è


SHRAL

3

7+No.

lreg

cnt/breg


¡î

¡î

¡î

¡î

¡è


NORMAL

3

11+No.

lreg

breg


¡î

?

0




 

<À§ÀÇ Ç¥¿¡ ÀÖ´Â operand ¾à¾îÀÇ ÀǹÌ>

cnt : 0~15ÀÇ ¼ýÀÚ. No. : shift ¼ö

II-II-4-1. ³í¸® ¿¬»ê ¸í·É

196ÀÇ ³í¸® ¿¬»ê ¸í·É¿¡´Â AND, OR, XOR, NOT ÀÌ ÀÖÀ¸¸ç, ³í¸® ¿¬»ê ¸í·ÉÀ» ½ÇÇàÇϸé C, V flag´Â ¹«Á¶°Ç clearµÈ´Ù.

(1) AND/ANDB (logical AND in word/byte)

AND ¸í·É¿¡´Â 2°³ÀÇ operand°¡ ÀÖ´Â ¸í·É°ú 3°³ÀÇ operand°¡ ÀÖ´Â ¸í·ÉÀÌ ÀÖ´Ù.

Çü½Ä1> AND/ANDB <1st operand>, <2nd operand> ; <1st op> ¡ç <1st op> AND <2nd op>

Çü½Ä2> AND/ANDB <1st op>, <2nd op>, <3rd op> ; <1st op> ¡ç <2nd op> AND <3rd op>

ex) AND 40H, #0FF00H ; [40H] ¡ç [40H] AND FF00H (word)

address

low byte

high byte

Z

N

C

V

VT

ST

¸í·É ½ÇÇà Àü

40H

78H

56H







¸í·É ½ÇÇà ÈÄ

40H

00H

56H

0

0

0

0



 

ANDB 40H, 50H, 6100H[0] ; [40H] ¡ç [50H] AND [6100H] (byte)

address

data

Z

N

C

V

VT

ST

¸í·É ½ÇÇà Àü

6100H

A8H







50H

85H

40H

??

¸í·É ½ÇÇà ÈÄ

6100H

A8H

0

1

0

0



50H

85H

40H

80H

 

ÇÑÆí, AND ¸í·ÉÀº ¾î¶² registerÀÇ Æ¯Á¤ ºñÆ®¸¦ 0À¸·Î ¸¸µé°í ½ÍÀ» ¶§¿¡ »ç¿ëÇÒ ¼ö ÀÖ´Ù.

¿¹) 50HÀÇ 4, 5¹ø bit¸¦ 0À¸·Î ¸¸µé°í ½ÍÀ» ¶§

ANDB 50H, #11001111B ; 50HÀÇ bit4, 5¸¦ clear.

(2) OR/ORB (logical OR in word/byte)

OR ¸í·É¿¡´Â µÎ °³ÀÇ operand¸¸ »ç¿ëÇÒ ¼ö ÀÖ´Ù.

Çü½Ä> OR/ORB <1st operand>, <2nd operand> ; <1st op> ¡ç <1st op> OR <2nd op>

ex) ORB 50H, 60H ; [50H] ¡ç [50H] OR [60H] (byte)

address

data

Z

N

C

V

VT

ST

¸í·É ½ÇÇà Àü

60H

85H







50H

77H

¸í·É ½ÇÇà ÈÄ

60H

85H

0

1

0

0



50H

F7H

 

AND¿Í ºñ½ÁÇÏ°Ô, OR ¸í·ÉÀº ƯÁ¤ bit¸¦ 1·Î ¸¸µé ¶§ »ç¿ëÇÒ ¼ö ÀÖ´Ù.

¿¹) 50HÀÇ 1, 2, 7¹ø bit¸¦ 1·Î ¸¸µé°í ½ÍÀ» ¶§

ORB 50H, #10000110B ; 50HÀÇ bit1, 2, 7À» set

(3) XOR/XORB (logical eXclusive OR in word/byte)

OR°ú ºñ½ÁÇÏ´Ù. XORÀº ƯÁ¤ bit¸¦ toggle ÇÏ°í ½ÍÀ» ¶§ 1°ú ƯÁ¤ bit¸¦ XOR ¿¬»êÇÏ¸é µÈ´Ù.( 1 XOR 0 = 1, 1 XOR 1 = 0, 0 XOR 0 = 0, 0 XOR 1 = 1)

Çü½Ä> XOR/XORB <1st operand>, <2nd operand> ; <1st op> ¡ç <1st op> XOR <2nd op>

ex) XOR 40H, [50H]+ ; [40H] ¡ç [40H] XOR ([50H]°¡ °¡¸®Å°´Â memoryÀÇ ³»¿ë) (word)

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

address

low byte

high byte

Z

N

C

V

VT

ST

¸í·É ½ÇÇà Àü

7256H

8FH

54H







50H

56H

72H

40H

36H

C9H

¸í·É ½ÇÇà ÈÄ

7256H

8FH

54H

0

1

0

0



50H

58H

72H

40H

B9H

9DH

 

XORÀº ƯÁ¤ bit¸¦ toggle(0¡æ1, 1¡æ0)ÇÒ ¶§ »ç¿ëÇÒ ¼ö ÀÖ´Ù.

¿¹) 50HÀÇ 3, 4, 6 ¹ø bit¸¦ toggleÇÏ°í ½ÍÀ» ¶§

XORB 50H, #01011000B ; 50HÀÇ bit3, 4, 6À» toggle

(4) NOT/NOTB (logical NOT in word/byte)

byte/word ´ÜÀ§·Î complementÇÏ´Â ¸í·ÉÀÌ´Ù. bit ´ÜÀ§ ¿¬»êÀº ÇÒ ¼ö ¾ø´Ù.

Çü½Ä> NOT/NOTB <word/byte register>

ex) NOTB 60H

address

data

Z

N

C

V

VT

ST

¸í·É ½ÇÇà Àü

60H

85H







¸í·É ½ÇÇà ÈÄ

60H

7AH

0

0

0

0



 

NOT 70H

address

low byte

high byte

Z

N

C

V

VT

ST

¸í·É ½ÇÇà Àü

70H

FFH

FFH







¸í·É ½ÇÇà ÈÄ

70H

00H

00H

1

0

0

0



 

II-II-4-2. Shift ¸í·É

Shift ¸í·ÉÀº 8/16/32 bit data¸¦ Çѹø¿¡ ÀÚ¸® À̵¿ÇÏ´Â ¸í·ÉÀ̸ç, ÀÚ¸® À̵¿ counter¸¦ data(0~15)·Î Ç¥½ÃÇÒ ¼öµµ ÀÖ°í, byte register(count ¼ö 16~255)¸¦ ÀÌ¿ëÇÒ ¼öµµ ÀÖ´Ù.

(1) SHL/SHLB/SHLL (Shift left in word/byte/long)

ÁöÁ¤µÈ ¼ö¸¸Å­ ¿ÞÂÊÀ¸·Î shiftÇÏ´Â ¸í·ÉÀÌ´Ù. ÃÖ»óÀ§ bit´Â C flag·Î ä¿öÁö°Ô µÇ°í, ÃÖÇÏÀ§ bit´Â 0À¸·Î ä¿öÁö°Ô µÈ´Ù. ¶Ç 1bit shift left´Â ×2 ¸í·É°ú °°´Ù.

 

C


operand




¡ç

¡ç

¡ç

0

 

Çü½Ä> SHL/SHLB/SHLL <word/byte/long register>, #data

SHL/SHLB/SHLL <word/byte/long register>, <byte register>

ex) SHL 50H, #2 ; [50H] word¸¦ ¿ÞÂÊÀ¸·Î 2bit shift

address

low byte

high byte

Z

N

C

V

VT

ST

¸í·É ½ÇÇà Àü

50H

3DH

53H







¸í·É ½ÇÇà ÈÄ

50H

F4H

4CH

0

-

1

0

0

-

 

(2) SHR/SHRB/SHRL (Shift right in word/byte/long)

ÁöÁ¤µÈ ¼ö¸¸Å­ ¿À¸¥ÂÊÀ¸·Î shiftÇÏ´Â ¸í·ÉÀÌ´Ù. ÃÖÇÏÀ§ bit´Â C flag·Î ä¿öÁö°Ô µÇ°í, ÃÖ»óÀ§ bit´Â 0À¸·Î ä¿öÁö°Ô µÈ´Ù. ¶Ç shift right´Â ÷2 ¸í·É°ú °°´Ù. ÇÑÆí, ST bit´Â ¸í·É ½ÃÀÛ ¶§¿¡ clearµÇ°í, shift right ÇÏ´Â µ¿¾È C flag¿¡ 1ÀÌ shift µÇ¸é setµÈ´Ù.

 



operand


C

0

¡æ

¡æ

¡æ


 

Çü½Ä> SHR/SHRB/SHRL <word/byte/long register>, #data

SHR/SHRB/SHRL <word/byte/long register>, <byte register>

ex) SHR 50H, #4 ; [50H] word¸¦ ¿À¸¥ÂÊÀ¸·Î 4bit shif

address

low byte

high byte

Z

N

C

V

VT

ST

¸í·É ½ÇÇà Àü

50H

CDH

ABH







¸í·É ½ÇÇà ÈÄ

50H

BCH

0AH

0

0

1

0


1

 

(3) SHRA/SHRAB/SHRAL

ÁöÁ¤µÈ ¼ö¸¸Å­ ¿À¸¥ÂÊÀ¸·Î shiftµÇ¸ç, ÃÖÇÏÀ§ bit´Â C flag·Î shiftµÇ°í, ÃÖ»óÀ§ bit´Â ÃÖ»óÀ§ bit°¡ rotateµÈ´Ù. Áï, 1bit shift´Â signed dataÀÇ °æ¿ì ÷2 ¸í·ÉÀÌ µÈ´Ù. ST flag´Â À§ÀÇ °æ¿ì¿Í °°ÀÌ µ¿ÀÛÇÑ´Ù.

 


operand


C

¡æ


¡æ

¡æ


 

Çü½Ä> SHRA/SHRAB/SHRAL <word/byte/long register>, #data

SHRA/SHRAB/SHRAL <word/byte/long register>, <byte register>

ex) SHRAB 41H, #3

address


Z

N

C

V

VT

ST

¸í·É ½ÇÇà Àü

41H

F0H







¸í·É ½ÇÇà ÈÄ

41H

F2H

0

0

1

0


1

 

II-II-4-3. Normalize ¸í·É

Nomalize ¸í·ÉÀº long-integer operand¸¦ normalizeÇÑ´Ù. Áï, ÃÖ»óÀ§ bit°¡ 1ÀÌ µÉ ¶§±îÁö shift leftÇÑ´Ù. ¸¸¾à 0~31±îÁö shift ÇÏ´Â µ¿¾È °è¼ÓÇؼ­ ÃÖ»óÀ§ bit°¡ 1À̸é, ÀÌ ¸í·ÉÀº Á¤ÁöµÇ°í Z flag´Â setµÈ´Ù. ÀÌ ¶§ shiftµÈ °ªÀº byte operand¿¡ ÀúÀåµÈ´Ù.

Âü°í : http://www.postech.ac.kr/group/poweron/ - lectures/Micro processor, controller, µ¿¾Æ¸® °­ÀÇ

Âü°í ¼­Àû : Micro controller 80196 ±âÃʺÎÅÍ ÀÀ¿ë±îÁö - Â÷¿µ¹è Àú



 

»óÈ£ : (ÁÖ) ·Îº¸ºí·° »ç¾÷ÀÚµî·Ï¹øÈ£: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