"AND, ORR, EOR, BIC and ORN"의 두 판 사이의 차이

TRACE32
이동: 둘러보기, 검색
(새 문서: <p>이번에는 비트연산 명령어인 AND, ORR, EOR, BIC, ORN 명령에 대해 알아보겠습니다.</p> <p> </p> <p>AND : Logical AND</p> <p>ORR : Logical OR or bit set</p>...)
 
1번째 줄: 1번째 줄:
 
<p>이번에는 비트연산 명령어인 AND, ORR, EOR, BIC, ORN 명령에 대해 알아보겠습니다.</p>
 
<p>이번에는 비트연산 명령어인 AND, ORR, EOR, BIC, ORN 명령에 대해 알아보겠습니다.</p>
 +
<p>AND, ORR 등의 비트 연산에 대한 설명은 생략하겠습니다.</p>
 
<p>&nbsp;</p>
 
<p>&nbsp;</p>
 
<p>AND : Logical AND</p>
 
<p>AND : Logical AND</p>
 +
<p>두 개의 비트가 모두 "1"이면 "1", 하나라도 "0"이면 "0"이 나오는 AND연산을 수행합니다.</p>
 +
<p>&nbsp;</p>
 +
<p>아래의 "ANDS R6,R6,R5" 명령은</p>
 +
<p>R6 = R6 &amp; R5</p>
 +
<p>&nbsp; &nbsp; &nbsp;= 0y1111 &amp;<br />&nbsp; &nbsp; &nbsp; &nbsp; 0y0001</p>
 +
<p>&nbsp; &nbsp; &nbsp;= 0y0001 = 0x1 의 결과를 가지게 됩니다.</p>
 +
<p>&nbsp;</p>
 +
<p>실행 전 :</p>
 +
<p><img src="/data/wiki/2015-05-19/1431999207.jpg" alt="" /></p>
 +
<p>&nbsp;</p>
 +
<p>실행 후 :</p>
 +
<p><img src="/data/wiki/2015-05-19/1431999211.jpg" alt="" /></p>
 +
<p>&nbsp;</p>
 +
<p>&nbsp;</p>
 +
<p>&nbsp;</p>
 
<p>ORR : Logical OR or bit set</p>
 
<p>ORR : Logical OR or bit set</p>
 +
<p>두 개의 비트중 하나라도 "1"이면 "1", 모두 "0"이면 "0"이 나오는 OR연산을 수행합니다.</p>
 +
<p>&nbsp;</p>
 +
<p>아래의 "ORRS R2,R2,R3" 명령은</p>
 +
<p>R2 = R2 | R3</p>
 +
<p>&nbsp; &nbsp; &nbsp;= 0y1000 |<br />&nbsp; &nbsp; &nbsp; &nbsp; 0y0011</p>
 +
<p>&nbsp; &nbsp; &nbsp;= 0y1011 = 0xB 의 결과를 가지게 됩니다.</p>
 +
<p>&nbsp;</p>
 +
<p>실행 전 :</p>
 +
<p><img src="/data/wiki/2015-05-19/1431999549.jpg" alt="" /></p>
 +
<p>&nbsp;</p>
 +
<p>실행 후 :</p>
 +
<p><img src="/data/wiki/2015-05-19/1431999560.jpg" alt="" /></p>
 +
<p>&nbsp;</p>
 +
<p>&nbsp;</p>
 +
<p>&nbsp;</p>
 
<p>EOR : Logical exclusive OR</p>
 
<p>EOR : Logical exclusive OR</p>
 +
<p>두 개의 비트가 서로 다르면 "1", 서로 같으면 "0"이 되는 XOR연산을 수행합니다.</p>
 +
<p>&nbsp;</p>
 +
<p>아래의 "EOR R2,R1,R0" 명령은</p>
 +
<p>R2 = R1 ^ R0</p>
 +
<p>&nbsp; &nbsp; &nbsp;= 0x5AF0 ^ 0x5500</p>
 +
<p>&nbsp; &nbsp; &nbsp;= 0y0101 1010 1111 0000 ^<br />&nbsp; &nbsp; &nbsp; &nbsp; 0y0101 0101 0000 0000</p>
 +
