ÄúÏÖÔÚµÄλÖ㺠Ö÷Ò³ > MCU > µ¥Æ¬»ú¼¼ÊõÓ¦Óà > ϵͳѧϰARMÖ®¶þ --ARMÖ¸Á -
±¾ÎÄËùÊô±êÇ©:
Ϊ±¾ÎÄ´´Á¢¸ö±êÇ©°É:

ϵͳѧϰARMÖ®¶þ --ARMÖ¸Á -

À´Ô´£º ÍøÂçÓû§·¢²¼£¬ÈçÓаæÈ¨ÁªÏµÍø¹Üɾ³ý¡¡2018-09-07¡¡

[µ¼¶Á]
Ò»¡¢¼ò½é£º¶¨Ò壺 ARM Ö¸Á£ºARM´¦ÀíÆ÷Äܹ»ÔËÐеÄÃüÁîµÄ¼¯ºÏ¡£Ìص㣺ËùÓÐARMÖ¸Áî¾ùΪ32-bits³¤´ó²¿·ÖΪµ¥ÖÜÆÚÖ¸Áî 1TËùÓÐÖ¸Áî¶¼¿ÉÒÔÌõ¼þÖ´ÐвÉÓà Load/Store ¼Ü¹¹ --- load/storeÖ¸Áî mov r1

Ò»¡¢¼ò½é£º

¶¨Ò壺

±¾ÎÄÒýÓõØÖ·: http://www.21ic.com/app/mcu/201806/764472.htm

ARM Ö¸Á£ºARM´¦ÀíÆ÷Äܹ»ÔËÐеÄÃüÁîµÄ¼¯ºÏ¡£

ÌØµã£º

  1. ËùÓÐARMÖ¸Áî¾ùΪ32-bits³¤

  2. ´ó²¿·ÖΪµ¥ÖÜÆÚÖ¸Áî 1T

  3. ËùÓÐÖ¸Áî¶¼¿ÉÒÔÌõ¼þÖ´ÐÐ

  4. ²ÉÓà Load/Store ¼Ü¹¹ --- load/storeÖ¸Áî

mov r1,100 @ r1 =*(100) °ÑÄÚ´æµØÖ·Îª100µÄµ¥Ôª¸ñÀïµÄÄÚÈݸ³Öµ¸ør1£¬ARMÖ¸Áî ²»Ö§³Ö

mov r1,#100 @ r1=100

¶þ¡¢Êý¾Ý´¦ÀíÖ¸Á1. Ö¸Á
  • ËãÊõÖ¸Á ADD ADC SUB SBC RSB RSC

  • Âß¼­Ö¸Á AND ORR EOR BIC

  • ±È½ÏÖ¸Á CMP CMN TST TEQ

  • Êý¾Ý°áÒÆ£º MOV MVN

¼Ó·¨Ö¸Áî ADD R1£¬R2£¬R3 R1 = R2 + R3

´ø½øÎ»¼Ó·¨ ADC R1£¬R2£¬R3 R1 = R2 + R3 + C

¼õ·¨Ö¸Áî SUB R1£¬R2£¬R3 R1 = R2 - R3

ÄæÏò¼õ·¨ RSBR1£¬R2£¬R3 R1 = R3 - R2

´ø½èλ¼õ·¨ SBC R1£¬R2£¬R3 R1 = R2 - R3 - !C

´ø½èÎ»Äæ¼õ·¨ SBC R1£¬R2£¬R3 R1 = R3 - R2 - !C

Âß¼­ÓëÖ¸Áî AND R0£¬R0£¬#0X0F &

Âß¼­»òÖ¸Áî ORR R0£¬R0£¬#0X0F |

Âß¼­Òì»ò AND R0£¬R0£¬#0X0F ^

λÇå³ý BIC R0£¬R0£¬#9 R0 = R0 & (~#9)

±È½ÏÖ¸Áî CMP R1£¬#10 cpsr = R1 - 10

·´Öµ±È½ÏÖ¸Áî CMN R1£¬R2 cpsr = R1 + R2

λ²âÊÔÖ¸Áî TST R1£¬#3 cpsr = R1 & 3

ÏàµÈ²âÊÔ TEQ R1£¬R2 cpsr = R1 ^ R2

Êý¾Ý´«Êä MOV R1£¬R2 R1 = R2

Êý¾ÝÈ¡·´´«Êä MVNR1£¬R2 R1 = R2

2. Ìõ¼þÂ룺ÅжÏÖ¸ÁîÊÇ·ñÖ´ÐеÄÒÀ¾Ý
  • EQ ÏàµÈ

  • NE ²»ÏàµÈ

  • GE ´óÓÚµÈÓÚ

  • LE СÓÚµÈÓÚ

  • GT ´óÓÚ

  • LT СÓÚ

3. Ö¸ÁîÈçºÎÖ´ÐÐ £º
  1. Ö¸ÁîºóÃæÃ»ÓÐÌõ¼þÂ룺 Ö´ÐÐ

  2. Ö¸ÁîºóÃæÓÐÌõ¼þÂë £º

Ê×ÏÈÅжÏÌõ¼þÂëÊÇ·ñ³ÉÁ¢£¬CPSRÌõ¼þλºÍÌõ¼þÂë±êÖ¾

