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 ¸í·É°ú
°°´Ù.
Çü½Ä> 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µÈ´Ù.
Çü½Ä> 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´Â
À§ÀÇ °æ¿ì¿Í °°ÀÌ µ¿ÀÛÇÑ´Ù.
Çü½Ä> 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 ±âÃʺÎÅÍ ÀÀ¿ë±îÁö - Â÷¿µ¹è Àú

|