<p>&nbsp; &nbsp; &nbsp;= 0y0000 1111 1111 0000</p>
 +
<p>&nbsp; &nbsp; &nbsp;= 0x0FF0 의 결과를 가지게 됩니다.</p>
 +
<p>&nbsp;</p>
 +
<p>실행 전 :</p>
 +
<p><img src="/data/wiki/2015-05-19/1431999751.jpg" alt="" /></p>
 +
<p>&nbsp;</p>
 +
<p>실행 후 :</p>
 +
<p><img src="/data/wiki/2015-05-19/1431999758.jpg" alt="" /></p>
 +
<p>&nbsp;</p>
 +
<p>&nbsp;</p>
 +
<p>&nbsp;</p>
 
<p>BIC : Logical AND NOT or bit clear</p>
 
<p>BIC : Logical AND NOT or bit clear</p>
 +
<p>해당 비트를 클리어합니다.</p>
 +
<p>아래의 "BICS R1,R1,#0x10" 명령은 "R1 = R1 AND ~0x10" 과 같은 결과를 갖습니다.</p>
 +
<p>&nbsp;</p>
 +
<p>R1 = R1 &amp; ~0x10</p>
 +
<p>&nbsp; &nbsp; = 0x32 &amp; ~0x10</p>
 +
<p>&nbsp; &nbsp; = 0y0011 0010 &amp;<br />&nbsp; &nbsp; &nbsp; &nbsp;0y1110 1111</p>
 +
<p>&nbsp; &nbsp; = 0y0010 0010 = 0x22 가 됩니다.</p>
 +
<p>&nbsp;</p>
 +
<p>실행 전 :</p>
 +
<p><img src="/data/wiki/2015-05-19/1432000459.jpg" alt="" /></p>
 +
<p>&nbsp;</p>
 +
<p>실행 후 :</p>
 +
<p><img src="/data/wiki/2015-05-19/1432000476.jpg" alt="" /></p>
 +
<p>&nbsp;</p>
 +
<p>&nbsp;</p>
 +
<p>&nbsp;</p>
 
<p>ORN : Logical OR NOT</p>
 
<p>ORN : Logical OR NOT</p>
 +
<p>Operand2의&nbsp;</p>
 +
<p>&nbsp;</p>
 +
<p>아래의 "ORN R3,R1,R0" 명령은</p>
 +
<p>&nbsp;</p>
 +
<p>R3 = R1 | ~R0</p>
 +
<p>&nbsp; &nbsp; &nbsp;= 0x5AF0 | ~0x5500</p>
 +
<p>&nbsp; &nbsp; &nbsp;= 0y0000 0000 0000 0000 0101 1010 1111 0000 |<br />&nbsp; &nbsp; &nbsp; &nbsp; 0y1111 1111 1111 1111 1010 1010 1111 1111</p>
 +
<p>&nbsp; &nbsp; &nbsp;= 0y1111 1111 1111 1111 1111 1010 1111 1111 = 0xFFFFFAFF 의 결과를 갖게 됩니다.</p>
 +
<p>&nbsp;</p>
 +
<p>실행 전 :</p>
 +
<p><img src="/data/wiki/2015-05-19/1432000893.jpg" alt="" /></p>
 +
<p>&nbsp;</p>
 +
<p>실행 후 :</p>
 +
<p><img src="/data/wiki/2015-05-19/1432000900.jpg" alt="" /></p>
 
<p>&nbsp;</p>
 
<p>&nbsp;</p>
 
<p>&nbsp;</p>
 
<p>&nbsp;</p>

2015년 5월 19일 (화) 11:04 판

이번에는 비트연산 명령어인 AND, ORR, EOR, BIC, ORN 명령에 대해 알아보겠습니다.

AND, ORR 등의 비트 연산에 대한 설명은 생략하겠습니다.

 

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

Operand2의 

 

아래의 "ORN 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.com 으로 연락 부탁드립니다.

 

"TRACE32로 바라본 ARM - Cortex-M" 으로 돌아가기