久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5162|回復: 2
打印 上一主題 下一主題
收起左側

51單片機匯編指令集(附記憶方法).doc 文件下載

[復制鏈接]
跳轉到指定樓層
樓主
ID:125232 發表于 2016-6-5 13:50 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式

51單片機匯編指令集

一、數據傳送類指令(7種助記符)
MOV(英文為Move):對內部數據寄存器RAM和特殊功能寄存器SFR的數據進行傳送;
MOVC(Move Code)讀取程序存儲器數據表格的數據傳送;
MOVX (Move External RAM) 對外部RAM的數據傳送;
XCH (Exchange) 字節交換;
XCHD (Exchange low-order Digit) 低半字節交換;
PUSH (Push onto Stack) 入棧;
POP  (Pop from Stack) 出棧;

二、算術運算類指令(8種助記符)
ADD(Addition) 加法;
ADDC(Add with Carry) 帶進位加法;
SUBB(Subtract with Borrow) 帶借位減法;
DA(Decimal Adjust) 十進制調整;
INC(Increment) 加1;
DEC(Decrement) 減1;
MUL(Multiplication、Multiply) 乘法;
DIV(Division、Divide) 除法;

三、邏輯運算類指令(10種助記符)
ANL(AND Logic) 邏輯與;
ORL(OR Logic) 邏輯或;
XRL(Exclusive-OR Logic) 邏輯異或;
CLR(Clear) 清零;
CPL(Complement) 取反;
RL(Rotate left) 循環左移;
RLC(Rotate Left throught theCarry flag) 帶進位循環左移;
RR(Rotate Right) 循環右移;
RRC (Rotate Right throught the Carry flag) 帶進位循環右移;
SWAP (Swap) 低4位與高4位交換;

四、控制轉移類指令(17種助記符)
ACALL(Absolute subroutine Call)子程序絕對調用;
LCALL(Long subroutine Call)子程序長調用;
RET(Return from subroutine)子程序返回;
RETI(Return from Interruption)中斷返回;
SJMP(Short Jump)短轉移;
AJMP(Absolute Jump)絕對轉移;
LJMP(Long Jump)長轉移;
CJNE (Compare Jump if Not Equal)比較不相等則轉移;
DJNZ (Decrement Jump if Not Zero)減1后不為0則轉移;
JZ (Jump if Zero)結果為0則轉移;
JNZ (Jump if Not Zero) 結果不為0則轉移;
JC (Jump if the Carry flag isset)有進位則轉移;
JNC (Jump if Not Carry)無進位則轉移;
JB (Jump if the Bit is set)位為1則轉移;
JNB (Jump if the Bit is Not set) 位為0則轉移;
JBC(Jump if the Bit is set andClear the bit) 位為1則轉移,并清除該位;
NOP (No Operation) 空操作;

五、位操作指令(1種助記符)
CLR  位清零;
SETB(Set Bit) 位 置1 。


8種常用偽指令
1.ORG   16位地址 ;
此指令用在原程序或數據塊的開始,指明此語句后面目標程序或數據塊存放的起始地址。
2.[標號:] DB 字節數據項表;
將項表中的字節數據存放到從標號開始的連續字節單元中。例如:SEG: DB 88H,100,“7”,“C”
3.[標號:]DW   雙字節數據項表;
定義16位地址表,16地址按低位地址存低位字節,高位地址存高位字節。
例如:TAB: DW  1234H,7BH
4.名字 EQU 表達式  或名字=表達式;
用與給一個表達式賦值或給字符串起名字。之后名字可用做程序地址,數據地址或立即數地址使用。名字必須是一字母開頭的字母數字串。
例如:COUNT=10 或 SPACE  EQU  10H
5.名字 DATA 直接字節地址;
給8位內部RAM單元起個名字,名字必須是一字母開頭的字母數字串。同一單元可起多個名字。

例如:ERROR DATA  80H

6.名字 XDATA 直接字節地址;
給8位外部RAM起個名字,名字規定同DATA偽指令。

