㈠ XRL單片機匯編語句啥意思
為解決某些特定的問題代碼中必須嵌入匯編語言以代替C語言完成的單片機的編程,匯編語言對於程序調試是不可或缺的。它包括:算術操作類指令,布爾變數操作類指令,邏輯操作數指令,控制轉移類指令。
邏輯異或指令,即相對應的二進制位不同該位異或後的結果是1,相同則為0。
XRL A,#data;累加器A中的容容和立即數執行邏輯異或操作。結果存放在累加器A中,如A中的內容為10010101B,data為10110110B,則運算的結果為00100011。
(1)單片機匯編語句擴展閱讀:
對於程序調試匯編語言更是不可或缺。
直接使用匯編指令編寫單片機程序,對硬體的控制更加直接,可以直接操作物理地址,寄存器,埠等;其它更高級的語言(如:C語言)對硬體的控制是依賴於類庫來實現的。並且,對於一些對程序大小和運行速度有非常嚴苛要求的項目而言,都必須使用匯編指令。
C語言只是為了方便編寫,與機器打交道的其實都是2進製得代碼,匯編語言就是這些代碼好記憶的名稱和規則,只是比C語言難理解些。
㈡ 單片機匯編語言問題
您好,首先教你如何理解JNB和JB,
JNB就是Jump Not Bit,這樣不好理解,解釋一下就明白了:jump表示跳轉,not表示0,bit表示該位。它實際是條件判斷語句,意思是:如果該為為0則跳轉,否則繼續下一條。
例:JNB P1.1,mark[如果P1.1位為零則跳轉到mark標志指向的指令,否則繼續執行下一行]
JB則與JNB相反,即判斷0變為1,表示:如果該為為0則跳轉,否則繼續下一條。
助記口訣是:JNB為0跳轉,否繼續;JB為1跳轉,否繼續。
下面實現你要的流水燈程序,假定P1口低六位接燈,高電平時亮。
ORG 0000H
MOV P1,00H
MOV A,11111110B
LOOP:
RLC ACC
JNB ACC.0,ENABLEBIT1
JNB ACC.1,ENABLEBIT2
JNB ACC.2,ENABLEBIT3
JNB ACC.3,ENABLEBIT4
JNB ACC.4,ENABLEBIT5
JNB ACC.5,ENABLEBIT6
ENABLEBIT1:
MOV P1,00000001B
JMP LOOP
ENABLEBIT2:
MOV P1,00000010B
JMP LOOP
ENABLEBIT3:
MOV P1,00000100B
JMP LOOP
ENABLEBIT4:
MOV P1,00001000B
JMP LOOP
ENABLEBIT5:
MOV P1,00010000B
JMP LOOP
ENABLEBIT6:
MOV P1,00100000B
JMP LOOP
㈢ 匯編語言中CJNE語句是怎麼判斷的
CJNE這個指令是51單片機的匯編指令,是比較兩個操作數,如果相等這轉移。用法如下:
CJNE A,#30H,NXT
CJNE R1,#30H,NNN
等等。
CJNE是MCS-51系列單片機指令系統中的比較條件轉移指令;若兩個操作數相等,程序按順序往下d執行;若兩個操作數不相等,則進行轉移。由於該指令執行還要影響CY標志,因此在轉移之後可以通過對CY位的檢查來判別正負數。
(3)單片機匯編語句擴展閱讀:
由於匯編指令系統龐大,因而需構建指令系統體系,其指令數量龐大,格式復雜,可記憶性差等。指令中最難的是指令所支持的定址方式,其實質就是指令中操作數如何獲取。對於處理器而言,就是如何找到他所需的數據。
但對於計算機底層的匯編語言而言,這種定址方式將涉及大量的計算存儲格式,與 復雜的存儲管理方式緊密相關,因而難以理解。最後,匯編指令還關繫到如何影響標志位,但處理器標志位非常復雜,因而對其機制掌握就比較困難。
㈣ 單片機匯編語言新手求教
ORG 0 ORG是匯編器的偽指令,是告訴編譯器下一條匯編語句的偏移地址,
就是說START: CLR P1.0這句語句從0這個地址開始存放,後面的依次存放。
程序的燒寫要按照它的地址偏移指示燒寫,程序運行也按它的指示運行。
一般默認都是從0開始的,所以可以省略。
START: CLR P1.0 CLR和SETB都是位變數修改指令,
CLR是清零(變0),SETB 是置位(變1)。
START和DELAY應該叫作標識符,具體忘了,它的作用就是一個路標記號。
LCALL DELAY LCALL調用指定地址的子程序,即DELAY所指的地址
SETB P1.0 P1.0置1
LCALL DELAY
LJMP START LJMP跳到後面所指的地址,即START所在的位置
DELAY: MOV R5,#20 以下為DELAY延時程序。
D1: MOV R6,#20
D2: MOV R7,#248
DJNZ R7,$
DJNZ R6,D2
DJNZ R5,D1
RET 返回,繼續執行下面的程序
END 結束
㈤ 單片機匯編語言怎麼寫
ORG 0000H
LJMP MAIN
ORG 000BH
LJMP T0ISR
ORG 0030H
MAIN:
MOV TMOD,#01H
MOV TH0,#HIGH(65536-50000)
MOV TL0,#LOW(65536-50000)
SETB TR0
SETB ET0
SETB EA
START:
MOV R2,#0FEH
MOV R3,#3
MOV R4,#8
LOOP:
CLR 00H
MOV R7,#4
MOV A,R2
MOV P0,A
RL A
MOV R2,A
JNB 00H,$
DJNZ R4,LOOP
MOV R4,#8
MOV R2,#0FEH
DJNZ R3,LOOP
MOV R2,#7FH
MOV R3,#5
MOV R4,#8
LOOP1:
CLR 00H
MOV R7,#4
MOV A,R2
MOV P0,A
RR A
MOV R2,A
JNB 00H,$
DJNZ R4,LOOP1
MOV R4,#8
MOV R2,#7FH
DJNZ R3,LOOP1
LJMP START
T0ISR:
CLR TR0
MOV TH0,#HIGH(65536-50000)
MOV TL0,#LOW(65536-50000)
SETB TR0
DJNZ R7,T0E
MOV R7,#4
SETB 01H
T0E:
RETI
END
㈥ 單片機匯編語言程序的三種基本結構
匯編語言程序有順序程序、分支程序、循環程序三種。分支結構的執行是依據一定的條件選擇執行路徑,而不是嚴格按照語句出現的物理順序。
分支結構的程序設計方法的關鍵在於構造合適的分支條件和分析程序流程,根據不同的程序流程選擇適當的分支語句。
(6)單片機匯編語句擴展閱讀:
注意事項:
匯編指令不區分大小寫,目的操作數是存結果的,原操作數是被操作的。
二進制數後跟b,十六進制數後跟h,十進制數不需特殊標記。
匯編源程序中,數據不能以字母開頭,需要在前面加上0,如0a000h。
㈦ 單片機匯編語言
匯編語言是用英文助記符表示指令的符號語言,弄懂每個助記符的含義匯編語言就掌握一大半了.助記符的英文對照表,看了就明白了.
助記符意義\x09助記符 \x09對照英文
傳送\x09 MOV\x09 MOVe
代碼區數據傳送\x09MOVC\x09MOVe Code
外部RAM區數據傳送MOVX\x09MOVe eXternal
壓棧\x09 PUSH\x09 PUSH
退棧\x09 POP\x09 POP
交換\x09 XCH\x09 eXCHange
十進制交換\x09XCHD\x09eXCHange Decimal
加法\x09 ADD\x09 ADD
帶進位加 ADDC ADD with Carry
帶借位減\x09 SUBB SUBtract with Borrow
加1\x09 INC \x09INCrement
減1\x09 DEC\x09DECrement
乘\x09 MUL\x09MULtiply
除\x09 DIV\x09DIVide
十進制調整 DA\x09Decimal Adjust
邏輯與\x09 ANL\x09Logicle ANd
邏輯或\x09 ORL\x09Logicle OR
邏輯異或\x09 XRL\x09Logicle eXclusive-oR
求補\x09 CPL\x09ComPLement
清零\x09 CLR\x09CLeaR
置位\x09 SETB\x09SET Bit
左移\x09 RL\x09Rotate Left
帶進位左移 RLC \x09Rotate Left throuth the Carry flag
右移\x09 RR\x09Rotate Right
帶進位右移 RRC\x09Rotate Right throuth the Carry flag
(半位元組)互換 SWAP\x09SWAP
絕對轉移 \x09AJMP \x09Absolute JuMP
短轉移 \x09SJMP\x09Short JuMP
長轉移\x09 LJMP\x09Long JuMP
跳轉\x09 JMP\x09JuMP
累加器為零轉移\x09JZ\x09Jump if acc is Zero
累加器不為零轉移\x09JNZ\x09Jump if acc is Not Zero
進位位為1轉移\x09JC\x09Jump if Carry(if Cy=1)
進位位為0轉移\x09JNC\x09Jump if Not
Carry(if Cy=0)
指定為為1轉移\x09JB\x09Jump if Bit is set
指定位為0轉移\x09JNB\x09Jump if Not Bit (if bit=0)
指定位為1轉移並清該位JBC\x09Jump if Bit is set add Clear bit
比較不等轉移\x09CJNE\x09Compare and Jump if NotEqual
減1不為0轉移\x09DJNZ\x09Decrement and Jump if Not Zero
絕對調用\x09 ACALL\x09Absolute CALL
長調用\x09 LCALL\x09Long CALL
子程序返回\x09RET\x09RETurn
中斷返回\x09 RETI \x09RETurn from Interrupt
空操作\x09 NOP \x09No OPeration
㈧ 單片機中的匯編語言
這2條是「偽指令」,用於定義「變數」,類似於C語言中的(如果你熟悉C語言)變數聲明語句:
bit和data是保留字,其前面是「變數名」,其後面是該變數在內存RAM中的地址。
bit定義的是「位變數」(只有1個二進制位,是51中特有的,類似於C中的布爾型變數);
data定義的是「位元組變數」(類似於C中的char型變數)。
㈨ 單片機匯編語言
mov a,40h; A=50H
mov r0,a ;R0=50H
mov @r0,20h ;(50H)=30h
mov 50h,r0 ;(50H)=50H
mov a,@r0 ; A=50H
按照順序執行最後的結果是:
(20H)=30H,(30H)=40H,(40H)=30H,(50H)=50H ,A=50H。