³ÉÁ¢ -- Ö¸ÁîÖ´ÐÐ

²»³ÉÁ¢ --- Ö¸Áî²»Ö´ÐÐ

cmp r1£¬#3 @ r1- 3 £¬½á¹ûÓ°ÏìÁËCPSRµÄÌõ¼þλ ½á¹ûΪ0£¬Z=1 ½á¹û²»Îª0£¬Z=0

addeq r2 £¬r1£¬r1 z=1,eqÌõ¼þÂë³ÉÁ¢; z=0£¬eqÌõ¼þÂë²»³ÉÁ¢

4. Ìõ¼þλµÄÓ°Ï죺

1-- ĬÈÏËùÓеÄÖ¸Á²»»áÓ°ÏìCPSR¼Ä´æÆ÷µÄÌõ¼þλnzcv

³ýÁ˱ȽÏÖ¸Á ±È½ÏÖ¸ÁCMP CMN TST TEQ

1-- ͨ¹ýÖ¸ÁîºóÃæ¼ÓS£¬Ö¸ÁîµÄÖ´ÐоͿ϶¨»áÓ°Ïìnzcvλ

Àý×Ó£º

if (a==4 || a==10) --> cmp r4£¬#4

x=0; cmpne r4,#10

moveq r5,#0

ËÄ¡¢Ìø×ªÖ¸Á

Branch :B{} label

Branch with Link :BL{} subroutine_label

Ïà¶ÔÌø×ª£º

pc'= pc +Æ«ÒÆÁ¿

Ìø×ª·¶Î§£º

¡À 32 Mbyte

Îå¡¢½»»»Ö¸Á

£¨1£©Ö¸ÁÄÜ£ºÔڼĴæÆ÷ºÍ´æ´¢Æ÷Ö®¼ä£¬ÓÉÒ»´Î´æ´¢Æ÷¶ÁºÍÒ»´Î´æ´¢Æ÷д×é³ÉµÄÔ­×Ó²Ù×÷¡£

(Ô­×Ó²Ù×÷±íʾ£¬ÔÚ²Ù×÷µÄʱºò²»Äܱ»±ðµÄ³ÌÐò´ò¶Ï)

Ò»ÌõÖ¸ÁîÍê³ÉÁËÄÚ´æµ¥ÔªºÍ¼Ä´æÆ÷µÄÊý¾Ý½»»»

swp£¨×Ö½»»»£©£ºÏ൱ÓÚ

temp = *£¨Rn£©

*£¨Rn£©= Rm

Rd = temp

ÊÇ32λµÄ²Ù×÷

swpb£¨×Ö½Ú½»»»£©£ºÒ²Í¬Éϱߣ¬Ö»ÊDzÙ×÷µÄÊÇ8λµÄÊý¾Ý

½«ÄÚ´æÖеÄÒ»¸ö×Ö½Úµ¥ÔªºÍÒ»¸öÖ¸¶¨¼Ä´æÆ÷µÄµÍ8λÏཻ»»¡£

£¨2£©ÐźÅÁ¿²Ù×÷

£¨3£©×¢Ò⣺

²»ÄÜͨ¹ýдcÓïÑÔ³ÌÐòʵÏÖ¸ÃÖ¸Áî

Ö»ÄÜͨ¹ýÊÖд»ã±à

Áù¡¢ÈíÖжÏÖ¸Á

£¨1£©Ö¸ÁÄÜ£ºÒýÆðÒì³££¬ÏµÍ³µ÷ÓÃ

£¨2£©Ö¸Áî¸ñʽ£º

SWI{}

Æß¡¢PSR ´«ËÍÖ¸Á

£¨1£©Ö¸ÁÄÜ£ºCPSR¼Ä´æÆ÷²»ÔÊÐíÊý¾Ý´¦ÀíÖ¸ÁîÖ±½Ó²Ù×÷£¬Ö»ÄÜÓÉPSR¼Ä´æÆ÷²Ù×÷

£¨2£©Ö¸Áî¸ñʽ£º

MRS{} Rd,cpsr @ Rd = cpsr

MSR{} ,Rm @ cpsr = Rm

°Ë¡¢Ð­´¦ÀíÆ÷Ö¸Á

Э´¦ÀíÆ÷¼Ä´æÆ÷´«ËÍÖ¸Áî

MRC£º´ÓЭ´¦ÀíÆ÷¼Ä´æÆ÷ÒÆµ½ARM ¼Ä´æÆ÷

MCR£º´Ó ARM ¼Ä´æÆ÷ÒÆµ½Ð­´¦ÀíÆ÷¼Ä´æÆ÷




¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ ²é¿´ÆÀÂÛ »Ø¸´



ǶÈëʽ½»Á÷ÍøÖ÷Ò³ > MCU > µ¥Æ¬»ú¼¼ÊõÓ¦Óà > ϵͳѧϰARMÖ®¶þ --ARMÖ¸Á -
 

"ϵͳѧϰARMÖ®¶þ --ARMÖ¸Á -"µÄÏà¹ØÎÄÕÂ

ÍøÕ¾µØÍ¼

Χ¹Û()