例如:IO_PORT XDATA  0CF04H

7.名字 BIT 位指令;
給一可位尋址的位單元起個名字,規定同DATA偽指令。
例如:SWT BIT 30H
8.[標號:] END;
指出源程序到此結束,匯編對其后的程序語句不予理睬。源程序只在主程序最后使用一個END。


指 令 集(111條)
  
助 記 符
  
  
說明
  
  
字節
  
  
周期
  
  
代 碼
  
  
1.數據傳送指令(30條)
  
  MOV  A,Rn
  
  寄存器送 A
  
  1
  
  1
  
  E8--EF
  
  MOV  A,data
  
  直接字節送A
  
  2
  
  1
  
  E5
  
  MOV  A,@Ri
  
  間接RAM 送A
  
  1
  
  1
  
  E6--E7
  
  MOV  A,#data
  
  立接數送 A
  
  2
  
  1
  
  74
  
  MOV  Rn,A
  
  A  送寄存器
  
  1
  
  1
  
  F8--FF
  
  MOV  Rn,data
  
  直接數送寄存器
  
  2
  
  2
  
  A8--AF
  
  MOV  Rn,#data
  
  立即數送寄存器
  
  2
  
  1
  
  78--7F
  
  MOV  data,A
  
  A  送直接字節
  
  2
  
  1
  
  F5
  
  MOV  data,Rn
  
  寄存器送直接字節
  
  2
  
  1
  
  88—8F
  
  MOV  data,data
  
  直接字節送直接字節
  
  3
  
  2
  
  85
  
  MOV  data,@Ri
  
  間接 Rn 送直接字節
  
  2
  
  2
  
  86;87
  
  MOV  data,#data
  
  立即數送直接字節
  
  3
  
  2
  
  75
  
  MOV  @Ri,A
  
  A  送間接 Rn
  
  1
  
  2
  
  F6;F7
  
  MOV  @Ri,data
  
  直接字節送間接Rn
  
  1
  
  1
  
  A6;A7
  
  MOV  @Ri,#data
  
  立即數送間接 Rn
  
  2
  
  2
  
  76;77
  
  MOV  DPTR,#data16
  
  16  位常數送數據指針
  
  3
  
  1
  
  90
  
  MOV  C,bit
  
  直接位送進位位
  
  2
  
  1
  
  A2
  
  MOV  bit,C
  
  進位位送直接位
  
  2
  
  2
  
  92
  
  MOVC  A,@A+DPTR
  
  A+DPTR  尋址程序存貯字節送 A
  
  3
  
  2
  
  93
  
  MOVC  A,@A+PC
  
  A+PC  尋址程序存貯字節送A
  
  1
  
  2
  
  83
  
  MOVX  A,@Ri
  
  外部數據送A(8 位地址)
  
  1
  
  2
  
  E2;E3
  
  MOVX  A,@DPTR
  
  外部數據送A(16 位地址)
  
  1
  
  2
  
  E0
  
  MOVX  @Ri,A
  
  A  送外部數據(8  位地址)
  
  1
  
  2
  
  F2;F3
  
  MOVX  @DPTR,A
  
  A  送外部數據(16  位地址)
  
  1
  
  2
  
  F0
  
  PUSH  data
  
  直接字節進棧道,SP 加1
  
  2
  
  2
  
  C0
  
  POP  data
  
  直接字節出棧,SP 減1
  
  2
  
  2
  
  D0
  
  XCH  A,Rn
  
  寄存器與 A 交換
  
  1
  
  1
  
  C8—CF
  
  XCH  A,data
  
  直接字節與A 交換
  
  2
  
  1
  
  C5
  
  XCH  A,@Ri
  
  間接Rn 與A 交換
  
  1
  
  1
  
  C6;C7
  
  XCHD  A,@Ri
  
  間接Rn 與A 低半字節交換
  
  1
  
  1
  
  D6;D7
  
  
