1. 匯編語言的邏輯運算中異或怎麼算,能不能給個例子
哪種計算機的?51單片機就有匯編的異或指令:XRL
2. 在單片機中,ANL和ORL在數與數之間是怎麼計算的
1、ANL位與運算,就是二進制數字一位一位進行與運算: 0*1=0, 1*1=1...
比如說07H(0000 0111)和A1H(1010 0001)進行位與運算,就一位一位地與:
0000 0111
*1010 0001
---------------
0000 0001
就變成了01H。代碼可以寫成:
A=07H
ANLA, #A1H
運行出來A裡面就是01H。
向左轉|向右轉
2、ORL 位或運算,就是二進制數字一位一位進行或運算: 0+1=1, 1+1=1...
比如說07H(0000 0111)和A1H(1010 0001)進行位或運算,就一位一位地或:
0000 0111
+1010 0001
---------------
1010 0111
運算結果就是A7H。代碼可以寫成:
A=07H
ORL A, #A1H
運算結果就是A7H。
(2)單片機xrl指令怎麼算擴展閱讀:
ANL 位與運算
ORL 位或運算
0FH = 0000 1111 h
80H = 0100 0000 h
或後= 0100 1111 h = 8FH
所以A=0FH,執行ORL後是8FH
0FH = 0000 1111 h
88H = 0100 0100 h
與後= 0000 0100 h = 08H
所以A=0FH,執行ANL A,#88H後是08H
口訣:
與 有0則0
或 有1則1
3. 51單片機中的邏輯運算及位移類指令——邏輯運算指令中的邏輯異或指令(6條)中的助記符格式中:①XRL
direct---直接定址的地址
Rn---存儲器
Ri---寄存器
@Ri---存儲器的地址放在寄存器裡面
#data---立即數
再與A裡面的內容做異或運算
建議找本教材看看如單片機原理與應用,清華大學,畫了內存分布圖很好理解。
4. c51單片機AND,OR,XOR邏輯運算是什麼意思能舉例說明嗎
在邏輯信號中,只有兩種情況,分別是「1」還有「0」。
1與1=1,1與0=0,0與1=0,0與0=0,相當於要兩個都是1結果才是1
1或1=1,1或0=1,0或1=1,0或0=0,相當於只需要一個是1結果就是1
1異或1=0,1異或0=1,0異或1=1,0異或0=0,相當於兩個不同結果是1,兩個相同結果是0,就是 所謂的「異」嘛
ANL表示「與」,如某工作寄存器內容和累加器內容相與指令:ANL A,Ri,並將結果放回累加器A中
ORL表示「或」,如某工作寄存器內容和累加器內容相或指令:ORL A,Ri,並將結果放回累加器中
XRL表示「異或」,如某工作寄存器內容和累加器內容相異或指令:XRL A,Ri,並將結果放回累加 器A
5. 單片機..程序求值
anl a,#17h ;a = 83h and 17h = 3h
orl 17h,a ;17h = 34h or 3h = 37h
xrl a,@r0 ;交換了17h和a的值 a=37h 17h=3
cpl a ;A取反 a=0c8h
6. 單片機系統指令的功能指令
一、位元組交換指令
XCH A, Rn
若(A)=80H,(R7)=08H,執行後(A)=08H,(R7)=80H
XCH A, direct
若(A)=80H,(40H)=F0H,執行後(A)=F0H ,(40H)= 80H
XCH A, @Ri
若(A)=80H , (R0)=6AH, (6AH)=0FH ,
執行後(A)=0FH,(6AH)=80H
二、半位元組交換指令
XCHD A, @Ri 累加器的低4位與內部RAM低4位交換
三、累加器半位元組交換指令
SWAP A
將累加器A的高半位元組和低半位元組互換。
四、算術運算指令
加、減、乘、除指令,都是針對8位二進制無符號數。執行
的結果對Cy、Ac、OV等標志位有影響,但增1和減1指令不影
響上述標志。
1、加法指令,目的操作數均為ACC。
ADD A, Rn ;(A)+(Rn)→A,n=0~7
ADD A, direct ;(A)+(direct)→A
ADD A, @Ri ;(A)+((Ri))→A,i=0,1
ADD A, #data ;(A)+#data→A
注意運算結果對各個標志位的影響:
(1)、如果位7有進位,則進位標志Cy置「1」,否則清0;
(2)、如果位3有進位,則輔助進位標志Ac置「1」,否則清0;
(3)、溢出標志位OV:
如果位6有進位,而位7沒有進位;或者位7有進位,而位6 沒有,則溢出標志位OV置「1」,否則清0。
OV狀態,只有在帶符號數加法運算時才有意義。
當兩個帶符號數相加時,OV=1,表示加法運算超出了累加器A所能表示的帶符號數的有效范圍。
2、帶進位加法指令
標志位Cy參加運算,因此是三個數相加。共4條:
ADDC A, Rn ;(A)+(Rn)+C→A,n=0~7 ADDC A, direct ;(A)+(direct)+C→A
ADDC A, @Ri ;(A)+(Ri)+C→A,i=0,1
ADDC A, #data ;(A)+#data+C→A
3、增1(加1)指令(C語言的++ )
INC A
INC Rn ;n=0~7
INC direct
INC @Ri ;i=0,1
INC DPTR (除立即數以外)
(1)、不影響PSW中的任何標志局碼(除了INC A 外)。
(2)、INC DPTR
該指令是16位數增1指令。指令首先對低8位指針DPL的內容執行加1的操作,當產生溢出時,就對DPH的內容進行加1操作,不影響標志Cy的狀態。
4、DA A,十進制調整指令
用於對BCD碼加法運算結果的修正。
兩個BCD碼按二進制相加之後,必須經本指令的調整才能
得到正確的壓縮BCD碼的和數。
調整方法:十進制調和臘讓整修正,即結果加6調整。具體為:
a) 累加器低4位大於9或輔助進位位Ac=1,則進行低4位加6修正;
b) 累加器高4位大於9或進位位Cy=1,則進行高4位加6修正;
c) 累加器高4位大於9, 低4位大於9, 則高4位和低4位分別加6修正;是否加6是通過執行指令 DA A 來自動實現的。
5、帶借位的減法指令(注意:減法只有帶借位的)
SUBB A, Rn ;(A)-(Rn)- Cy→A,n=0~7
SUBB A, direct ; (A)-(direct)- Cy→A
SUBB A, @Ri ;(A)-((Ri))- Cy→A, i=0,1
SUBB A, #data ;(A)-#data - Cy→A
A的內容減去源操作數和進位標志Cy的值,結果存在A中。
1、如果位7需借位,則Cy置1,否則清0;
2、如果位3需借位,則Ac置1 ,否則清0;
3、如果位6需借位而位7不需要借位,或者位7需借位,位6
不需借位,則溢出標志位OV置1,否則清0。
6、減1指令(C語言的--)
DEC A ;(A)-1→A
DEC Rn ;(Rn)-1→Rn,n=0~7
DEC direct ;喚局(direct)-1→direct
DEC @Ri ;((Ri))-1→(Ri),i=0,1
1、減1指令不影響標志位。
2、增1/加1指令有INC DPTR,減1無DEC DPTR指令。
7、乘法指令
MUL AB ;A×B→BA
1、積的高位元組在B中,低位元組在A中;
2、如果積大於255,則置「1」溢出標志位OV
8、除法指令
DIV AB ;A/B→A(商),余數→B
如果B的內容為「0」(即除數為「0」),則存放結果的A、B中的內容不定,並置「1」溢出標志位OV。
五、左環移指令RL A
累加器A的內容向左環移一位,Acc.7移入Acc.0 ,不影響標志。
六、帶進位左環移指令RLC A
累加器A的內容和進位標志位Cy一起向左環移一位,Acc.7移入進位位Cy,Cy移入Acc.0,不影響其它標志。
七、右環移指令RR A
累加器A的內容向右環移一位,Acc.0移入Acc.7,不影響標志。
八、帶進位環移指令RRC A
累加器A的內容和進位標志Cy一起向右環移一位,Acc.0移入Cy,Cy移入Acc.7。不影響其它標志。
九、邏輯與指令
ANL A, Rn ; (A)∧(Rn)→A,n=0~7
ANL A, direct ; (A)∧(direct)→A
ANL A, #data ; (A)∧#data→A
ANL A, @Ri ; (A)∧((Ri))→A,i=0~1
ANL direct, A ; (direct)∧(A)→direct
ANL direct, #data ; (direct)∧#data→direct
十、邏輯或指令
ORL A, Rn ;(A) ∨(Rn)→A ,n=0~7
ORL A, direct ;(A) ∨(direct)→A
ORL A, #data ;(A) ∨data→A
ORL A, @Ri ;(A) ∨((Ri))→A,i=0,1
ORL direct, A ;(direct) ∨(A)→direct
ORL direct, #data ;(direct) ∨#data→direct
十一、邏輯異或指令
XRL A, Rn ;(A) ⊕(Rn)→A
XRL A, direct ;(A) ⊕(direct)→A
XRL A, @Ri ;(A) ⊕((Ri))→A ,i=0,1
XRL A, #data ;(A) ⊕#data→A
XRL direct, A ;(direct) ⊕(A)→direct
XRL direct, #data ;(direct) ⊕#data →direct
與1相與取反,與0相與不變。
7. 單片機程序
1001 0111
0010 0011
----------------
1011 0100
(A)=97H,皮明搭槐雀(燃拿40H)=B4H
8. 剛開始學單片機有個題弄不懂
與運鋒升算就滾慧是1+1=1,1+0=0,大基答0+0=0
^_^
ANL A,R5 ;A=000000000B
ORL A,R5;A=11111111B
XRL A,R5;A=11111111B
9. XRL單片機匯編語句啥意思
為解決某些特定的問題代碼中必須嵌入匯編語言以代替C語言完成的單片機的編程,匯編語言對於程序調試是不可或缺的。它包括:算術操作類指令,布爾變數操作類指令,邏輯操作數指令,控制轉移類指令。
邏輯異或指令,即相對應的二進制位不同該位異或後的結果是1,相同則為0。
XRL A,#data;累加器A中的容容和立即數執行邏輯異或操作。結果存放在累加器A中,如A中的內容為10010101B,data為10110110B,則運算的結果為00100011。
(9)單片機xrl指令怎麼算擴展閱讀:
對於程序調試匯編語言更是不可或缺。
直接使用匯編指令編寫單片機程序,對硬體的控制更加直接,可以直接操作物理地址,寄存器,埠等;其它更高級的語言(如:C語言)對硬體的控制是依賴於類庫來實現的。並且,對於一些對程序大小和運行速度有非常嚴苛要求的項目而言,都必須使用匯編指令。
C語言只是為了方便編寫,與機器打交道的其實都是2進製得代碼,匯編語言就是這些代碼好記憶的名稱和規則,只是比C語言難理解些。
10. 單片機指令
單片機指令功能一覽表
助記符 代碼 說明
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相對轉移,然後清零該位