Bài giảng Vi xử lý - Chương 3: Họ vi điều khiển 8051 - Phần 3.4: Tập lệnh 8051

pdf 75 trang phuongnguyen 6460
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Vi xử lý - Chương 3: Họ vi điều khiển 8051 - Phần 3.4: Tập lệnh 8051", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên

Tài liệu đính kèm:

  • pdfbai_giang_vi_xu_ly_chuong_3_ho_vi_dieu_khien_8051_tiep.pdf

Nội dung text: Bài giảng Vi xử lý - Chương 3: Họ vi điều khiển 8051 - Phần 3.4: Tập lệnh 8051

  1. oo ươ
  2. o
  3. Y
  4. eeeo ooeoeoeee e ooeoeeeeoo eooeeeee oeoeooeyeee ooeeeoe oeeooeeee ooeoeeeoe oeeoeo oeoo oeoo
  5. eoeeo eoeeooeooooeeeoey e ye eoeeeoeooo eooe oeeeee eeeeoe yoooeyoeeoeoy yo yoo 0 1 1 1 1 0 0 1 1 1 7 1 1 0 0 –4 + 0 0 1 1 3 + 1 0 1 1 – 5 1 0 1 0 – 6 0 1 1 1 7
  6. add a, byte ; a  a + byte addc a, byte ; a  a + byte + C yo o
  7. ADDA, Source ;A=A+SOURCE ADDA,#6 ;A=A+6 ADDA,R6 ;A=A+R6 ADD A,6 ;A=A+[6] or A=A+R6 ADD A,0F3H ;A=A+[0F3H] SUBB A, Source ;A=A-SOURCE-C SUBB A,#6 ;A=A-6-(CY) SUBB A,R6 ;A=A-R6-(CY)
  8. SUBB A, byte subtract with borrow Example : SUBB A, #0x4F ;A  A – 4F – C Notice that There is no subtraction WITHOUT borrow. Therefore, if a subtraction without borrow is desired, it is necessary to clear the C flag. Example : Clr c SUBB A, #0x4F ;A  A – 4F
  9. mov a, #3FH o add a, #0D3H 0011 1111 1101 0011 0001 0010 C = 1 AC = 1 OV = 0
  10. 0111 1111 (positive 127) 2’s complement: 0111 0011 (positive 115) 0000 0000 00 0 1111 0010 (overflow cannot represent 242 in 8 bits 2’s complement) 0111 1111 7F 127 1000 0000 80 -128 1000 1111 (negative 113) 1101 0011 (negative 45) 0110 0010 (overflow) 1111 1111 FF -1 0011 1111 (positive) 1101 0011 (negative) 0001 0010 (never overflows)
  11. e DA a ; decimal adjust a eoeo oeeooeeo oeee e mov a, #23h mov b, #29h add a, b ; a  23h + 29h = 4Ch (wanted 52) DA a ; a  a + 6 = 52
  12. C 1234 40H, 41H + 5678 42H, 43H (AC) 112 6912
  13. Y YYyeo Y Y Y
  14. Y o YY yye Y ye ye yyeo Y
  15. eeeee INC A increment A INC byte increment byte in memory INC DPTR increment data pointer DEC A decrement accumulator DEC byte decrement byte eeeeeeoo ee oee oy eoe oeee
  16. DEC byte ;byte=byte-1 INC byte ;byte=byte+1 INC R7 DEC A DEC 40H ; [40]=[40]-1
  17. o E O o E ưư E oo oyeoye yyeo ye
  18. eeeo eo o eeeeoe o o ooye o
  19. L MUL & DIV • MUL AB ;B|A = A*B MOV A,#25H MOV B,#65H MUL AB ;25H*65H=0E99 ;B=0EH, A=99H • DIVAB ;A = A/B, B = A mod B MOV A,#25 MOV B,#10 DIVAB ;A=2, B=5 eoeeyeooo eoeo
  20. o
  21. oo eooeo e oe ooo ee
  22. eo Examples: ANL  AND 00001111 ANL 10101100 ORL  OR 00001100 XRL  XOR 00001111 CPL  Complement ORL 10101100 10101111 00001111 XRL 10101100 10100011 CPL 10101100 01010011
  23. Address Modes with Logic ANL – AND a, byte ORL – OR direct, reg. indirect, reg, immediate XRL – eXclusive oR byte, a direct byte, #constant CPL – Complement a ex: cpl a
  24. Uses of Logic Instructions oeooeoe anl PSW, #0xE7 ;PSW AND 11100111 oe orl PSW, #0x18 ;PSW OR 00011000 oee xrl P1, #0x40 ;P1 XRL 01000000
  25. Other Logic Instructions CLR - clear RL – rotate left RLC – rotate left through Carry RR – rotate right RRC – rotate right through Carry SWAP – swap accumulator nibbles
  26. CLR ( Set all bits to 0 ) ye eoe eeoe eeeoe
  27. Rotate oeooee oy o RL a Mov a,#0xF0 ; a  11110000 RR a ; a  11100001 RR a Mov a,#0xF0 ; a  11110000 RR a ; a  01111000
  28. Rotate through Carry RRC a C mov a, #0A9h ; a  A9 add a, #14h ; a  BD (10111101), C0 rrc a ; a  01011110, C 1 C RLC a mov a, #3ch ; a  3ch(00111100) setb c ; c  1 rlc a ; a  01111001, C 1
  29. Rotate and Multiplication/Division oeeee yyey mov a, #3 ; A  00000011 (3) clr C ; C  0 rlc a ; A  00000110 (6) rlc a ; A  00001100 (12) rrc a ; A  00000110 (6)
  30. Swap SWAP a mov a, #72h ; a  27h swap a ; a  27h
  31. e oe oeoe oeo e e
  32. e oeo eoy e e oe eeye eeo oe
  33. eeo
  34. eo
  35. yeo µ
  36. Minh ha v tác đng ca PUSH và POP ee yo yy ơy o y o y y y
  37. yo yo yo
  38. ư
  39. ưO
  40. o oeo o yyy yo o ye
  41. ooe Y
  42. o o eeee y o ooe
  43. eeooeoeoooeo oeeoeoeooee oeeoeoeoyoooo oeeeooee eoo eeeoeoeoyoee eeoo oo OA O O O O
  44. o oo
  45. oo
  46. ooeeo e e oee
  47. ooeeo oeo e e e oe e e e oe e eee
  48. oooe ooeooo ooo yo oo ⊕ yo ⊕ ⊕
  49. oo Y Y Y Y Y Y
  50. o oe eooe eoe oe o e oee e
  51. o e e o ee oe e eo e e e e eee ee oeo ooeo
  52. oo o o JZ JNZ JC JNC JB , JNB , JBC , e CJNE A, direct, oeeoy oe
  53. ooo ooe condition ooe false ee true ooeo label jz led_off setb C if a = 0 is true mov P1.6, C send a 0 to LED sjmp skipover else led_off: clr C mov P1.6, C send a 1 to LED skipover: mov A, P0
  54. eoooyeye ooeooeye eeeo oo EA O AA OAA EAA Ooo
  55. oeoo o o CJNE A, #data oe oe CJNE Rn, #data oe oe CJNE @Rn, #data oeeoy oe DJNZ Rn, eeee oeo DJNZ direct, eeeeoy eoeo
  56. eeeeoeeeeo eooeeee oo EA OAA OAA EAEAA Ooo
  57. eeeeoeeeeoe ooeooe oo EA OAA OAA EA Ooo
  58. eeoo ooo For A = 4 to 0 do { } clr a mov R0, #4 loop: loop: inc a cjne a , #4, loop djnz R0, loop
  59. eeooe Y eoo eoo oe
  60. eooeo ooooo oo O O O Oo Oo Ooo
  61. e
  62. oe oeoeye eo eo e
  63. A ơyoo oy yo yy yo o o y yy
  64. o ơoyye yoo o yo o yo yo o
  65. o o oo o o
  66. : ơo o o O O o O A oA OO O Aưươ A E AE ư OE E A A A OO OE O O E