2.邏輯運算指令(35條)
  
  ANL  A,Rn
  
  寄存器與到A
  
  1
  
  1
  
  58—5F
  
  ANL  A,data
  
  直接字節與到A
  
  2
  
  1
  
  55
  
  ANL  A,@Ri
  
  間接RAM與到A
  
  1
  
  1
  
  56;57
  
  ANL  A,#data
  
  立即數與到A
  
  2
  
  1
  
  54
  
  ANL  data,A
  
  A與到直接字節
  
  2
  
  1
  
  52
  
  ANL  data,#data
  
  立即數與到直接字節
  
  3
  
  2
  
  53
  
  ANL  C,bit
  
  直接位與到進位位
  
  2
  
  2
  
  82
  
  ANL  C,/bit
  
  直接位的反碼與到進位位
  
  2
  
  2
  
  B0
  
  ORL  A,Rn
  
  寄存器或到A
  
  1
  
  1
  
  48—4F
  
  ORL  A,data
  
  直接字節或到A
  
  2
  
  1
  
  45
  
  ORL  A,@Ri
  
  間接RAM或到A
  
  1
  
  1
  
  46;47
  
  ORL  A,#data
  
  立即數或到A
  
  2
  
  1
  
  44
  
  ORL  data,A
  
  A或到直接字節
  
  2
  
  1
  
  42
  
  ORL  data,#data
  
  立即數或到直接字節
  
  3
  
  2
  
  43
  
  ORL  C,bit
  
  直接位或到進位位
  
  2
  
  2
  
  72
  
  ORL  C,/bit
  
  直接位的反碼或到進位位
  
  2
  
  2
  
  A0
  
  XRL  A,Rn
  
  寄存器異或到A
  
  1
  
  1
  
  68—6F
  
  XRL  A,data
  
  直接字節異或到A
  
  2
  
  1
  
  65
  
  XRL  A,@Ri
  
  間接RAM異或到A
  
  1
  
  1
  
  66;67
  
  XRL  A,#data
  
  立即數異或到A
  
  2
  
  1
  
  64
  
  XRL  data,A
  
  A異或到直接字節
  
  2
  
  1
  
  62
  
  XRL  data,#data
  
  立即數異或到直接字節
  
  3
  
  2
  
  63
  
  SETB  C
  
  進位位置 1
  
  1
  
  1
  
  D3
  
  SETB  bit
  
  直接位置 1
  
  2
  
  1
  
  D2
  
  CLR  A
  
  A清0
  
  1
  
  1
  
  E4
  
  CLR  C
  
  進位位清 0
  
  1
  
  1
  
  C3
  
  CLR  bit
  
  直接位清 0
  
  2
  
  1
  
  C2
  
  CPL  A
  
  A求反碼
  
  1
  
  1
  
  F4
  
  CPL  C
  
  進位位取反
  
  1
  
  1
  
  B3
  
  CPL  bit
  
  直接位取反
  
  2
  
  1
  
  B2
  
  RL  A
  
  A循環左移一位
  
  1
  
  1
  
  23
  
  RLC  A
  
  A  帶進位左移一位
  
  1
  
  1
  
  33
  
  RR  A
  
  A右移一位
  
  1
  
  1
  
  03
  
  RRC  A
  
  A  帶進位右移一位
  
  1
  
  1
  
  13
  
  SWAP  A
  
  A  半字節交換
  
  1
  
  1
  
  C4
  
  
