"AND, ORR, EOR, BIC and ORN"의 두 판 사이의 차이
(같은 사용자에 의한 4개의 중간 편집이 숨겨짐) | |||
1번째 줄: | 1번째 줄: | ||
<p>이번에는 비트연산 명령어인 AND, ORR, EOR, BIC, ORN 명령에 대해 알아보겠습니다.</p> | <p>이번에는 비트연산 명령어인 AND, ORR, EOR, BIC, ORN 명령에 대해 알아보겠습니다.</p> | ||
− | |||
<p> </p> | <p> </p> | ||
− | <p>AND : Logical AND</p> | + | <p><span style="font-size: large; color: #3366ff;"><strong>AND : Logical AND</strong></span></p> |
<p>두 개의 비트가 모두 "1"이면 "1", 하나라도 "0"이면 "0"이 나오는 AND연산을 수행합니다.</p> | <p>두 개의 비트가 모두 "1"이면 "1", 하나라도 "0"이면 "0"이 나오는 AND연산을 수행합니다.</p> | ||
<p> </p> | <p> </p> | ||
<p>아래의 "ANDS R6,R6,R5" 명령은</p> | <p>아래의 "ANDS R6,R6,R5" 명령은</p> | ||
− | <p>R6 = R6 & R5</p> | + | <p>R6 = R6 <span style="color: #ff9900;"><strong>&</strong></span> R5</p> |
<p> = 0y1111 &<br /> 0y0001</p> | <p> = 0y1111 &<br /> 0y0001</p> | ||
<p> = 0y0001 = 0x1 의 결과를 가지게 됩니다.</p> | <p> = 0y0001 = 0x1 의 결과를 가지게 됩니다.</p> | ||
<p> </p> | <p> </p> | ||
− | <p>실행 전 :</p> | + | <p style="padding-left: 30px;">실행 전 :</p> |
− | <p><img src="/data/wiki/2015-05-19/1431999207.jpg" alt="" /></p> | + | <p style="padding-left: 30px;"><img src="/data/wiki/2015-05-19/1431999207.jpg" alt="" /></p> |
+ | <p style="padding-left: 30px;"> </p> | ||
+ | <p style="padding-left: 30px;">실행 후 :</p> | ||
+ | <p style="padding-left: 30px;"><img src="/data/wiki/2015-05-19/1431999211.jpg" alt="" /></p> | ||
<p> </p> | <p> </p> | ||
− | |||
− | |||
<p> </p> | <p> </p> | ||
<p> </p> | <p> </p> | ||
− | <p> | + | <p><span style="font-size: large; color: #3366ff;"><strong>ORR : Logical OR or bit set</strong></span></p> |
− | < | + | |
<p>두 개의 비트중 하나라도 "1"이면 "1", 모두 "0"이면 "0"이 나오는 OR연산을 수행합니다.</p> | <p>두 개의 비트중 하나라도 "1"이면 "1", 모두 "0"이면 "0"이 나오는 OR연산을 수행합니다.</p> | ||
<p> </p> | <p> </p> | ||
<p>아래의 "ORRS R2,R2,R3" 명령은</p> | <p>아래의 "ORRS R2,R2,R3" 명령은</p> | ||
− | <p>R2 = R2 | R3</p> | + | <p>R2 = R2 <strong><span style="color: #ff9900;">|</span></strong> R3</p> |
<p> = 0y1000 |<br /> 0y0011</p> | <p> = 0y1000 |<br /> 0y0011</p> | ||
<p> = 0y1011 = 0xB 의 결과를 가지게 됩니다.</p> | <p> = 0y1011 = 0xB 의 결과를 가지게 됩니다.</p> | ||
<p> </p> | <p> </p> | ||
− | <p>실행 전 :</p> | + | <p style="padding-left: 30px;">실행 전 :</p> |
− | <p><img src="/data/wiki/2015-05-19/1431999549.jpg" alt="" /></p> | + | <p style="padding-left: 30px;"><img src="/data/wiki/2015-05-19/1431999549.jpg" alt="" /></p> |
+ | <p style="padding-left: 30px;"> </p> | ||
+ | <p style="padding-left: 30px;">실행 후 :</p> | ||
+ | <p style="padding-left: 30px;"><img src="/data/wiki/2015-05-19/1431999560.jpg" alt="" /></p> | ||
<p> </p> | <p> </p> | ||
− | |||
− | |||
<p> </p> | <p> </p> | ||
<p> </p> | <p> </p> | ||
− | <p> | + | <p><span style="color: #3366ff; font-size: large;"><strong>EOR : Logical exclusive OR</strong></span></p> |
− | < | + | |
<p>두 개의 비트가 서로 다르면 "1", 서로 같으면 "0"이 되는 XOR연산을 수행합니다.</p> | <p>두 개의 비트가 서로 다르면 "1", 서로 같으면 "0"이 되는 XOR연산을 수행합니다.</p> | ||
<p> </p> | <p> </p> | ||
<p>아래의 "EOR R2,R1,R0" 명령은</p> | <p>아래의 "EOR R2,R1,R0" 명령은</p> | ||
− | <p>R2 = R1 ^ R0</p> | + | <p>R2 = R1 <span style="color: #ff9900;"><strong>^</strong></span> R0</p> |
<p> = 0x5AF0 ^ 0x5500</p> | <p> = 0x5AF0 ^ 0x5500</p> | ||
<p> = 0y0101 1010 1111 0000 ^<br /> 0y0101 0101 0000 0000</p> | <p> = 0y0101 1010 1111 0000 ^<br /> 0y0101 0101 0000 0000</p> | ||
44번째 줄: | 43번째 줄: | ||
<p> = 0x0FF0 의 결과를 가지게 됩니다.</p> | <p> = 0x0FF0 의 결과를 가지게 됩니다.</p> | ||
<p> </p> | <p> </p> | ||
− | <p>실행 전 :</p> | + | <p style="padding-left: 30px;">실행 전 :</p> |
− | <p><img src="/data/wiki/2015-05-19/1431999751.jpg" alt="" /></p> | + | <p style="padding-left: 30px;"><img src="/data/wiki/2015-05-19/1431999751.jpg" alt="" /></p> |
+ | <p style="padding-left: 30px;"> </p> | ||
+ | <p style="padding-left: 30px;">실행 후 :</p> | ||
+ | <p style="padding-left: 30px;"><img src="/data/wiki/2015-05-19/1431999758.jpg" alt="" /></p> | ||
<p> </p> | <p> </p> | ||
− | |||
− | |||
<p> </p> | <p> </p> | ||
<p> </p> | <p> </p> | ||
− | <p> | + | <p><span style="font-size: large; color: #3366ff;"><strong>BIC : Logical AND NOT or bit clear</strong></span></p> |
− | < | + | |
<p>해당 비트를 클리어합니다.</p> | <p>해당 비트를 클리어합니다.</p> | ||
<p>아래의 "BICS R1,R1,#0x10" 명령은 "R1 = R1 AND ~0x10" 과 같은 결과를 갖습니다.</p> | <p>아래의 "BICS R1,R1,#0x10" 명령은 "R1 = R1 AND ~0x10" 과 같은 결과를 갖습니다.</p> | ||
<p> </p> | <p> </p> | ||
− | <p>R1 = R1 & ~0x10</p> | + | <p>R1 = R1 <span style="color: #ff9900;"><strong>& ~</strong></span>0x10</p> |
<p> = 0x32 & ~0x10</p> | <p> = 0x32 & ~0x10</p> | ||
<p> = 0y0011 0010 &<br /> 0y1110 1111</p> | <p> = 0y0011 0010 &<br /> 0y1110 1111</p> | ||
<p> = 0y0010 0010 = 0x22 가 됩니다.</p> | <p> = 0y0010 0010 = 0x22 가 됩니다.</p> | ||
<p> </p> | <p> </p> | ||
− | <p>실행 전 :</p> | + | <p style="padding-left: 30px;">실행 전 :</p> |
− | <p><img src="/data/wiki/2015-05-19/1432000459.jpg" alt="" /></p> | + | <p style="padding-left: 30px;"><img src="/data/wiki/2015-05-19/1432000459.jpg" alt="" /></p> |
− | <p> </p> | + | <p style="padding-left: 30px;"> </p> |
− | <p>실행 후 :</p> | + | <p style="padding-left: 30px;">실행 후 :</p> |
− | <p><img src="/data/wiki/2015-05-19/1432000476.jpg" alt="" /> | + | <p style="padding-left: 30px;"><img src="/data/wiki/2015-05-19/1432000476.jpg" alt="" /></p> |
− | + | ||
<p> </p> | <p> </p> | ||
<p> </p> | <p> </p> | ||
− | |||
− | |||
<p> </p> | <p> </p> | ||
− | <p>아래의 "ORN R3,R1,R0" 명령은</p> | + | <p><span style="color: #3366ff;"><strong><span style="font-size: large;">ORN : Logical OR NOT</span></strong></span></p> |
+ | <p>C문법에는 없는 특이한 연산입니다.</p> | ||
+ | <p>아래의 "ORN R3,R1,R0" 명령은 "R3 = R1 | ~R0" 와 같은 결과를 같습니다.</p> | ||
<p> </p> | <p> </p> | ||
− | <p>R3 = R1 | ~R0</p> | + | <p>R3 = R1 <span style="color: #ff9900;"><strong>| ~</strong></span>R0</p> |
<p> = 0x5AF0 | ~0x5500</p> | <p> = 0x5AF0 | ~0x5500</p> | ||
<p> = 0y0000 0000 0000 0000 0101 1010 1111 0000 |<br /> 0y1111 1111 1111 1111 1010 1010 1111 1111</p> | <p> = 0y0000 0000 0000 0000 0101 1010 1111 0000 |<br /> 0y1111 1111 1111 1111 1010 1010 1111 1111</p> | ||
<p> = 0y1111 1111 1111 1111 1111 1010 1111 1111 = 0xFFFFFAFF 의 결과를 갖게 됩니다.</p> | <p> = 0y1111 1111 1111 1111 1111 1010 1111 1111 = 0xFFFFFAFF 의 결과를 갖게 됩니다.</p> | ||
<p> </p> | <p> </p> | ||
− | <p>실행 전 :</p> | + | <p style="padding-left: 30px;">실행 전 :</p> |
− | <p><img src="/data/wiki/2015-05-19/1432000893.jpg" alt="" /></p> | + | <p style="padding-left: 30px;"><img src="/data/wiki/2015-05-19/1432000893.jpg" alt="" /></p> |
<p> </p> | <p> </p> | ||
− | <p>실행 후 :</p> | + | <p style="padding-left: 30px;">실행 후 :</p> |
− | <p><img src="/data/wiki/2015-05-19/1432000900.jpg" alt="" /></p> | + | <p style="padding-left: 30px;"><img src="/data/wiki/2015-05-19/1432000900.jpg" alt="" /></p> |
<p> </p> | <p> </p> | ||
<p> </p> | <p> </p> | ||
<p>이상으로 AND, ORR, EOR, BIC, ORN 명령에 대해 알아보았습니다.</p> | <p>이상으로 AND, ORR, EOR, BIC, ORN 명령에 대해 알아보았습니다.</p> | ||
− | <p>잘못된 사항이나, 추가로 궁금하신 사항은 TRACE32@mdstec.com 으로 연락 부탁드립니다.</p> | + | <p>잘못된 사항이나, 추가로 궁금하신 사항은 TRACE32@mdstec.commds.com 으로 연락 부탁드립니다.</p> |
<p> </p> | <p> </p> | ||
− | <p>"TRACE32로 바라본 ARM - Cortex-M" 으로 돌아가기</p> | + | <p>"<strong><a href="/wiki/index.php/Cortex-M">TRACE32로 바라본 ARM - Cortex-M</a></strong>" 으로 돌아가기</p> |
2020년 7월 24일 (금) 12:51 기준 최신판
이번에는 비트연산 명령어인 AND, ORR, EOR, BIC, ORN 명령에 대해 알아보겠습니다.
AND : Logical AND
두 개의 비트가 모두 "1"이면 "1", 하나라도 "0"이면 "0"이 나오는 AND연산을 수행합니다.
아래의 "ANDS R6,R6,R5" 명령은
R6 = R6 & R5
= 0y1111 &
0y0001
= 0y0001 = 0x1 의 결과를 가지게 됩니다.
실행 전 :
실행 후 :
ORR : Logical OR or bit set
두 개의 비트중 하나라도 "1"이면 "1", 모두 "0"이면 "0"이 나오는 OR연산을 수행합니다.
아래의 "ORRS R2,R2,R3" 명령은
R2 = R2 | R3
= 0y1000 |
0y0011
= 0y1011 = 0xB 의 결과를 가지게 됩니다.
실행 전 :
실행 후 :
EOR : Logical exclusive OR
두 개의 비트가 서로 다르면 "1", 서로 같으면 "0"이 되는 XOR연산을 수행합니다.
아래의 "EOR R2,R1,R0" 명령은
R2 = R1 ^ R0
= 0x5AF0 ^ 0x5500
= 0y0101 1010 1111 0000 ^
0y0101 0101 0000 0000
= 0y0000 1111 1111 0000
= 0x0FF0 의 결과를 가지게 됩니다.
실행 전 :
실행 후 :
BIC : Logical AND NOT or bit clear
해당 비트를 클리어합니다.
아래의 "BICS R1,R1,#0x10" 명령은 "R1 = R1 AND ~0x10" 과 같은 결과를 갖습니다.
R1 = R1 & ~0x10
= 0x32 & ~0x10
= 0y0011 0010 &
0y1110 1111
= 0y0010 0010 = 0x22 가 됩니다.
실행 전 :
실행 후 :
ORN : Logical OR NOT
C문법에는 없는 특이한 연산입니다.
아래의 "ORN R3,R1,R0" 명령은 "R3 = R1 | ~R0" 와 같은 결과를 같습니다.
R3 = R1 | ~R0
= 0x5AF0 | ~0x5500
= 0y0000 0000 0000 0000 0101 1010 1111 0000 |
0y1111 1111 1111 1111 1010 1010 1111 1111
= 0y1111 1111 1111 1111 1111 1010 1111 1111 = 0xFFFFFAFF 의 결과를 갖게 됩니다.
실행 전 :
실행 후 :
이상으로 AND, ORR, EOR, BIC, ORN 명령에 대해 알아보았습니다.
잘못된 사항이나, 추가로 궁금하신 사항은 TRACE32@mdstec.commds.com 으로 연락 부탁드립니다.
"TRACE32로 바라본 ARM - Cortex-M" 으로 돌아가기