你好,解析如下;
數據傳送類指令
MOV A, Rn 寄存器內容送入累加器
MOV A, direct 直接地址單元中的數據送入累加器
MOV A, @Ri 間接RAM中的數據送入累加器
MOV A, #data 立即送入累加器
MOV Rn, A 累加器內容送入寄存器
MOV Rn, direct 直接地址單元中的數據送入寄存器
MOV Rn, #data 立即數送入寄存器
MOV direct, A 累加器內容送入直接地址單元
MOV direct, Rn 寄存器內容送入直接地址單元
MOV direct, direct 直接地址單元中的數據送入另一個直接地址單元
MOV direct, @Ri 間接RAM中的數據送入直接地址單元
MOV direct, #data 立即數送入直接地址單元
MOV @Ri, A 累加器內容送間接RAM單元
MOV @Ri, direct 直接地址單元數據送入間接RAM單元
MOV @Ri, #data 立即數送入間接RAM單元
MOV DPTR,#data16 16位立即數送入地址寄存器
MOVC A, @A+DPTR 以DPTR為基地址變址定址單元中的數據送入累加器
MOVC A, @A+PC 以PC為基地址變址定址單元中的數據送入累加器
MOVX A, @Ri 邏輯上在外部的片內擴展RAM,(8位地址)送入累加器
MOVX A, @DPTR 邏輯上在外部的片內擴展RAM,(16位地址)送入累加器
MOVX @Ri, A 累加器送邏輯上在外部的片內擴展RAM(8位地址)
MOVX @DPTR, A 累加器送邏輯上在外部的片內擴展RAM(16位地址)
PUSH direct 直接地址單元中的數據壓入堆棧
POP direcct 出棧送直接地址單元
XCH A, Rn 寄存器與累加器交換
XCH A,direct 直接地址單元與累加器交換
XCH A, @Ri 間接RAM與累加器交換
XCHD A, @Ri 間接RAM的低半位元組與累加器交換
算術操作類指令
ADD A,Rn 寄存器內容送入累加器
ADD A,direct 直接地址單元中的數據加到累加器
ADD A,@Ri 間接RAM中的數據加到累加器
ADD A,#data 立即加到累加器加到累加器累加器
ADDC A,Rn 寄存器內容帶?位加到累加器
ADDC A,direct 直接地址單元的內容帶?位加到累加器
ADDC A,@Ri 間接RAM內容帶?位加到累加器
ADDC A,#data 立即數帶?位加到累加器
SUBB A,Rn 累加器帶借位減寄存器內容容
SUBB A,direct 累加器帶借位減直接地址單元的內容容
SUBB A,@Ri 累加器帶借位減間接RAM中的內容容
SUBB A,#data 累加器帶借位減立即數數
INC A 累加器加1
INC Rn 寄存器加1
INC direct 直接地址單元加1
INC @Ri 間接RAM單元加1
DEC A 累加器減1
DEC Rn 寄存器減1
DEC direct 直接地址單元減1
DEC @Ri 間接RAM單元減1
INC DPTR 地址寄存器DPTR加1
MUL AB A乘B
DIV AB A除B
DA A 累加器十制調整整
邏輯操作類指令
ANL A,Rn 累加器與寄存器相「與」
ANL A,direct 累加器與直接地址單元相「與」
ANL A,@Ri 累加器與間接RAM單元相「 與」
ANL A,#data 累加器與立即數相「與」
ANL direct, A 直接地址單元與累加器相「與」
ANL direct,#data 直接地址單元與立即數相「與」
ORL A, Rn 累加器與寄存器相「或」
ORL A,direct 累加器與直接地址單元相「或」
ORL A,@Ri 累加器與間接RAM單元相「或」
ORL A,#data 累加器與立即數相「或」
ORL direct, A 直接地址單元與累加器相「或」
ORL direct, #data 直接地址單元與立即數相「或」
XRL A, Rn 累加器與寄存器相「異或」
XRL A, d irect 累加器與直接地址單元相「異或」
XRL A, @Ri 累加器與間接RAM單元相「異或」
XRL A, # data 累加器與立即數相「異或」
XRL direct, A 直接地址單元與累加器相「異或」
XRL direct,#data 直接地址單元與立即數相「異或」
CLR A 累加器清「0」
CPL A 累加器求反反
RL A 累加器循環左移移
RLC A 累加器帶?位位循環左移移
RR A 累加器循環右移移
RRC A 累加器帶?位位循環右
SWAP A 累加器半位元組交換換
控制轉移類指令
ACALL addr11 絕對(短)調用子程序序
LCALL addr16 長調用子程序序
RET 子程序返回回
RETI 中斷返回回
AJMP addr11 絕對(短)轉移移
LJMP addr16 長轉移
SJMP re1 相對轉移
JMP @A+DPTR 相對於DPTR的間接轉移移
JZ re1 累加器為零轉移移
JNZ re1 累加器非零轉移移
CJNE A,direct,re1 累加器與直接地址單元比較,不相等則轉移移
CJNE A,#data,re1 累加器與立即數比較,不相等則轉移移
CJNE Rn,#data,re1 寄存器與立即數比較,不相等則轉移移
CJNE @Ri,#data,re1 間接RAM單元與立即數比較,不相等則轉移移
DJNZ Rn,re1 寄存器減1,非零轉移移
DJNZ direct,re1 直接地址單元減1,非零轉移移
NOP 空操作
布爾變數操作類指令
CLR C 清零進位位
CLR bit 清0直接地址位
SETB C 置1進位位
SETB bit 置1直接地址位
CPL C 進位位求反
CPL bit 直接地址位求反
ANL C, bit 進位位和直接地址位相「與」
ANL C, /bit 進位位和直接地址位的反碼相「與」
ORL C, bit ?位位和直接地址位相「或」
ORL C, /bit ?位位和直接地址位的反碼相「或」
MOV C, bit 直接地址位送入?位位位
MOV bit, C ?位位送入直接地址位
JC rel ?位位為1則轉移
JNC rel ?位位為0則轉移
JB bit, rel 直接地址位為1則轉移
JNB bit, rel 直接地址位為0則轉移
JBC bit, rel 直接地址位為1則轉移,該位清0
希望對你有幫助!給個好評吧,謝謝你了!
B. 單片機中XCHD應該怎樣理解
單片機XCHD A,@R0 是半位元組交換指令,累加器A的低4 位和內存的低4 位交換.
是匯編指令,類似於SWAP,不過有兩個操作數,XCHD Rd, Rn ,功能為半位元組交換。
比如: R1 = 23H,R2 = 45H,那麼 XCHD R1, R2後,
R1 = 25H, R2 = 43H,明白了嗎
C. 單片機指令swap什麼意思
swap是交換指令,具體功能要看單片機內核了。
大概是這樣的:
如果是8位內核的,比如MCS-51,實現的是位元組內高四位和低四位的交換。
如果是32位ARM的話,實現兩內個操作地址內的數據容交換。
總的來說,就是數據交換了,至於怎麼交換,由內核機制決定。
D. 單片機數據的高位元組和低位元組怎樣進行調換
單片機數據的高位元組和低位元組怎樣進行調換?
因該是
TEMP=0
TEMP|=(0x0F&A)<<4
A=TEMP&0XF0
這樣數據應該是高四位與低四位交換了
E. 51單片機中匯編語言中的swap什麼意思
51單片機匯編語言中的swap是半位元組交換指令。
SWAP A 這條指令,將累加器A的高、低4位數據交換,也就是低4位數據進入高4位,高4位數據進入低4位。例如:
MOV A#00001111B
SWAP A
執行SWAP A後,A中的內容變為11110000B。
F. 單片機XCHD指令是怎麼進行交換的
單片機xchd
a,@r0
是半位元組交換指令,累加器a的低4
位和內存的低4
位交換.
是匯編指令,類似於swap,不過有兩個操作數,xchd
rd,
rn
,功能為半位元組交換。
比如:
r1
=
23h,r2
=
45h,那麼
xchd
r1,
r2後,
r1
=
25h,
r2
=
43h,明白了嗎
G. 單片機指令swap什麼意思
swap是交換指令,具體功能要看單片機內核了。
大概是這樣的:
如果是8位內核的,比如MCS-51,實現的是位元組內高四位和低四位的交換。
如果是32位ARM的話,實現兩個操作地址內的數據交換。
總的來說,就是數據交換了,至於怎麼交換,由內核機制決定。
H. 51單片機的所有指令
單片機指令功能一覽表
助記符 代碼 說明
MOV A,Rn E8~EF 寄存器A
MOV A,direct E5 dircet 直接位元組送A
MOV A,@Ri ER~E7 間接RAM送A
MOV A,#data 74 data 立即數送A
MOV Rn,A F8~FF A送寄存器
MOV Rn,dircet A8~AF dircet 直接位元組送寄存器
MOV Rn,#data 78~7F data 立即數送寄存器
MOV dircet,A F5 dircet A送直接位元組
MOV dircet,Rn 88~8F dircet 寄存器送直接位元組
MOV dircet1,dircet2 85 dircet1 dircet2 直接位元組送直接位元組
MOV dircet,@Ro 86~87 間接RAM送直接位元組
MOV dircet,#data 75 dircet data 立即數送直接位元組
MOV @Ri,A F6~F7 A送間接RAM
MOV @Ri,#data 76~77 data 直接位元組送間接RAM
MOV @Ri,#data 76~77 data 立即數送間接RAM
MOV DPTR,#data16 90 data 15~8 16位常數送數據指針
data7~0
MOVC A,@A+DPTR 93 由((A)+(DPTR))定址的程序存貯
器位元組選A
MOVC A,@A+PC 83 由((A)+(PC));定址的程序存貯器位元組送A
MOVX A,@Ri E2~E3 送外部數據(8位地址)送A
MOVX A,@DPTR E0 送外部數據(16位地址)送A
MOVX @Ri,A F2~F3 A送外部數據(8位地址)
MOVX @DPTR,A F0 A送外部數據(16位地址)
PUSH dircet C0 dircet 直接位元組進棧,SP加1
POP dircet D0 dircet 直接位元組退棧,SP減1
XCH A,Rn C8~CF 交換A和寄存器
XCH A,dircet C5 dircet 交換A和直接位元組
XCH A,@Ri C6~C7 交換A和間接RAM
XCH A,@Ri D6~D7 交換A和間接RAM的低位
SWAP A C4
算術操作 (A的二個半位元組交換)
ADD A,Rn 28~2F 寄存器加到A
ADD A,dircet 25 dircet 直接位元組加到A
ADD A,@Ri 26~27 間接RAM加到A
ADD A,#data 24data 立即數加到A
ADD A,Rn 38~3F 寄存器和進位位加到A
ADD A,dircet 35dircet 直接位元組和進位位加到A
ADD A,@Ri 36~37 間接位元組和進位位加到A
ADD A,data 34 data 立即數和進位位加到A
ADD A,Rn 98~9F A減去寄存器和進位位
ADD A,dircet 95 dircet A減去直接位元組和進位位
ADD A,@Ri 36~37 間接RAM和進位位加到A
ADD A,data 34 data 立即數和進位位加到A
SUBB A,Rn 98~9F A減去寄存器和進位位
SUBB A,dircet 95 dircet A減去直接位元組和進位位
SUBB A,@Ri 96~97 A減去間接RAM和進位位
SUBB A,#data 94 data A減去立即數和進位位
INC A 04 A加1
INC Rn 08~0F 寄存器加1
INC dircet 05 dircet 直接位元組加1
INC @Ri 06~07 間接RAM加1
DEC A 14 A減1
DEC Rn 18~1F 寄存器減1
DEC dircet 15 dircet 直接位元組減1
DEC @Ri 16~17 間接RAM減1
INC DPTR A3 數據指針加1
MUL AB A4 A乘以B
DIV AB 84 A除以B
DA A D4 A的十進制加法調整
邏輯操作
ANL A,Rn 58~5F 寄存器「與」到A
ANL A,dircet 55 dircet 直接位元組「與」到A
ANL A,@Ri 56~57 間接RAm「與」到A
ANL A,#data 54 data 立即數「與」到A
ANL dircet A 52 dircet A「與」到直接位元組
ANL dircet,#data 53 dircet data 立即數「與」到直接位元組
ORL A,Rn 48~4F 寄存器「或」到A
ORL A,dircet 45 dircet 直接位元組「或」到A
ORL A,@Ri 46~47 間接RAM「或」到A
ORL A,#data 44 data 立即數「或」到A
ORL dircet,A 42 dircet A「或」到直接位元組
ORL dircet,#data 43 dircet data 立即數「或」到直接位元組
XRL A,Rn 68~6F 寄存器「異或」到A
XRL A,dircet 65 dircet 直接位元組「異或」到A
XRL A,@Ri 66~67 間接RAM「異或」到A
XRL A,#data 64 data 立即數「異或」到A
XRL dircet A 62 dircet A「異或」到直接位元組
XRL dircet,#data 63 dircet data 立即數「異或」到直接位元組
CLR A E4 清零
CPL A F4 A取反
RL A 23 A左環移
RLC A 33 A通過進位左環移
RR A 03 A右環移
RRC A 13 A通過進位右環移
控製程序轉移
ACALL addr 11 *1 addr(a7~a0) 絕對子程序調用
LCALL addr 16 12 addr(15~8) 長子程序調用
addr(7~0)
RET 22 子程序調用返回
RETI addr 11 32 中斷調用返回
AJMP addr 11 △1 addr(a7~a6) 絕對轉移
LJMP addr 16 02addr(15~8) 長轉移
addr(7~0)
SJMP rel 80 rel 短轉移,相對轉移
JMP @A+DPTR 73 相對於DPTR間接轉移
JZ rel 60 rel A為零轉移
JNZ rel 70 rel A為零轉移
CJNE A,dircet,rel B5 dircet rel 直接位元組與A比較,不等則轉移
CJNE A,#data,rel B4 data rel 立即數與A比較,不等則轉移
CJNE A,Rn,#data,rel B8~BF data rel 立即數與寄存器比較,不等則轉移
CJNE @Ri,#data,rel B6~B7 data rel 立即數與間接RAM比較,不等則轉移
DJNZ Rn,rel D8~DF rel 寄存器減1,不為零則轉移
DJNZ dircet,rel B5 dircet rel 直接位元組減1,不為零則轉移
NOP 00 空操作
*=a10a9a8l
△=a10a9a80
布爾變數操作
CLR C C3 清零進位
CLR bit C2 清零直接位
SETB C D3 置位進位
SETB bit D2 置位直接位
CPL C B3 進位取反
CPL bit B2 直接位取反
ANL C,bit 82 dit 直接數「與」到進位
ANL C,/bit B0 直接位的反「與」到進位
ORL C,bit 72 bit 直接位「或」到進位
ORL C,/bit A0 bit 直接位的反「或」到進位
MOV C,bit A2 bit 直接位送進位
MOV bit,C 92 bit 進位送直接位
JC rel 40 rel 進位位為1轉移
JNC rel 50 rel 進位位為0轉移
JB bit,rel 20 bit rel 直接位為1相對轉移
JNB bit,rel 30 bit rel 直接位為0相對轉移
JBC bit,rel 10 bit rel 直接位為1相對轉移,然後清零該位
[1]. 循環移位指令(4條)
RL A ;累加器A中的內容左移一位
RR A ;累加器A中的內容右移一位
RLC A ;累加器A中的內容連同進位位CY左移一位
RRC A ;累加器A中的內容連同進位位CY右移一位
[2]. 累加器半位元組交換指令(1條)
SWAP A ; 累加器中的內容高低半位元組互換
[3]. 求反指令(1條)
CPL A ; 累加器中的內容按位取反
[4]. 清零指令(1條)
CLR A ; 0→(A),累加器中的內容清0
[5]. 邏輯與操作指令(6條)
ANL A,data ;累加器A中的內容和直接地址單元中的內容執行與邏輯操作。結果存在寄存器A中。
ANL data,#data ;直接地址單元中的內容和立即數執行與邏輯操作。結果存在直接地址單元中。
ANL A,#data ;累加器A的內容和立即數執行與邏輯操作。結果存在累加器A中。
ANL A,Rn ;累加器A的內容和寄存器Rn中的內容執行與邏輯操作。結果存在累加器A中。
ANL data,A ;直接地址單元中的內容和累加器A的內容執行與邏輯操作。結果存在直接地址單元中。
ANL A,@Ri ;累加器A的內容和工作寄存器Ri指向的地址單元中的內容執行與邏輯操作。結果存在累加器A中。
[6]. 邏輯或操作指令(6條)
這組指令的作用是將兩個單元中的內容執行邏輯或操作。如果直接地址是I/O地址,則為「讀—修改—寫」操作。
ORL A,data ;累加器A中的內容和直接地址單元中的內容執行邏輯或操作。結果存在寄存器A中。
ORL data,#data ;直接地址單元中的內容和立即數執行邏輯或操作。結果存在直接地址單元中。
ORL A,#data ;累加器A的內容和立即數執行邏輯或操作。結果存在累加器A中。
ORL A,Rn ;累加器A的內容和寄存器Rn中的內容執行邏輯或操作。結果存在累加器A中。
ORL data,A ;直接地址單元中的內容和累加器A的內容執行邏輯或操作。結果存在直接地址單元中。
ORL A,@Ri ;累加器A的內容和工作寄存器Ri指向的地址單元中的內容執行邏輯或操作。結果存在累加器A中。
[7]. 邏輯異或操作指令(6條)
XRL A,data ;累加器A中的內容和直接地址單元中的內容執行邏輯異或操作。結果存在寄存器A中。
XRL data,#data ;直接地址單元中的內容和立即數執行邏輯異或操作。結果存在直接地址單元中。
XRL A,#data ;累加器A的內容和立即數執行邏輯異或操作。結果存在累加器A中。
XRL A,Rn ;累加器A的內容和寄存器Rn中的內容執行邏輯異或操作。結果存在累加器A中。
XRL data,A ;直接地址單元中的內容和累加器A的內容執行邏輯異或操作。結果存在直接地址單元中。
XRL A,@Ri ;累加器A的內容和工作寄存器Ri指向的地址單元中的內容執行邏輯異或操作。結果存在累加器A中
控制轉移類指令分析
[1]. 無條件轉移指令(4條)
LJMP addr16 ;addr16→(PC),給程序計數器賦予新值(16位地址)
AJMP addr11 ;(PC)+2→(PC),addr11→(PC10-0)程序計數器賦予新值(11位地址),(PC15-11)不改變
SJMP rel ;(PC)+ 2 + rel→(PC)當前程序計數器先加上2再加上偏移量給程序計數器賦予新值
JMP @A+DPTR ;(A)+ (DPTR)→(PC),累加器所指向地址單元的值加上數據指針的值給程序計數器賦予新值
[2]. 條件轉移指令(8條)
JZ rel ; A=0,(PC)+ 2 + rel→(PC),累加器中的內容為0,則轉移到偏移量所指向的地址,否則程序往下執行
JNZ rel ; A≠0,(PC)+ 2 + rel→(PC),累加器中的內容不為0,則轉移到偏移量所指向的地址,否則程序往下執行
CJNE A, data, rel ; A≠(data),(PC)+ 3 + rel→(PC),累加器中的內容不等於直接地址單元的內容,則轉移到偏移量所指向的地址,否則程序往下執行
CJNE A, #data, rel ; A≠#data,(PC)+ 3 + rel→(PC),累加器中的內容不等於立即數,則轉移到偏移量所指向的地址,否則程序往下執行
CJNE Rn, #data, rel ; A≠#data,(PC)+ 3 + rel→(PC),工作寄存器Rn中的內容不等於立即數,則轉移到偏移量所指向的地址,否則程序往下執行
CJNE @Ri, #data, rel ; A≠#data,(PC)+ 3 + rel→(PC),工作寄存器Ri指向地址單元中的內容不等於立即數,則轉移到偏移量所指向的地址,否則程序往下執行
布爾變數操作指令分析
[1]. 位傳送指令(2條)
MOV C,bit ;bit→CY,某位數據送CY
MOV bit,C ;CY→bit,CY數據送某位
[2]. 位置位復位指令(4條)
CLR C ; 0→CY,清CY
CLR bit ; 0→bit,清某一位
SETB C ; 1→CY,置位CY
SETB bit ; 1→bit,置位某一位
[3]. 位運算指令(6條)
ANL C,bit ;(CY)∧(bit)→CY
ANL C,/bit ;(CY)∧( )→CY
ORL C,bit ;(CY)∨(bit)→CY
ORL C,/bit ;(CY)∧()→CY
CPL C ;()→CY
CPL bit ;()→bir
[4]. 位控制轉移指令(5)
JC rel ; (CY)=1轉移,(PC)+2+rel→PC,否則程序往下執行,(PC)+2→PC。
JNC rel ; (CY)=0轉移,(PC)+2+rel→PC,否則程序往下執行,(PC)+2→PC。
JB bit, rel ; 位狀態為1轉移。
JNB bit, rel ; 位狀態為0轉移。
JBC bit, rel ; 位狀態為1轉移,並使該位清「0」。
I. 單片機題目:SWAP是什麼意思
swap是交換指令,具體功能要看單片機內核了。
大概是這樣的:
如果是8位內核的,比如mcs-51,實現的是位元組內高四位和低四位的交換。
如果是32位arm的話,實現兩個操作地址內的數據交換。
總的來說,就是數據交換了,至於怎麼交換,由內核機制決定。