3.算術運算指令(24條)
  
  ADD  A,Rn
  
  寄存器加到A
  
  1
  
  1
  
  28—2F
  
  ADD  A,data
  
  直接字節加到A
  
  2
  
  1
  
  25
  
  ADD  A,@Ri
  
  間接RAM 加到A
  
  1
  
  1
  
  26;27
  
  ADD  A,#data
  
  立即數加到A
  
  2
  
  1
  
  24
  
  ADDC  A,Rn
  
  寄存器帶進位加到 A
  
  1
  
  1
  
  38—3F
  
  ADDC  A,data
  
  直接字節帶進位加到A
  
  2
  
  1
  
  35
  
  ADDC  A,@Ri
  
  間接RAM 帶進位加到A
  
  1
  
  1
  
  36;37
  
  ADDC  A,#data
  
  立即數帶進位加到 A
  
  2
  
  1
  
  34
  
  SUBB  A,Rn
  
  從A 中減去寄存器和進位
  
  1
  
  1
  
  98—9F
  
  SUBB  A,data
  
  從A 中減去直接字節和進位
  
  2
  
  1
  
  95
  
  SUBB  A,@Ri
  
  從A 中減去間接RAM 和進位
  
  1
  
  1
  
  96;97
  
  SUBB  A,#data
  
  從A 中減去立即數和進位
  
  2
  
  1
  
  94
  
  INC  A
  
  A加1
  
  1
  
  1
  
  04
  
  INC  Rn
  
  寄存器加 1
  
  1
  
  1
  
  08—0F
  
  INC  data
  
  直接字節加1
  
  2
  
  1
  
  05
  
  INC  @Ri
  
  間接RAM 加1
  
  1
  
  1
  
  06;07
  
  INC  DPTR
  
  數據指針加1
  
  1
  
  2
  
  A3
  
  DEC  A
  
  A減1
  
  1
  
  1
  
  14
  
  DEC  Rn
  
  寄存器減 1
  
  1
  
  1
  
  18—1F
  
  DEC  data
  
  直接字節減1
  
  2
  
  1
  
  15
  
  DEC  @Ri
  
  間接RAM 減1
  
  1
  
  1
  
  16;17
  
  MUL  AB
  
  A乘B
  
  1
  
  4
  
  A4
  
  DIV  AB
  
  A被B除
  
  1
  
  4
  
  84
  
  DA  A
  
  A十進制調整
  
  1
  
  1
  
  D4
  
  4.轉移指令(22條)
  
  AJMP  addr 11
  
  絕對轉移
  
  2
  
  2
  
  *1
  
  LJMP  addr 16
  
  長轉移
  
  3
  
  2
  
  02
  
  SJMP  rel
  
  短轉移
  
  2
  
  2
  
  80
  
  JMP  @A+DPTR
  
  相對于DPTR 間接轉移
  
  1
  
  2
  
  73
  
  JZ  rel
  
  若A=0 則轉移
  
  2
  
  2
  
  60
  
  JNZ  rel
  
  若A≠0 則轉移
  
  2
  
  2
  
  70
  
  JC  rel
  
  若C=1 則轉移
  
  2
  
  2
  
  40
  
  JNC  rel
  
  若C≠1 則轉移
  
  2
  
  2
  
  50
  
  JB  bit,rel
  
  若直接位=1 則轉移
  
  3
  
  2
  
  20
  
  JNB  bit,rel
  
  若直接位=0 則轉移
  
  3
  
  2
  
  30
  
  JBC  bit,rel
  
  若直接位=1 則轉移且清除
  
  3
  
  2
  
  10
  
  CJNE  A,data,rel
  
  直接數與 A 比較,不等轉移
  
  3
  
  2
  
  B5
  
  CJNE  A,#data,rel
  
  立即數與 A 比較,不等轉移
  
  3
  
  2
  
  B4
  
  CJNE  @Ri,#data,rel
  
  立即數與間接RAM比較,不等轉移
  
  3
  
  2
  
  B6;B7
  
  CJNE  Rn,#data,rel
  
  立即數與寄存器比較不等轉移
  
  3
  
  2
  
  B8—BF
  
  DJNZ  Rn,rel
  
  寄存器減 1 不為0 轉移
  
  2
  
  2
  
  D8—DF
  
  DJNZ  data,rel
  
  直接字節減1 不為 0 轉移
  
  3
  
  2
  
  D5
  
  ACALL  addr 11
  
  絕對子程序調用
  
  2
  
  2
  
  *1
  
  LCALL  addr 16
  
  子程序調用
  
  3
  
  2
  
  12
  
  RET
  
  子程序調用返回
  
  1
  
  2
  
  22
  
  RETI
  
  中斷程序調用返回
  
  1
  
  2
  
  32
  
  NOP
  
  空操作
  
  1
  
  1
  
  00
  


