AND, ORR, EOR, BIC and ORN

TRACE32
Admin (토론 | 기여) 사용자의 2015년 5월 19일 (화) 11:24 판

이동: 둘러보기, 검색

이번에는 비트연산 명령어인 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.com 으로 연락 부탁드립니다.

 

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