六.記憶方法
MCS-51使用匯編語言指令,它共有44個操作碼助記符,33種功能,
其操作數有#data、direct、Rn、@Ri等。這里先介紹指令助記符及其相關符號的記憶方法。
一、助記符號的記憶方法
1
表格列舉法
把44個指令助記符按功能分為五類,每類列表記憶。此處從略,請讀者自己總結。
2
英文還原法
單片機的操作碼助記符是該指令功能的英文縮寫,將縮寫還原成英語原文,再對照漢
語有助于理解其助記符含義,從而加強記憶。例如:
增量 INC-Incremect 減量 DNC-Decrement
短轉移 SJMP-Short jump 長轉移 LJMP-Long jump
比較轉移 CJNE-Compare jump not equality
絕對轉移 AJMP-Absolute jump 空操作 NOP-No operation
交換 XCH-Exchange 加法 ADD-Addition
乘法 MUL-Multiplication 除法 DIV-Division
左環移 RL-Rotate left 進位左環移 RLC-Rotate
left carry
右環移 RR-Rotate right 進位右環移RRC-Rotate
right carry
3
功能模塊記憶法
單片機的44個指令助記符,按所屬指令功能可分為五大類,每類又可以按功能相似原
則為2~3組。這樣,化整為零,各個擊破,實現快速記憶。
1
)數據傳送組。 2)加減運算組
MOV
內部數據傳送 ADD 加法
MOVC
程序存儲器傳送 ADDC 帶進位加法
MOVX
外部數據傳送 SUBB 帶進位減法
3
)邏輯運算組。 4)子程序調用組。
ANL
邏輯與 LCALL 長調用
ORL
邏輯或 ALALL 絕對調用
XRL
邏輯異或 RET 子程序返回
二、指令的記憶方法
1
指令操作數的有關符號
MCS
-51的尋址方式共有六種:立即數尋址、直接尋址、寄存器尋址、寄存器間址、變
址尋址、相對尋址。我們必須掌握其表示的方法。
1
)立即數與直接地址。ata表示八位立即數,#data16表示是十六位立即數,data或
direct
表示直接地址。
2
)Rn(n=0-7)、A、B、CY、DPTR寄存器尋址變量。
3
)@R0、@R1、@DPTR、SP表示寄存器間址變量。
4
)DPTR+A、PC+A表示變址尋址的變量。
5
)PC+rel(相對量)表示相對尋址變量。
記住指令的助記符,掌握不同尋址方式的指令操作數的表示方法,為我們記憶匯編指
令打下了基礎。MCS-51指令雖多,但按功能可分為五類,
其中數據傳送類28條,算術運算類24條,邏輯操作類25條,控制轉移類17條,布爾位操作
類17條。在每類指令里,根據其功能,抓住其源、
目的操作數的不同組合,再輔之以下方法,是完全能記住的。
我們約定,可能的目的操作數按(#data/direct/A/Rn/@Ri)順序表示。
對于MOV指令,其目的操作數按A、Rn、direct、@Ri的順序書寫,則可以記住MOV的15
條指令。例如以累加器A為目的操作數,可寫出如下4條指令。
MOV A
,#data/direct/A/Rn/@Ri
以此類推,寫出其它指令。
MOV Rn
,#data/direct/A
MOV direct
,#data/direct/A/Rn/@Ri
MOV @Ri
,#data/direct/A
2
指令圖示記憶法
圖示記憶法是把操作功能相同或相似、但其操作數不同的指令,用圖形和箭頭將目
的、源操作數的關系表示出來的一種記憶方法。
例如:由助記符MOV、MOVX、MOVC組成的送數組指令,可以用圖1、2幫助記憶。
由助記符CJNE形成的四條指令,也可以用圖示法表示,如圖3。
CJNE A
,#data,rel CJNE A,direct,rel
CJNE @Rn
,#data,rel CJNE @Ri,#data,rel
另外,對于由(ANL、ORL、ARL)形成的18條邏輯操作指令,有關A的四條環移指令,
也可以用圖示法表示,請讀者自行畫出記憶。
3
相似功能歸類法
在MCS-51指令中,我們發現部分指令其操作碼不同,但功能相似,而操作數則完全一
樣。相似功能歸類法就是把具有這樣特點的指令放在一起記憶,
只要記住其中的一條,其余的也就記住了。如加、減法的十二條指令,與、或、非的十八
條指令,現列舉如下。
ADD/ADDC/SUBB A
,#data/direct/Rn/@Ri
ANL/ORL/XRL A
,#data/direct/Rn/@Ri
ANL/ORL/XRL direct
,#data/a
上述每一排指令,功能相似,其操作數都相同。其它的如加1(INC)、減1(DEC)指令也
可照此辦理。
4
口訣記憶法
對于有些指令,我們可以把相關的功能用精練的語言編成一句話來記憶。如PUSH
direct
和POP direct這兩條指令。
初學者常常分不清堆棧SP的變化情況,為此編成這樣一句話:(SP的內容)加1(direct的內
容)再入棧,(SP的內容)彈出(到direct單元)SP才減1。
又如乘法指令中積的存放,除法指令中被除數和除數以及商的存放,都可以編成口訣記憶
如下。
MUL AB
高位積(存于)B,低位積(存于)A。
DIV AB A
除以B,商(存于)A余(下)B。
上面介紹了幾種快速記憶單片機指令的方法,希望能起到拋磚引玉的作用,相信讀者
在學習單片機的過程中能找到適合自己的方法來記憶。
但是,有了好的方法還不夠,還需要實踐,即多讀書上的例題和別人編寫的程序,自己再
結合實際編寫一些程序。只有這樣,
才能更好更快地掌握單片機指令系統。

以上圖文的Word格式文檔下載(內容和本網頁上的一模一樣,方便保存):
51單片機匯編指令集(附記憶方法) (1).doc (134.06 KB, 下載次數: 62)

評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏4 分享淘帖 頂1 踩
回復

使用道具 舉報

沙發
ID:975745 發表于 2021-10-28 17:03 | 只看該作者
很好的文章,可以下載嗎。
回復

使用道具 舉報

板凳
ID:624685 發表于 2021-10-28 20:09 | 只看該作者
收藏了,匯編還沒學,以后慢慢學
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产一级免费在线观看 | av一区二区三区四区 | 国产最新视频在线 | www.久| 婷婷色成人 | 精品久久久久久久久久久久 | 精品亚洲国产成av人片传媒 | 亚洲欧美国产精品一区二区 | 九九热国产视频 | 日韩手机在线看片 | 精品成人av | 久久久久久国产精品 | 久久成人免费视频 | 久久99精品久久久久久 | 亚洲精品久久 | 国产精品视频综合 | 国产亚洲成av人片在线观看桃 | 亚洲成av人片在线观看 | 女同久久另类99精品国产 | 国产在线精品一区二区 | 久久男人天堂 | 国产亚洲精品美女久久久久久久久久 | 亚洲精品国产偷自在线观看 | h视频在线免费看 | 亚洲一区二区视频在线观看 | 亚洲国产成人精品久久久国产成人一区 | 精品伊人| 国产精品自产拍 | 2019天天操 | 在线成人免费观看 | 国产一区久久 | 1000部精品久久久久久久久 | 国产精品久久久久久一区二区三区 | 亚洲视频 欧美视频 | 国产a视频 | 久久机热 | 91免费视频观看 | www.黄色网 | 欧美成视频 | 日韩福利在线 | 日韩在线精品视频 |